1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --no-generate-body-for-unused-prefixes 2; RUN: llc -mtriple=riscv64 --relocation-model=pic < %s | FileCheck %s 3; RUN: llc -mtriple=riscv64 --relocation-model=static < %s | FileCheck %s 4 5@global_ext = external global i32 6@global_int = internal global i32 0 7declare void @func() 8 9define ptr @global_addr() #0 { 10; CHECK-LABEL: global_addr: 11; CHECK: # %bb.0: 12; CHECK-NEXT: .Lpcrel_hi0: 13; CHECK-NEXT: auipc a0, %got_pcrel_hi(global_ext) 14; CHECK-NEXT: ld a0, %pcrel_lo(.Lpcrel_hi0)(a0) 15; CHECK-NEXT: ret 16 ret ptr @global_ext 17} 18 19define i32 @global_load() #0 { 20; CHECK-LABEL: global_load: 21; CHECK: # %bb.0: 22; CHECK-NEXT: .Lpcrel_hi1: 23; CHECK-NEXT: auipc a0, %got_pcrel_hi(global_ext) 24; CHECK-NEXT: ld a0, %pcrel_lo(.Lpcrel_hi1)(a0) 25; CHECK-NEXT: lw a0, 0(a0) 26; CHECK-NEXT: ret 27 %load = load i32, ptr @global_ext 28 ret i32 %load 29} 30 31define void @global_store() #0 { 32; CHECK-LABEL: global_store: 33; CHECK: # %bb.0: 34; CHECK-NEXT: .Lpcrel_hi2: 35; CHECK-NEXT: auipc a0, %got_pcrel_hi(global_ext) 36; CHECK-NEXT: ld a0, %pcrel_lo(.Lpcrel_hi2)(a0) 37; CHECK-NEXT: sw zero, 0(a0) 38; CHECK-NEXT: ret 39 store i32 0, ptr @global_ext 40 ret void 41} 42 43define ptr @global_int_addr() #0 { 44; CHECK-LABEL: global_int_addr: 45; CHECK: # %bb.0: 46; CHECK-NEXT: .Lpcrel_hi3: 47; CHECK-NEXT: auipc a0, %got_pcrel_hi(global_int) 48; CHECK-NEXT: ld a0, %pcrel_lo(.Lpcrel_hi3)(a0) 49; CHECK-NEXT: ret 50 ret ptr @global_int 51} 52 53define i32 @global_int_load() #0 { 54; CHECK-LABEL: global_int_load: 55; CHECK: # %bb.0: 56; CHECK-NEXT: .Lpcrel_hi4: 57; CHECK-NEXT: auipc a0, %got_pcrel_hi(global_int) 58; CHECK-NEXT: ld a0, %pcrel_lo(.Lpcrel_hi4)(a0) 59; CHECK-NEXT: lw a0, 0(a0) 60; CHECK-NEXT: ret 61 %load = load i32, ptr @global_int 62 ret i32 %load 63} 64 65define void @global_int_store() #0 { 66; CHECK-LABEL: global_int_store: 67; CHECK: # %bb.0: 68; CHECK-NEXT: .Lpcrel_hi5: 69; CHECK-NEXT: auipc a0, %got_pcrel_hi(global_int) 70; CHECK-NEXT: ld a0, %pcrel_lo(.Lpcrel_hi5)(a0) 71; CHECK-NEXT: sw zero, 0(a0) 72; CHECK-NEXT: ret 73 store i32 0, ptr @global_int 74 ret void 75} 76 77define ptr @func_addr() #0 { 78; CHECK-LABEL: func_addr: 79; CHECK: # %bb.0: 80; CHECK-NEXT: .Lpcrel_hi6: 81; CHECK-NEXT: auipc a0, %got_pcrel_hi(func) 82; CHECK-NEXT: ld a0, %pcrel_lo(.Lpcrel_hi6)(a0) 83; CHECK-NEXT: ret 84 ret ptr @func 85} 86 87attributes #0 = { "target-features"="+tagged-globals" } 88