summaryrefslogtreecommitdiff
path: root/test/mono/repeatedint.sail
diff options
context:
space:
mode:
Diffstat (limited to 'test/mono/repeatedint.sail')
-rw-r--r--test/mono/repeatedint.sail22
1 files changed, 22 insertions, 0 deletions
diff --git a/test/mono/repeatedint.sail b/test/mono/repeatedint.sail
new file mode 100644
index 00000000..2d01e814
--- /dev/null
+++ b/test/mono/repeatedint.sail
@@ -0,0 +1,22 @@
+/* Silly, but it did appear in a model, and we didn't handle it... */
+
+default Order dec
+$include <prelude.sail>
+
+union ast = {
+ SomeInstr : {'size, 'size in {8,16}. (int('size), int('size))}
+}
+
+val test : ast -> bits(32)
+
+function test(SomeInstr(s as int('size),r)) = {
+ x : bits('size) = sail_zero_extend(0x80, s);
+ sail_sign_extend(x,32)
+}
+
+val run : unit -> unit effect {escape}
+
+function run () = {
+ assert(test(SomeInstr(8,8)) == 0xffffff80);
+ assert(test(SomeInstr(16,16)) == 0x00000080);
+}