From 2b65a0d3343364fc3d1ab6479960adac81ca3906 Mon Sep 17 00:00:00 2001 From: Jordan Carlin Date: Sun, 13 Oct 2024 03:23:21 -0700 Subject: [PATCH] Remove files upstreamed to Sail 0.18 These files are now part of the Sail standard library. --- model/hex_bits.sail | 124 -------------------------------- model/hex_bits_signed.sail | 141 ------------------------------------- model/mapping.sail | 136 ----------------------------------- model/prelude.sail | 6 +- 4 files changed, 3 insertions(+), 404 deletions(-) delete mode 100644 model/hex_bits.sail delete mode 100644 model/hex_bits_signed.sail delete mode 100644 model/mapping.sail diff --git a/model/hex_bits.sail b/model/hex_bits.sail deleted file mode 100644 index 81e25e155..000000000 --- a/model/hex_bits.sail +++ /dev/null @@ -1,124 +0,0 @@ -// Note: This file is temporarily copied here from the Sail compiler. It can -// be removed when Sail 0.18 is released. - -/*==========================================================================*/ -/* Sail */ -/* */ -/* Sail and the Sail architecture models here, comprising all files and */ -/* directories except the ASL-derived Sail code in the aarch64 directory, */ -/* are subject to the BSD two-clause licence below. */ -/* */ -/* The ASL derived parts of the ARMv8.3 specification in */ -/* aarch64/no_vector and aarch64/full are copyright ARM Ltd. */ -/* */ -/* Copyright (c) 2013-2021 */ -/* Kathyrn Gray */ -/* Shaked Flur */ -/* Stephen Kell */ -/* Gabriel Kerneis */ -/* Robert Norton-Wright */ -/* Christopher Pulte */ -/* Peter Sewell */ -/* Alasdair Armstrong */ -/* Brian Campbell */ -/* Thomas Bauereiss */ -/* Anthony Fox */ -/* Jon French */ -/* Dominic Mulligan */ -/* Stephen Kell */ -/* Mark Wassell */ -/* Alastair Reid (Arm Ltd) */ -/* */ -/* All rights reserved. */ -/* */ -/* This work was partially supported by EPSRC grant EP/K008528/1 REMS: Rigorous */ -/* Engineering for Mainstream Systems, an ARM iCASE award, EPSRC IAA */ -/* KTF funding, and donations from Arm. This project has received */ -/* funding from the European Research Council (ERC) under the European */ -/* Union’s Horizon 2020 research and innovation programme (grant */ -/* agreement No 789108, ELVER). */ -/* */ -/* This software was developed by SRI International and the University of */ -/* Cambridge Computer Laboratory (Department of Computer Science and */ -/* Technology) under DARPA/AFRL contracts FA8650-18-C-7809 ("CIFV") */ -/* and FA8750-10-C-0237 ("CTSRD"). */ -/* */ -/* Redistribution and use in source and binary forms, with or without */ -/* modification, are permitted provided that the following conditions */ -/* are met: */ -/* 1. Redistributions of source code must retain the above copyright */ -/* notice, this list of conditions and the following disclaimer. */ -/* 2. Redistributions in binary form must reproduce the above copyright */ -/* notice, this list of conditions and the following disclaimer in */ -/* the documentation and/or other materials provided with the */ -/* distribution. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' */ -/* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED */ -/* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A */ -/* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */ -/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF */ -/* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND */ -/* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */ -/* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */ -/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF */ -/* SUCH DAMAGE. */ -/*==========================================================================*/ - -$ifndef _HEX_BITS -$define _HEX_BITS - -$include -$include - -val "parse_hex_bits" : forall 'n, 'n > 0. (int('n), string) -> bits('n) -val "valid_hex_bits" : forall 'n, 'n > 0. (int('n), string) -> bool - -val hex_bits : forall 'n, 'n > 0. bits('n) <-> (int('n), string) - -function hex_bits_forwards(bv) = (length(bv), hex_str(unsigned(bv))) -function hex_bits_forwards_matches(bv) = true - -function hex_bits_backwards(n, str) = parse_hex_bits(n, str) -function hex_bits_backwards_matches(n, str) = valid_hex_bits(n, str) - -mapping hex_bits_1 : bits(1) <-> string = { hex_bits(1, s) <-> s } -mapping hex_bits_2 : bits(2) <-> string = { hex_bits(2, s) <-> s } -mapping hex_bits_3 : bits(3) <-> string = { hex_bits(3, s) <-> s } -mapping hex_bits_4 : bits(4) <-> string = { hex_bits(4, s) <-> s } -mapping hex_bits_5 : bits(5) <-> string = { hex_bits(5, s) <-> s } -mapping hex_bits_6 : bits(6) <-> string = { hex_bits(6, s) <-> s } -mapping hex_bits_7 : bits(7) <-> string = { hex_bits(7, s) <-> s } -mapping hex_bits_8 : bits(8) <-> string = { hex_bits(8, s) <-> s } -mapping hex_bits_9 : bits(9) <-> string = { hex_bits(9, s) <-> s } - -mapping hex_bits_10 : bits(10) <-> string = { hex_bits(10, s) <-> s } -mapping hex_bits_11 : bits(11) <-> string = { hex_bits(11, s) <-> s } -mapping hex_bits_12 : bits(12) <-> string = { hex_bits(12, s) <-> s } -mapping hex_bits_13 : bits(13) <-> string = { hex_bits(13, s) <-> s } -mapping hex_bits_14 : bits(14) <-> string = { hex_bits(14, s) <-> s } -mapping hex_bits_15 : bits(15) <-> string = { hex_bits(15, s) <-> s } -mapping hex_bits_16 : bits(16) <-> string = { hex_bits(16, s) <-> s } -mapping hex_bits_17 : bits(17) <-> string = { hex_bits(17, s) <-> s } -mapping hex_bits_18 : bits(18) <-> string = { hex_bits(18, s) <-> s } -mapping hex_bits_19 : bits(19) <-> string = { hex_bits(19, s) <-> s } - -mapping hex_bits_20 : bits(20) <-> string = { hex_bits(20, s) <-> s } -mapping hex_bits_21 : bits(21) <-> string = { hex_bits(21, s) <-> s } -mapping hex_bits_22 : bits(22) <-> string = { hex_bits(22, s) <-> s } -mapping hex_bits_23 : bits(23) <-> string = { hex_bits(23, s) <-> s } -mapping hex_bits_24 : bits(24) <-> string = { hex_bits(24, s) <-> s } -mapping hex_bits_25 : bits(25) <-> string = { hex_bits(25, s) <-> s } -mapping hex_bits_26 : bits(26) <-> string = { hex_bits(26, s) <-> s } -mapping hex_bits_27 : bits(27) <-> string = { hex_bits(27, s) <-> s } -mapping hex_bits_28 : bits(28) <-> string = { hex_bits(28, s) <-> s } -mapping hex_bits_29 : bits(29) <-> string = { hex_bits(29, s) <-> s } - -mapping hex_bits_30 : bits(30) <-> string = { hex_bits(30, s) <-> s } -mapping hex_bits_31 : bits(31) <-> string = { hex_bits(31, s) <-> s } -mapping hex_bits_32 : bits(32) <-> string = { hex_bits(32, s) <-> s } - -$endif _HEX_BITS diff --git a/model/hex_bits_signed.sail b/model/hex_bits_signed.sail deleted file mode 100644 index 15bbea809..000000000 --- a/model/hex_bits_signed.sail +++ /dev/null @@ -1,141 +0,0 @@ -/*==========================================================================*/ -/* Sail */ -/* */ -/* Sail and the Sail architecture models here, comprising all files and */ -/* directories except the ASL-derived Sail code in the aarch64 directory, */ -/* are subject to the BSD two-clause licence below. */ -/* */ -/* The ASL derived parts of the ARMv8.3 specification in */ -/* aarch64/no_vector and aarch64/full are copyright ARM Ltd. */ -/* */ -/* Copyright (c) 2013-2021 */ -/* Kathyrn Gray */ -/* Shaked Flur */ -/* Stephen Kell */ -/* Gabriel Kerneis */ -/* Robert Norton-Wright */ -/* Christopher Pulte */ -/* Peter Sewell */ -/* Alasdair Armstrong */ -/* Brian Campbell */ -/* Thomas Bauereiss */ -/* Anthony Fox */ -/* Jon French */ -/* Dominic Mulligan */ -/* Stephen Kell */ -/* Mark Wassell */ -/* Alastair Reid (Arm Ltd) */ -/* */ -/* All rights reserved. */ -/* */ -/* This work was partially supported by EPSRC grant EP/K008528/1 REMS: Rigorous */ -/* Engineering for Mainstream Systems, an ARM iCASE award, EPSRC IAA */ -/* KTF funding, and donations from Arm. This project has received */ -/* funding from the European Research Council (ERC) under the European */ -/* Union’s Horizon 2020 research and innovation programme (grant */ -/* agreement No 789108, ELVER). */ -/* */ -/* This software was developed by SRI International and the University of */ -/* Cambridge Computer Laboratory (Department of Computer Science and */ -/* Technology) under DARPA/AFRL contracts FA8650-18-C-7809 ("CIFV") */ -/* and FA8750-10-C-0237 ("CTSRD"). */ -/* */ -/* Redistribution and use in source and binary forms, with or without */ -/* modification, are permitted provided that the following conditions */ -/* are met: */ -/* 1. Redistributions of source code must retain the above copyright */ -/* notice, this list of conditions and the following disclaimer. */ -/* 2. Redistributions in binary form must reproduce the above copyright */ -/* notice, this list of conditions and the following disclaimer in */ -/* the documentation and/or other materials provided with the */ -/* distribution. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' */ -/* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED */ -/* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A */ -/* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */ -/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF */ -/* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND */ -/* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */ -/* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */ -/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF */ -/* SUCH DAMAGE. */ -/*==========================================================================*/ - -$ifndef _HEX_BITS_SIGNED -$define _HEX_BITS_SIGNED - -$include -$include - -val parse_hex_bits_signed : forall 'n, 'n > 0. (int('n), string) -> bits('n) -val valid_hex_bits_signed : forall 'n, 'n > 0. (int('n), string) -> bool - -val hex_bits_signed : forall 'n, 'n > 0. bits('n) <-> (int('n), string) - -function hex_bits_signed_forwards(bv) = { - if signed(bv) < 0 - then (length(bv), concat_str("-", hex_str(unsigned(not_vec(bv) + 1)))) - else (length(bv), hex_str(unsigned(bv))) -} -function hex_bits_signed_forwards_matches(bv) = true - -function parse_hex_bits_signed(n, str) = { - if string_take(str, 1) == "-" - then { - let str = string_drop(str, 1); - let bv = parse_hex_bits(n, str); - not_vec(bv) + 1 - } - else parse_hex_bits(n, str) -} - -function valid_hex_bits_signed(n, str) = { - if string_take(str, 1) == "-" - then valid_hex_bits(n, string_drop(str, 1)) - else valid_hex_bits(n, str) -} - -function hex_bits_signed_backwards(n, str) = parse_hex_bits_signed(n, str) -function hex_bits_signed_backwards_matches(n, str) = valid_hex_bits_signed(n, str) - -mapping hex_bits_signed_1 : bits(1) <-> string = { hex_bits_signed(1, s) <-> s } -mapping hex_bits_signed_2 : bits(2) <-> string = { hex_bits_signed(2, s) <-> s } -mapping hex_bits_signed_3 : bits(3) <-> string = { hex_bits_signed(3, s) <-> s } -mapping hex_bits_signed_4 : bits(4) <-> string = { hex_bits_signed(4, s) <-> s } -mapping hex_bits_signed_5 : bits(5) <-> string = { hex_bits_signed(5, s) <-> s } -mapping hex_bits_signed_6 : bits(6) <-> string = { hex_bits_signed(6, s) <-> s } -mapping hex_bits_signed_7 : bits(7) <-> string = { hex_bits_signed(7, s) <-> s } -mapping hex_bits_signed_8 : bits(8) <-> string = { hex_bits_signed(8, s) <-> s } -mapping hex_bits_signed_9 : bits(9) <-> string = { hex_bits_signed(9, s) <-> s } - -mapping hex_bits_signed_10 : bits(10) <-> string = { hex_bits_signed(10, s) <-> s } -mapping hex_bits_signed_11 : bits(11) <-> string = { hex_bits_signed(11, s) <-> s } -mapping hex_bits_signed_12 : bits(12) <-> string = { hex_bits_signed(12, s) <-> s } -mapping hex_bits_signed_13 : bits(13) <-> string = { hex_bits_signed(13, s) <-> s } -mapping hex_bits_signed_14 : bits(14) <-> string = { hex_bits_signed(14, s) <-> s } -mapping hex_bits_signed_15 : bits(15) <-> string = { hex_bits_signed(15, s) <-> s } -mapping hex_bits_signed_16 : bits(16) <-> string = { hex_bits_signed(16, s) <-> s } -mapping hex_bits_signed_17 : bits(17) <-> string = { hex_bits_signed(17, s) <-> s } -mapping hex_bits_signed_18 : bits(18) <-> string = { hex_bits_signed(18, s) <-> s } -mapping hex_bits_signed_19 : bits(19) <-> string = { hex_bits_signed(19, s) <-> s } - -mapping hex_bits_signed_20 : bits(20) <-> string = { hex_bits_signed(20, s) <-> s } -mapping hex_bits_signed_21 : bits(21) <-> string = { hex_bits_signed(21, s) <-> s } -mapping hex_bits_signed_22 : bits(22) <-> string = { hex_bits_signed(22, s) <-> s } -mapping hex_bits_signed_23 : bits(23) <-> string = { hex_bits_signed(23, s) <-> s } -mapping hex_bits_signed_24 : bits(24) <-> string = { hex_bits_signed(24, s) <-> s } -mapping hex_bits_signed_25 : bits(25) <-> string = { hex_bits_signed(25, s) <-> s } -mapping hex_bits_signed_26 : bits(26) <-> string = { hex_bits_signed(26, s) <-> s } -mapping hex_bits_signed_27 : bits(27) <-> string = { hex_bits_signed(27, s) <-> s } -mapping hex_bits_signed_28 : bits(28) <-> string = { hex_bits_signed(28, s) <-> s } -mapping hex_bits_signed_29 : bits(29) <-> string = { hex_bits_signed(29, s) <-> s } - -mapping hex_bits_signed_30 : bits(30) <-> string = { hex_bits_signed(30, s) <-> s } -mapping hex_bits_signed_31 : bits(31) <-> string = { hex_bits_signed(31, s) <-> s } -mapping hex_bits_signed_32 : bits(32) <-> string = { hex_bits_signed(32, s) <-> s } - -$endif _HEX_BITS_SIGNED diff --git a/model/mapping.sail b/model/mapping.sail deleted file mode 100644 index ec8b75979..000000000 --- a/model/mapping.sail +++ /dev/null @@ -1,136 +0,0 @@ -// Note: This file is temporarily copied here from the Sail compiler. It can -// be removed when Sail 0.18 is released. - -/*==========================================================================*/ -/* Sail */ -/* */ -/* Sail and the Sail architecture models here, comprising all files and */ -/* directories except the ASL-derived Sail code in the aarch64 directory, */ -/* are subject to the BSD two-clause licence below. */ -/* */ -/* The ASL derived parts of the ARMv8.3 specification in */ -/* aarch64/no_vector and aarch64/full are copyright ARM Ltd. */ -/* */ -/* Copyright (c) 2013-2021 */ -/* Kathyrn Gray */ -/* Shaked Flur */ -/* Stephen Kell */ -/* Gabriel Kerneis */ -/* Robert Norton-Wright */ -/* Christopher Pulte */ -/* Peter Sewell */ -/* Alasdair Armstrong */ -/* Brian Campbell */ -/* Thomas Bauereiss */ -/* Anthony Fox */ -/* Jon French */ -/* Dominic Mulligan */ -/* Stephen Kell */ -/* Mark Wassell */ -/* Alastair Reid (Arm Ltd) */ -/* */ -/* All rights reserved. */ -/* */ -/* This work was partially supported by EPSRC grant EP/K008528/1 REMS: Rigorous */ -/* Engineering for Mainstream Systems, an ARM iCASE award, EPSRC IAA */ -/* KTF funding, and donations from Arm. This project has received */ -/* funding from the European Research Council (ERC) under the European */ -/* Union’s Horizon 2020 research and innovation programme (grant */ -/* agreement No 789108, ELVER). */ -/* */ -/* This software was developed by SRI International and the University of */ -/* Cambridge Computer Laboratory (Department of Computer Science and */ -/* Technology) under DARPA/AFRL contracts FA8650-18-C-7809 ("CIFV") */ -/* and FA8750-10-C-0237 ("CTSRD"). */ -/* */ -/* Redistribution and use in source and binary forms, with or without */ -/* modification, are permitted provided that the following conditions */ -/* are met: */ -/* 1. Redistributions of source code must retain the above copyright */ -/* notice, this list of conditions and the following disclaimer. */ -/* 2. Redistributions in binary form must reproduce the above copyright */ -/* notice, this list of conditions and the following disclaimer in */ -/* the documentation and/or other materials provided with the */ -/* distribution. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' */ -/* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED */ -/* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A */ -/* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */ -/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF */ -/* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND */ -/* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */ -/* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */ -/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF */ -/* SUCH DAMAGE. */ -/*==========================================================================*/ - -$ifndef _MAPPING -$define _MAPPING - -$include -$include - -val string_take = pure "string_take" : (string, nat) -> string -val string_drop = pure "string_drop" : (string, nat) -> string -val string_length = pure "string_length" : string -> nat -val string_append = pure {coq: "String.append", c: "concat_str", _: "string_append"} : (string, string) -> string -val string_startswith = pure "string_startswith" : (string, string) -> bool - -val n_leading_spaces = pure { coq: "n_leading_spaces_Z" } : string -> nat -function n_leading_spaces s = - match s { - "" => 0, - _ => match string_take(s, 1) { - " " => 1 + n_leading_spaces(string_drop(s, 1)), - _ => 0 - } - } - -/*! -In a string mapping this is treated as `[ ]+`, i.e one or more space -characters. It is printed as a single space `" "`. -*/ -val spc : unit <-> string - -function spc_forwards() = " " -function spc_forwards_matches() = true - -function spc_backwards _ = () -function spc_backwards_matches s = { - let len = string_length(s); - n_leading_spaces(s) == len & len > 0 -} - -/*! -In a string mapping this is treated as `[ ]*`, i.e. zero or more space -characters. It is printed as the empty string. -*/ -val opt_spc : unit <-> string - -function opt_spc_forwards() = "" -function opt_spc_forwards_matches() = true - -function opt_spc_backwards _ = () -function opt_spc_backwards_matches s = n_leading_spaces(s) == string_length(s) - -/*! -Like `opt_spc`, in a string mapping this is treated as `[ ]*`, i.e. zero or more space -characters. It differs however in that it is printed as a single space `" "`. -*/ -val def_spc : unit <-> string - -function def_spc_forwards() = " " -function def_spc_forwards_matches() = true - -function def_spc_backwards _ = () -function def_spc_backwards_matches s = n_leading_spaces(s) == string_length(s) - -mapping sep : unit <-> string = { - () <-> opt_spc() ^ "," ^ def_spc() -} - -$endif diff --git a/model/prelude.sail b/model/prelude.sail index 67855c5e9..8c03c58da 100644 --- a/model/prelude.sail +++ b/model/prelude.sail @@ -12,11 +12,11 @@ $include $include $include $include -$include "mapping.sail" +$include $include $include -$include "hex_bits.sail" -$include "hex_bits_signed.sail" +$include +$include val not_bit : bit -> bit function not_bit(b) = if b == bitone then bitzero else bitone