Home | History | Annotate | Download | only in GlobalISel
      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