diff options
Diffstat (limited to 'test/CodeGen/X86/x86-64-mem.ll')
-rw-r--r-- | test/CodeGen/X86/x86-64-mem.ll | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/test/CodeGen/X86/x86-64-mem.ll b/test/CodeGen/X86/x86-64-mem.ll new file mode 100644 index 0000000..d15f516 --- /dev/null +++ b/test/CodeGen/X86/x86-64-mem.ll @@ -0,0 +1,36 @@ +; RUN: llc < %s -mtriple=x86_64-apple-darwin -o %t1 +; RUN: grep GOTPCREL %t1 | count 4 +; RUN: grep %%rip %t1 | count 6 +; RUN: grep movq %t1 | count 6 +; RUN: grep leaq %t1 | count 1 +; RUN: llc < %s -mtriple=x86_64-pc-linux -relocation-model=static -o %t2 +; RUN: grep movl %t2 | count 2 +; RUN: grep movq %t2 | count 2 + +@ptr = external global i32* ; <i32**> [#uses=1] +@src = external global [0 x i32] ; <[0 x i32]*> [#uses=1] +@dst = external global [0 x i32] ; <[0 x i32]*> [#uses=1] +@lptr = internal global i32* null ; <i32**> [#uses=1] +@ldst = internal global [500 x i32] zeroinitializer, align 32 ; <[500 x i32]*> [#uses=1] +@lsrc = internal global [500 x i32] zeroinitializer, align 32 ; <[500 x i32]*> [#uses=0] +@bsrc = internal global [500000 x i32] zeroinitializer, align 32 ; <[500000 x i32]*> [#uses=0] +@bdst = internal global [500000 x i32] zeroinitializer, align 32 ; <[500000 x i32]*> [#uses=0] + +define void @test1() nounwind { + %tmp = load i32* getelementptr ([0 x i32]* @src, i32 0, i32 0) ; <i32> [#uses=1] + store i32 %tmp, i32* getelementptr ([0 x i32]* @dst, i32 0, i32 0) + ret void +} + +define void @test2() nounwind { + store i32* getelementptr ([0 x i32]* @dst, i32 0, i32 0), i32** @ptr + ret void +} + +define void @test3() nounwind { + store i32* getelementptr ([500 x i32]* @ldst, i32 0, i32 0), i32** @lptr + br label %return + +return: ; preds = %0 + ret void +} |