diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-01-27 12:11:01 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-01-27 12:11:01 -0800 |
commit | c2374217f3d403eb52e14982951ecfd0ab535a13 (patch) | |
tree | 0f53eaaf16b46724611789bdd23af30e3cbe62ce | |
parent | 9a3729115db95b3bbcb47f2496c362e4a3489be0 (diff) |
add testcase for legalizer
-rw-r--r-- | tests/cases/legalizer_ta2.ll | 68 | ||||
-rw-r--r-- | tests/cases/legalizer_ta2.txt | 11 |
2 files changed, 79 insertions, 0 deletions
diff --git a/tests/cases/legalizer_ta2.ll b/tests/cases/legalizer_ta2.ll new file mode 100644 index 00000000..a87d6c2b --- /dev/null +++ b/tests/cases/legalizer_ta2.ll @@ -0,0 +1,68 @@ +; ModuleID = 'tests/hello_world.bc' +target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S128" +target triple = "i386-pc-linux-gnu" + +define i32 @main() { +entry: + %buffer = alloca i8, i32 1000, align 4 + %bundled = bitcast i8* %buffer to i104* + store i104 31079605376604435891501163880, i104* %bundled, align 4 ; hello world in there + call i32 (i8*)* @puts(i8* %buffer) + + %loaded = load i104* %bundled, align 4 ; save for later + + %backcast = bitcast i104* %bundled to i8* + call i32 (i8*)* @puts(i8* %backcast) + + %temp.buffer = bitcast i8* %buffer to [0 x i8]* + %buffer1 = getelementptr [0 x i8]* %temp.buffer, i32 0, i32 1 + %bundled1 = bitcast i8* %buffer1 to i104* + store i104 31079605376604435891501163880, i104* %bundled1, align 1 ; unaligned + call i32 (i8*)* @puts(i8* %buffer) + + ; shifts + %shifted = lshr i104 %loaded, 16 + store i104 %shifted, i104* %bundled, align 4 + call i32 (i8*)* @puts(i8* %buffer) + %shifted2 = lshr i104 %loaded, 32 + store i104 %shifted2, i104* %bundled, align 4 + call i32 (i8*)* @puts(i8* %buffer) + + ; store %loaded, make sure has not been modified + store i104 %loaded, i104* %bundled, align 4 + call i32 (i8*)* @puts(i8* %buffer) + + %shifted3 = shl i104 %loaded, 8 + store i104 %shifted3, i104* %bundled, align 4 + store i8 113, i8* %buffer ; remove initial 0 + call i32 (i8*)* @puts(i8* %buffer) + + ; trunc + store i104 0, i104* %bundled, align 4 ; wipe it out + %small32 = trunc i104 %loaded to i32 + %buffer32 = bitcast i8* %buffer to i32* + store i32 %small32, i32* %buffer32, align 4 + call i32 (i8*)* @puts(i8* %buffer) + + store i104 0, i104* %bundled, align 4 ; wipe it out + %small16 = trunc i104 %loaded to i16 + %buffer16 = bitcast i8* %buffer to i16* + store i16 %small16, i16* %buffer16, align 4 + call i32 (i8*)* @puts(i8* %buffer) + + store i104 0, i104* %bundled, align 4 ; wipe it out + %small48 = trunc i104 %loaded to i48 + %buffer48 = bitcast i8* %buffer to i48* + store i48 %small48, i48* %buffer48, align 4 + call i32 (i8*)* @puts(i8* %buffer) + + ; zext + %big = zext i32 6382179 to i104 + store i104 %big, i104* %bundled, align 4 + call i32 (i8*)* @puts(i8* %buffer) + + ret i32 1 +} + +declare i32 @puts(i8*) + diff --git a/tests/cases/legalizer_ta2.txt b/tests/cases/legalizer_ta2.txt new file mode 100644 index 00000000..26944bc2 --- /dev/null +++ b/tests/cases/legalizer_ta2.txt @@ -0,0 +1,11 @@ +hello, world +hello, world +hhello, world +llo, world +o, world +hello, world +qhello, world +hell +he +hello, +cba |