summary refs log tree commit diff
path: root/test/load2.ssa
diff options
context:
space:
mode:
Diffstat (limited to 'test/load2.ssa')
-rw-r--r--test/load2.ssa75
1 files changed, 75 insertions, 0 deletions
diff --git a/test/load2.ssa b/test/load2.ssa
new file mode 100644
index 0000000..05c12a6
--- /dev/null
+++ b/test/load2.ssa
@@ -0,0 +1,75 @@
+# blit & load elimination
+
+export
+function $f() {
+@start
+        %x =l alloc4 12
+        %y =l alloc4 12
+
+	%x1 =l add 1, %x
+	%x2 =l add 1, %x1
+	%x3 =l add 1, %x2
+	%x4 =l add 1, %x3
+	%x5 =l add 1, %x4
+	%x6 =l add 1, %x5
+	%x7 =l add 1, %x6
+	%x8 =l add 1, %x7
+	%x9 =l add 1, %x8
+	%xa =l add 1, %x9
+	%xb =l add 1, %xa
+
+	%y1 =l add 1, %y
+	%y4 =l add 4, %y
+	
+	storew 287454020, %x4   # 0x11223344
+	storew 1432778632, %y   # 0x55667788
+	blit %y, %x5, 1
+	%n =w load %x4
+	call $px(w %n)          # 0x11228844
+
+	storew 287454020, %x4   # 0x11223344
+	storew 1432778632, %y   # 0x55667788
+	blit %y, %x5, 2
+	%n =w load %x4
+	call $px(w %n)          # 0x11778844
+
+	storew 287454020, %x4   # 0x11223344
+	storew 1432778632, %y   # 0x55667788
+	blit %y, %x5, 4
+	%n =w load %x4
+	call $px(w %n)          # 0x66778844
+
+	storew 287454020, %x4   # 0x11223344
+	storew 1432778632, %y   # 0x55667788
+	blit %y, %x2, 4
+	%n =w load %x4
+	call $px(w %n)          # 0x11225566
+
+	storew 287454020, %x4   # 0x11223344
+	storew 0, %y
+	storew 1432778632, %y4  # 0x55667788
+	blit %y1, %x2, 7
+	%n =w load %x4
+	call $px(w %n)          # 0x66778800
+
+	ret
+}
+
+# >>> driver
+# #include <stdio.h>
+# void px(unsigned n) {
+# 	printf("0x%08x\n", n);
+# }
+# int main() {
+# 	extern void f(void);
+# 	f();
+# }
+# <<<
+
+# >>> output
+# 0x11228844
+# 0x11778844
+# 0x66778844
+# 0x11225566
+# 0x66778800
+# <<<