aboutsummaryrefslogtreecommitdiff
path: root/test/ifc.ssa
diff options
context:
space:
mode:
Diffstat (limited to 'test/ifc.ssa')
-rw-r--r--test/ifc.ssa238
1 files changed, 238 insertions, 0 deletions
diff --git a/test/ifc.ssa b/test/ifc.ssa
new file mode 100644
index 0000000..29f4457
--- /dev/null
+++ b/test/ifc.ssa
@@ -0,0 +1,238 @@
+export
+function l $ifc1(l %v0, l %v1, w %c) {
+@start
+ jnz %c, @true, @false
+@true
+ %v =l copy %v1
+ jmp @end
+@false
+ %v =l copy %v0
+ jmp @end
+@end
+ ret %v
+}
+
+export
+function l $ifc2(l %v0, l %v1, w %p) {
+@start
+ %c =w cnew %p, 42
+ jnz %c, @true, @false
+@true
+ %v =l copy %v1
+ jmp @end
+@false
+ %v =l copy %v0
+ jmp @end
+@end
+ ret %v
+}
+
+export
+function l $ifc3(l %v0, l %v1, w %p) {
+@start
+ %c =w cugtw %p, 42
+ jnz %c, @true, @false
+@true
+ %v =l copy %v1
+ jmp @end
+@false
+ %v =l copy %v0
+ jmp @end
+@end
+ ret %v
+}
+
+export
+function l $ifclts(s %s0, s %s1, l %v0, l %v1) {
+@start
+ %c =w clts %s0, %s1
+ jnz %c, @true, @false
+@true
+ %v =l copy %v1
+ jmp @end
+@false
+ %v =l copy %v0
+ jmp @end
+@end
+ ret %v
+}
+
+export
+function l $ifcles(s %s0, s %s1, l %v0, l %v1) {
+@start
+ %c =w cles %s0, %s1
+ jnz %c, @true, @false
+@true
+ %v =l copy %v1
+ jmp @end
+@false
+ %v =l copy %v0
+ jmp @end
+@end
+ ret %v
+}
+
+export
+function l $ifcgts(s %s0, s %s1, l %v0, l %v1) {
+@start
+ %c =w cgts %s0, %s1
+ jnz %c, @true, @false
+@true
+ %v =l copy %v1
+ jmp @end
+@false
+ %v =l copy %v0
+ jmp @end
+@end
+ ret %v
+}
+
+export
+function l $ifcges(s %s0, s %s1, l %v0, l %v1) {
+@start
+ %c =w cges %s0, %s1
+ jnz %c, @true, @false
+@true
+ %v =l copy %v1
+ jmp @end
+@false
+ %v =l copy %v0
+ jmp @end
+@end
+ ret %v
+}
+
+export
+function l $ifceqs(s %s0, s %s1, l %v0, l %v1) {
+@start
+ %c =w ceqs %s0, %s1
+ jnz %c, @true, @false
+@true
+ %v =l copy %v1
+ jmp @end
+@false
+ %v =l copy %v0
+ jmp @end
+@end
+ ret %v
+}
+
+export
+function l $ifcnes(s %s0, s %s1, l %v0, l %v1) {
+@start
+ %c =w cnes %s0, %s1
+ jnz %c, @true, @false
+@true
+ %v =l copy %v1
+ jmp @end
+@false
+ %v =l copy %v0
+ jmp @end
+@end
+ ret %v
+}
+
+export
+function l $ifcos(s %s0, s %s1, l %v0, l %v1) {
+@start
+ %c =w cos %s0, %s1
+ jnz %c, @true, @false
+@true
+ %v =l copy %v1
+ jmp @end
+@false
+ %v =l copy %v0
+ jmp @end
+@end
+ ret %v
+}
+
+export
+function l $ifcuos(s %s0, s %s1, l %v0, l %v1) {
+@start
+ %c =w cuos %s0, %s1
+ jnz %c, @true, @false
+@true
+ %v =l copy %v1
+ jmp @end
+@false
+ %v =l copy %v0
+ jmp @end
+@end
+ ret %v
+}
+
+# >>> driver
+# extern long ifc1(long, long, int);
+# extern long ifc2(long, long, int);
+# extern long ifc3(long, long, int);
+# extern long ifclts(float, float, long, long);
+# extern long ifcles(float, float, long, long);
+# extern long ifcgts(float, float, long, long);
+# extern long ifcges(float, float, long, long);
+# extern long ifceqs(float, float, long, long);
+# extern long ifcnes(float, float, long, long);
+# extern long ifcos(float, float, long, long);
+# extern long ifcuos(float, float, long, long);
+# int main() {
+# return
+# ifc1(7, 5, 0) != 7
+# || ifc1(7, 5, 1) != 5
+# || ifc1(7, 5, 33) != 5
+# || ifc2(7, 5, 42) != 7
+# || ifc2(7, 5, 41) != 5
+# || ifc2(7, 5, 43) != 5
+# || ifc3(7, 5, 42) != 7
+# || ifc3(7, 5, 41) != 7
+# || ifc3(7, 5, 43) != 5
+# || ifclts(5.0f, 6.0f, 7, 5) != 5
+# || ifclts(5.0f, 5.0f, 7, 5) != 7
+# || ifclts(5.0f, 4.0f, 7, 5) != 7
+# || ifclts(5.0f, 0.0f/0.0f, 7, 5) != 7
+# || ifclts(0.0f/0.0f, 5.0f, 7, 5) != 7
+# || ifclts(0.0f/0.0f, 0.0f/0.0f, 7, 5) != 7
+# || ifcles(5.0f, 6.0f, 7, 5) != 5
+# || ifcles(5.0f, 5.0f, 7, 5) != 5
+# || ifcles(5.0f, 4.0f, 7, 5) != 7
+# || ifcles(5.0f, 0.0f/0.0f, 7, 5) != 7
+# || ifcles(0.0f/0.0f, 5.0f, 7, 5) != 7
+# || ifcles(0.0f/0.0f, 0.0f/0.0f, 7, 5) != 7
+# || ifcgts(5.0f, 6.0f, 7, 5) != 7
+# || ifcgts(5.0f, 5.0f, 7, 5) != 7
+# || ifcgts(5.0f, 4.0f, 7, 5) != 5
+# || ifcgts(5.0f, 0.0f/0.0f, 7, 5) != 7
+# || ifcgts(0.0f/0.0f, 5.0f, 7, 5) != 7
+# || ifcgts(0.0f/0.0f, 0.0f/0.0f, 7, 5) != 7
+# || ifcges(5.0f, 6.0f, 7, 5) != 7
+# || ifcges(5.0f, 5.0f, 7, 5) != 5
+# || ifcges(5.0f, 4.0f, 7, 5) != 5
+# || ifcges(5.0f, 0.0f/0.0f, 7, 5) != 7
+# || ifcges(0.0f/0.0f, 5.0f, 7, 5) != 7
+# || ifcges(0.0f/0.0f, 0.0f/0.0f, 7, 5) != 7
+# || ifceqs(5.0f, 6.0f, 7, 5) != 7
+# || ifceqs(5.0f, 5.0f, 7, 5) != 5
+# || ifceqs(5.0f, 4.0f, 7, 5) != 7
+# || ifceqs(5.0f, 0.0f/0.0f, 7, 5) != 7
+# || ifceqs(0.0f/0.0f, 5.0f, 7, 5) != 7
+# || ifceqs(0.0f/0.0f, 0.0f/0.0f, 7, 5) != 7
+# || ifcnes(5.0f, 6.0f, 7, 5) != 5
+# || ifcnes(5.0f, 5.0f, 7, 5) != 7
+# || ifcnes(5.0f, 4.0f, 7, 5) != 5
+# || ifcnes(5.0f, 0.0f/0.0f, 7, 5) != 5
+# || ifcnes(0.0f/0.0f, 5.0f, 7, 5) != 5
+# || ifcnes(0.0f/0.0f, 0.0f/0.0f, 7, 5) != 5
+# || ifcos(5.0f, 6.0f, 7, 5) != 5
+# || ifcos(5.0f, 5.0f, 7, 5) != 5
+# || ifcos(5.0f, 4.0f, 7, 5) != 5
+# || ifcos(5.0f, 0.0f/0.0f, 7, 5) != 7
+# || ifcos(0.0f/0.0f, 5.0f, 7, 5) != 7
+# || ifcos(0.0f/0.0f, 0.0f/0.0f, 7, 5) != 7
+# || ifcuos(5.0f, 6.0f, 7, 5) != 7
+# || ifcuos(5.0f, 5.0f, 7, 5) != 7
+# || ifcuos(5.0f, 4.0f, 7, 5) != 7
+# || ifcuos(5.0f, 0.0f/0.0f, 7, 5) != 5
+# || ifcuos(0.0f/0.0f, 5.0f, 7, 5) != 5
+# || ifcuos(0.0f/0.0f, 0.0f/0.0f, 7, 5) != 5
+# ;
+# }
+# <<<