1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4 2; RUN: llc --relocation-model=static -code-model=small < %s | FileCheck %s 3; RUN: llc --relocation-model=static -code-model=medium < %s | FileCheck %s 4; RUN: llc --relocation-model=static -code-model=large < %s | FileCheck %s --check-prefix=LARGE 5 6target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 7target triple = "x86_64-unknown-linux-gnu" 8 9@global = external dso_local global i32 10declare dso_local void @func() 11 12define ptr @global_addr() #0 { 13; CHECK-LABEL: global_addr: 14; CHECK: # %bb.0: 15; CHECK-NEXT: movq global@GOTPCREL_NORELAX(%rip), %rax 16; CHECK-NEXT: retq 17; 18; LARGE-LABEL: global_addr: 19; LARGE: # %bb.0: 20; LARGE-NEXT: movabsq $global, %rax 21; LARGE-NEXT: retq 22 ret ptr @global 23} 24 25define i32 @global_load() #0 { 26; CHECK-LABEL: global_load: 27; CHECK: # %bb.0: 28; CHECK-NEXT: movq global@GOTPCREL_NORELAX(%rip), %rax 29; CHECK-NEXT: movl (%rax), %eax 30; CHECK-NEXT: retq 31; 32; LARGE-LABEL: global_load: 33; LARGE: # %bb.0: 34; LARGE-NEXT: movabsq $global, %rax 35; LARGE-NEXT: movl (%rax), %eax 36; LARGE-NEXT: retq 37 %load = load i32, ptr @global 38 ret i32 %load 39} 40 41define void @global_store() #0 { 42; CHECK-LABEL: global_store: 43; CHECK: # %bb.0: 44; CHECK-NEXT: movq global@GOTPCREL_NORELAX(%rip), %rax 45; CHECK-NEXT: movl $0, (%rax) 46; CHECK-NEXT: retq 47; 48; LARGE-LABEL: global_store: 49; LARGE: # %bb.0: 50; LARGE-NEXT: movabsq $global, %rax 51; LARGE-NEXT: movl $0, (%rax) 52; LARGE-NEXT: retq 53 store i32 0, ptr @global 54 ret void 55} 56 57define ptr @func_addr() #0 { 58; CHECK-LABEL: func_addr: 59; CHECK: # %bb.0: 60; CHECK-NEXT: movl $func, %eax 61; CHECK-NEXT: retq 62; 63; LARGE-LABEL: func_addr: 64; LARGE: # %bb.0: 65; LARGE-NEXT: movabsq $func, %rax 66; LARGE-NEXT: retq 67 ret ptr @func 68} 69 70attributes #0 = { "target-features"="+tagged-globals" } 71