• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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