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--- 23name : load_constant 24legalized: 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 31body: | 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--- 39name: load_global_uniform 40legalized: 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 47body: | 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--- 55name: load_global_non_uniform 56legalized: 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 65body: | 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--- 73name: non_power_of_2 74legalized: 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 80body: | 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