1 # RUN: llc -march=amdgcn -mcpu=hawaii -run-pass=regbankselect %s -verify-machineinstrs -o - | FileCheck %s 2 3 # REQUIRES: global-isel 4 5 --- | 6 define amdgpu_kernel void @load_constant(i32 addrspace(4)* %ptr0) { ret void } 7 define amdgpu_kernel void @load_global_uniform(i32 addrspace(1)* %ptr1) { 8 %tmp0 = load i32, i32 addrspace(1)* %ptr1 9 ret void 10 } 11 define amdgpu_kernel void @load_global_non_uniform(i32 addrspace(1)* %ptr2) { 12 %tmp0 = call i32 @llvm.amdgcn.workitem.id.x() #0 13 %tmp1 = getelementptr i32, i32 addrspace(1)* %ptr2, i32 %tmp0 14 %tmp2 = load i32, i32 addrspace(1)* %tmp1 15 ret void 16 } 17 define void @non_power_of_2() { ret void } 18 declare i32 @llvm.amdgcn.workitem.id.x() #0 19 attributes #0 = { nounwind readnone } 20 ... 21 22 --- 23 name : load_constant 24 legalized: true 25 26 # CHECK-LABEL: name: load_constant 27 # CHECK: registers: 28 # CHECK: - { id: 0, class: sgpr, preferred-register: '' } 29 # CHECK: - { id: 1, class: sgpr, preferred-register: '' } 30 31 body: | 32 bb.0: 33 liveins: $sgpr0_sgpr1 34 %0:_(p4) = COPY $sgpr0_sgpr1 35 %1:_(s32) = G_LOAD %0 :: (load 4 from %ir.ptr0) 36 ... 37 38 --- 39 name: load_global_uniform 40 legalized: true 41 42 # CHECK-LABEL: name: load_global_uniform 43 # CHECK: registers: 44 # CHECK: - { id: 0, class: sgpr, preferred-register: '' } 45 # CHECK: - { id: 1, class: sgpr, preferred-register: '' } 46 47 body: | 48 bb.0: 49 liveins: $sgpr0_sgpr1 50 %0:_(p1) = COPY $sgpr0_sgpr1 51 %1:_(s32) = G_LOAD %0 :: (load 4 from %ir.ptr1) 52 ... 53 54 --- 55 name: load_global_non_uniform 56 legalized: true 57 58 # CHECK-LABEL: name: load_global_non_uniform 59 # CHECK: registers: 60 # CHECK: - { id: 0, class: sgpr, preferred-register: '' } 61 # CHECK: - { id: 1, class: vgpr, preferred-register: '' } 62 # CHECK: - { id: 2, class: vgpr, preferred-register: '' } 63 64 65 body: | 66 bb.0: 67 liveins: $sgpr0_sgpr1 68 %0:_(p1) = COPY $sgpr0_sgpr1 69 %1:_(s32) = G_LOAD %0 :: (load 4 from %ir.tmp1) 70 ... 71 72 --- 73 name: non_power_of_2 74 legalized: true 75 76 # CHECK-LABEL: name: non_power_of_2 77 # CHECK: [[S448:%[0-9]+]]:sgpr(s448) = G_IMPLICIT_DEF 78 # CHECK: sgpr(s32) = G_EXTRACT [[S448]](s448), 0 79 80 body: | 81 bb.0: 82 %0:_(s448) = G_IMPLICIT_DEF 83 %1:_(s32) = G_EXTRACT %0:_(s448), 0 84 $sgpr0 = COPY %1:_(s32) 85 SI_RETURN_TO_EPILOG $sgpr0 86 ... 87