about summary refs log tree commit diff homepage
path: root/test/Concrete/Casts.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/Concrete/Casts.ll')
-rwxr-xr-xtest/Concrete/Casts.ll28
1 files changed, 28 insertions, 0 deletions
diff --git a/test/Concrete/Casts.ll b/test/Concrete/Casts.ll
new file mode 100755
index 00000000..1329a127
--- /dev/null
+++ b/test/Concrete/Casts.ll
@@ -0,0 +1,28 @@
+declare void @print_i32(i32)
+
+define i32 @main() {
+entry:
+	%a = add i32 315904, 128
+	%b = trunc i32 %a to i8
+	%c0 = icmp eq i8 %b, 128
+	%d = zext i8 %b to i32
+	%c1 = icmp eq i32 %d, 128
+	%e = sext i8 %b to i32
+	%c2 = icmp eq i32 %e, -128
+	%c0i = zext i1 %c0 to i32
+	%c1i = zext i1 %c1 to i32
+	%c2i = zext i1 %c2 to i32
+	%c0is = shl i32 %c0i, 0
+	%c1is = shl i32 %c1i, 1
+	%c2is = shl i32 %c2i, 2
+	%tmp = add i32 %c0is, %c1is
+	%res = add i32 %tmp, %c2is
+	%p = icmp eq i32 %res, 7
+	br i1 %p, label %exitTrue, label %exitFalse
+exitTrue:
+	call void @print_i32(i32 1)
+	ret i32 0
+exitFalse:
+	call void @print_i32(i32 0)
+	ret i32 0
+}