summary refs log tree commit diff
path: root/test/mem1.ssa
diff options
context:
space:
mode:
Diffstat (limited to 'test/mem1.ssa')
-rw-r--r--test/mem1.ssa35
1 files changed, 35 insertions, 0 deletions
diff --git a/test/mem1.ssa b/test/mem1.ssa
new file mode 100644
index 0000000..b7045a6
--- /dev/null
+++ b/test/mem1.ssa
@@ -0,0 +1,35 @@
+type :i3 = { w 3 } 
+
+export
+function :i3 $blit() {
+@start
+	%l0 =l alloc4 12
+	%l1 =l alloc4 12
+
+	storew 287454020, %l0
+	%l04 =l add %l0, 4
+	storew 1432778632, %l04
+	%l08 =l add %l0, 8
+	storew 2578103244, %l08
+
+	# we expect that %l0 and %l1
+	# are coalesced and the blit
+	# goes backwards
+	%l11 =l add %l1, 1
+	blit %l0, %l11, 11
+
+	storeb 221, %l1
+
+	ret %l1
+}
+
+# >>> driver
+# struct i3 { int a, b, c; };
+# extern struct i3 blit();
+# int main() {
+# 	struct i3 s = blit();
+# 	return !(s.a == 0x223344dd
+# 	      && s.b == 0x66778811
+# 	      && s.c == 0xaabbcc55);
+# }
+# <<<