about summary refs log tree commit diff homepage
path: root/test/Concrete/ICmp.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/Concrete/ICmp.ll')
-rw-r--r--test/Concrete/ICmp.ll245
1 files changed, 245 insertions, 0 deletions
diff --git a/test/Concrete/ICmp.ll b/test/Concrete/ICmp.ll
new file mode 100644
index 00000000..e2a1ef24
--- /dev/null
+++ b/test/Concrete/ICmp.ll
@@ -0,0 +1,245 @@
+declare void @print_i32(i32)
+
+define i1 @checkSlt() {
+	%c0 = icmp slt i8 -1, 1		; 1
+	%c1 = icmp slt i8 0, 1		; 1
+	%c2 = icmp slt i8 1, 1		; 0
+	%c3 = icmp slt i8 1, -1		; 0
+	%c4 = icmp slt i8 1, 0		; 0
+	%c5 = icmp slt i8 1, 1		; 0
+	%a0 = select i1 %c0, i8 1, i8 0
+	%a1 = select i1 %c1, i8 2, i8 0
+	%a2 = select i1 %c2, i8 4, i8 0
+	%a3 = select i1 %c3, i8 8, i8 0
+	%a4 = select i1 %c4, i8 16, i8 0
+	%a5 = select i1 %c5, i8 32, i8 0
+	%sum0 = add i8 %a0, %a1
+	%sum1 = add i8 %sum0, %a2
+	%sum2 = add i8 %sum1, %a3
+	%sum3 = add i8 %sum2, %a4
+	%sum = add i8 %sum3, %a5
+	%test = icmp eq i8 %sum, 3	; 0bin000011
+	ret i1 %test
+}
+
+define i1 @checkSle() {
+	%c0 = icmp sle i8 -1, 1		; 1
+	%c1 = icmp sle i8 0, 1		; 1
+	%c2 = icmp sle i8 1, 1		; 1
+	%c3 = icmp sle i8 1, -1		; 0
+	%c4 = icmp sle i8 1, 0		; 0
+	%c5 = icmp sle i8 1, 1		; 1
+	%a0 = select i1 %c0, i8 1, i8 0
+	%a1 = select i1 %c1, i8 2, i8 0
+	%a2 = select i1 %c2, i8 4, i8 0
+	%a3 = select i1 %c3, i8 8, i8 0
+	%a4 = select i1 %c4, i8 16, i8 0
+	%a5 = select i1 %c5, i8 32, i8 0
+	%sum0 = add i8 %a0, %a1
+	%sum1 = add i8 %sum0, %a2
+	%sum2 = add i8 %sum1, %a3
+	%sum3 = add i8 %sum2, %a4
+	%sum = add i8 %sum3, %a5
+	%test = icmp eq i8 %sum, 39	; 0bin100111
+	ret i1 %test
+}
+
+define i1 @checkSgt() {
+	%c0 = icmp sgt i8 -1, 1		; 0
+	%c1 = icmp sgt i8 0, 1		; 0
+	%c2 = icmp sgt i8 1, 1		; 0
+	%c3 = icmp sgt i8 1, -1		; 1
+	%c4 = icmp sgt i8 1, 0		; 1
+	%c5 = icmp sgt i8 1, 1		; 0
+	%a0 = select i1 %c0, i8 1, i8 0
+	%a1 = select i1 %c1, i8 2, i8 0
+	%a2 = select i1 %c2, i8 4, i8 0
+	%a3 = select i1 %c3, i8 8, i8 0
+	%a4 = select i1 %c4, i8 16, i8 0
+	%a5 = select i1 %c5, i8 32, i8 0
+	%sum0 = add i8 %a0, %a1
+	%sum1 = add i8 %sum0, %a2
+	%sum2 = add i8 %sum1, %a3
+	%sum3 = add i8 %sum2, %a4
+	%sum = add i8 %sum3, %a5
+	%test = icmp eq i8 %sum, 24	; 0bin011000
+	ret i1 %test
+}
+
+define i1 @checkSge() {
+	%c0 = icmp sge i8 -1, 1		; 0
+	%c1 = icmp sge i8 0, 1		; 0
+	%c2 = icmp sge i8 1, 1		; 1
+	%c3 = icmp sge i8 1, -1		; 1
+	%c4 = icmp sge i8 1, 0		; 1
+	%c5 = icmp sge i8 1, 1		; 1
+	%a0 = select i1 %c0, i8 1, i8 0
+	%a1 = select i1 %c1, i8 2, i8 0
+	%a2 = select i1 %c2, i8 4, i8 0
+	%a3 = select i1 %c3, i8 8, i8 0
+	%a4 = select i1 %c4, i8 16, i8 0
+	%a5 = select i1 %c5, i8 32, i8 0
+	%sum0 = add i8 %a0, %a1
+	%sum1 = add i8 %sum0, %a2
+	%sum2 = add i8 %sum1, %a3
+	%sum3 = add i8 %sum2, %a4
+	%sum = add i8 %sum3, %a5
+	%test = icmp eq i8 %sum, 60	; 0bin111100
+	ret i1 %test
+}
+
+define i1 @checkUlt() {
+	%c0 = icmp ult i8 -1, 1		; 0
+	%c1 = icmp ult i8 0, 1		; 1
+	%c2 = icmp ult i8 1, 1		; 0
+	%c3 = icmp ult i8 1, -1		; 1
+	%c4 = icmp ult i8 1, 0		; 0
+	%c5 = icmp ult i8 1, 1		; 0
+	%a0 = select i1 %c0, i8 1, i8 0
+	%a1 = select i1 %c1, i8 2, i8 0
+	%a2 = select i1 %c2, i8 4, i8 0
+	%a3 = select i1 %c3, i8 8, i8 0
+	%a4 = select i1 %c4, i8 16, i8 0
+	%a5 = select i1 %c5, i8 32, i8 0
+	%sum0 = add i8 %a0, %a1
+	%sum1 = add i8 %sum0, %a2
+	%sum2 = add i8 %sum1, %a3
+	%sum3 = add i8 %sum2, %a4
+	%sum = add i8 %sum3, %a5
+	%test = icmp eq i8 %sum, 10	; 0bin001010
+	ret i1 %test
+}
+
+define i1 @checkUle() {
+	%c0 = icmp ule i8 -1, 1		; 0
+	%c1 = icmp ule i8 0, 1		; 1
+	%c2 = icmp ule i8 1, 1		; 1
+	%c3 = icmp ule i8 1, -1		; 1
+	%c4 = icmp ule i8 1, 0		; 0
+	%c5 = icmp ule i8 1, 1		; 1
+	%a0 = select i1 %c0, i8 1, i8 0
+	%a1 = select i1 %c1, i8 2, i8 0
+	%a2 = select i1 %c2, i8 4, i8 0
+	%a3 = select i1 %c3, i8 8, i8 0
+	%a4 = select i1 %c4, i8 16, i8 0
+	%a5 = select i1 %c5, i8 32, i8 0
+	%sum0 = add i8 %a0, %a1
+	%sum1 = add i8 %sum0, %a2
+	%sum2 = add i8 %sum1, %a3
+	%sum3 = add i8 %sum2, %a4
+	%sum = add i8 %sum3, %a5
+	%test = icmp eq i8 %sum, 46	; 0bin101110
+	ret i1 %test
+}
+
+define i1 @checkUgt() {
+	%c0 = icmp ugt i8 -1, 1		; 1
+	%c1 = icmp ugt i8 0, 1		; 0
+	%c2 = icmp ugt i8 1, 1		; 0
+	%c3 = icmp ugt i8 1, -1		; 0
+	%c4 = icmp ugt i8 1, 0		; 1
+	%c5 = icmp ugt i8 1, 1		; 0
+	%a0 = select i1 %c0, i8 1, i8 0
+	%a1 = select i1 %c1, i8 2, i8 0
+	%a2 = select i1 %c2, i8 4, i8 0
+	%a3 = select i1 %c3, i8 8, i8 0
+	%a4 = select i1 %c4, i8 16, i8 0
+	%a5 = select i1 %c5, i8 32, i8 0
+	%sum0 = add i8 %a0, %a1
+	%sum1 = add i8 %sum0, %a2
+	%sum2 = add i8 %sum1, %a3
+	%sum3 = add i8 %sum2, %a4
+	%sum = add i8 %sum3, %a5
+	%test = icmp eq i8 %sum, 17	; 0bin010001
+	ret i1 %test
+}
+
+define i1 @checkUge() {
+	%c0 = icmp uge i8 -1, 1		; 1
+	%c1 = icmp uge i8 0, 1		; 0
+	%c2 = icmp uge i8 1, 1		; 1
+	%c3 = icmp uge i8 1, -1		; 0
+	%c4 = icmp uge i8 1, 0		; 1
+	%c5 = icmp uge i8 1, 1		; 1
+	%a0 = select i1 %c0, i8 1, i8 0
+	%a1 = select i1 %c1, i8 2, i8 0
+	%a2 = select i1 %c2, i8 4, i8 0
+	%a3 = select i1 %c3, i8 8, i8 0
+	%a4 = select i1 %c4, i8 16, i8 0
+	%a5 = select i1 %c5, i8 32, i8 0
+	%sum0 = add i8 %a0, %a1
+	%sum1 = add i8 %sum0, %a2
+	%sum2 = add i8 %sum1, %a3
+	%sum3 = add i8 %sum2, %a4
+	%sum = add i8 %sum3, %a5
+	%test = icmp eq i8 %sum, 53	; 0bin110101
+	ret i1 %test
+}
+
+define i1 @checkEq() {
+	%c0 = icmp eq i8 -1, 1		; 0
+	%c1 = icmp eq i8 1, 1		; 1
+	%c2 = icmp eq i8 1, -1		; 0
+	%a0 = select i1 %c0, i8 1, i8 0
+	%a1 = select i1 %c1, i8 2, i8 0
+	%a2 = select i1 %c2, i8 4, i8 0
+	%sum0 = add i8 %a0, %a1
+	%sum = add i8 %sum0, %a2
+	%test = icmp eq i8 %sum, 2
+	ret i1 %test
+}
+
+define i1 @checkNe() {
+	%c0 = icmp ne i8 -1, 1		; 1
+	%c1 = icmp ne i8 1, 1		; 0
+	%c2 = icmp ne i8 1, -1		; 1
+	%a0 = select i1 %c0, i8 1, i8 0
+	%a1 = select i1 %c1, i8 2, i8 0
+	%a2 = select i1 %c2, i8 4, i8 0
+	%sum0 = add i8 %a0, %a1
+	%sum = add i8 %sum0, %a2
+	%test = icmp eq i8 %sum, 5
+	ret i1 %test
+}
+
+define i32 @main() {
+	%c0 = call i1 @checkSlt ()
+	%c1 = call i1 @checkSle ()
+	%c2 = call i1 @checkSgt ()
+	%c3 = call i1 @checkSge ()
+	%c4 = call i1 @checkUlt ()
+	%c5 = call i1 @checkUle ()
+	%c6 = call i1 @checkUgt ()
+	%c7 = call i1 @checkUge ()
+	%c8 = call i1 @checkEq ()
+	%c9 = call i1 @checkNe ()
+	%a0 = select i1 %c0, i16 1, i16 0
+	%a1 = select i1 %c1, i16 2, i16 0
+	%a2 = select i1 %c2, i16 4, i16 0
+	%a3 = select i1 %c3, i16 8, i16 0
+	%a4 = select i1 %c4, i16 16, i16 0
+	%a5 = select i1 %c5, i16 32, i16 0
+	%a6 = select i1 %c6, i16 64, i16 0
+	%a7 = select i1 %c7, i16 128, i16 0
+	%a8 = select i1 %c8, i16 256, i16 0
+	%a9 = select i1 %c9, i16 512, i16 0
+	%sum0 = add i16 %a0, %a1
+	%sum1 = add i16 %sum0, %a2
+	%sum2 = add i16 %sum1, %a3
+	%sum3 = add i16 %sum2, %a4
+	%sum4 = add i16 %sum3, %a5
+	%sum5 = add i16 %sum4, %a6
+	%sum6 = add i16 %sum5, %a7
+	%sum7 = add i16 %sum6, %a8
+	%sum8 = add i16 %sum7, %a9
+	%t = shl i16 63, 10
+	%sum = add i16 %sum8, %t
+	%test = icmp eq i16 %sum, -1
+	br i1 %test, label %exitTrue, label %exitFalse
+exitTrue:
+	call void @print_i32(i32 1)
+	ret i32 0
+exitFalse:
+	call void @print_i32(i32 0)
+	ret i32 0
+}