70 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-apple-darwin | FileCheck %s --check-prefix=DARWIN3; RUN: llc < %s -mtriple=x86_64-pc-linux -relocation-model=static | FileCheck %s --check-prefix=LINUX4 5@ptr = external global ptr ; <ptr> [#uses=1]6@src = external global [0 x i32] ; <ptr> [#uses=1]7@dst = external global [0 x i32] ; <ptr> [#uses=1]8@lptr = internal global ptr null ; <ptr> [#uses=1]9@ldst = internal global [500 x i32] zeroinitializer, align 32 ; <ptr> [#uses=1]10@lsrc = internal global [500 x i32] zeroinitializer, align 32 ; <ptr> [#uses=0]11@bsrc = internal global [500000 x i32] zeroinitializer, align 32 ; <ptr> [#uses=0]12@bdst = internal global [500000 x i32] zeroinitializer, align 32 ; <ptr> [#uses=0]13 14define void @test1() nounwind {15; DARWIN-LABEL: test1:16; DARWIN: ## %bb.0:17; DARWIN-NEXT: movq _src@GOTPCREL(%rip), %rax18; DARWIN-NEXT: movl (%rax), %eax19; DARWIN-NEXT: movq _dst@GOTPCREL(%rip), %rcx20; DARWIN-NEXT: movl %eax, (%rcx)21; DARWIN-NEXT: retq22;23; LINUX-LABEL: test1:24; LINUX: # %bb.0:25; LINUX-NEXT: movq src@GOTPCREL(%rip), %rax26; LINUX-NEXT: movl (%rax), %eax27; LINUX-NEXT: movq dst@GOTPCREL(%rip), %rcx28; LINUX-NEXT: movl %eax, (%rcx)29; LINUX-NEXT: retq30 %tmp = load i32, ptr @src ; <i32> [#uses=1]31 store i32 %tmp, ptr @dst32 ret void33}34 35define void @test2() nounwind {36; DARWIN-LABEL: test2:37; DARWIN: ## %bb.0:38; DARWIN-NEXT: movq _dst@GOTPCREL(%rip), %rax39; DARWIN-NEXT: movq _ptr@GOTPCREL(%rip), %rcx40; DARWIN-NEXT: movq %rax, (%rcx)41; DARWIN-NEXT: retq42;43; LINUX-LABEL: test2:44; LINUX: # %bb.0:45; LINUX-NEXT: movq dst@GOTPCREL(%rip), %rax46; LINUX-NEXT: movq ptr@GOTPCREL(%rip), %rcx47; LINUX-NEXT: movq %rax, (%rcx)48; LINUX-NEXT: retq49 store ptr @dst, ptr @ptr50 ret void51}52 53define void @test3() nounwind {54; DARWIN-LABEL: test3:55; DARWIN: ## %bb.0:56; DARWIN-NEXT: leaq _ldst(%rip), %rax57; DARWIN-NEXT: movq %rax, _lptr(%rip)58; DARWIN-NEXT: retq59;60; LINUX-LABEL: test3:61; LINUX: # %bb.0:62; LINUX-NEXT: movq $ldst, lptr(%rip)63; LINUX-NEXT: retq64 store ptr @ldst, ptr @lptr65 br label %return66 67return: ; preds = %068 ret void69}70