Home | History | Annotate | Download | only in AMDGPU
      1 ;RUN: llc < %s -march=amdgcn -mcpu=verde -verify-machineinstrs | FileCheck %s
      2 ;RUN: llc < %s -march=amdgcn -mcpu=tonga -verify-machineinstrs | FileCheck %s
      3 
      4 ;CHECK-LABEL: {{^}}sample:
      5 ;CHECK: s_wqm
      6 ;CHECK: image_sample_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
      7 define void @sample() #0 {
      8 main_body:
      9   %r = call <4 x float> @llvm.SI.image.sample.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
     10   %r0 = extractelement <4 x float> %r, i32 0
     11   %r1 = extractelement <4 x float> %r, i32 1
     12   %r2 = extractelement <4 x float> %r, i32 2
     13   %r3 = extractelement <4 x float> %r, i32 3
     14   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
     15   ret void
     16 }
     17 
     18 ;CHECK-LABEL: {{^}}sample_cl:
     19 ;CHECK: s_wqm
     20 ;CHECK: image_sample_cl_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
     21 define void @sample_cl() #0 {
     22 main_body:
     23   %r = call <4 x float> @llvm.SI.image.sample.cl.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
     24   %r0 = extractelement <4 x float> %r, i32 0
     25   %r1 = extractelement <4 x float> %r, i32 1
     26   %r2 = extractelement <4 x float> %r, i32 2
     27   %r3 = extractelement <4 x float> %r, i32 3
     28   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
     29   ret void
     30 }
     31 
     32 ;CHECK-LABEL: {{^}}sample_d:
     33 ;CHECK-NOT: s_wqm
     34 ;CHECK: image_sample_d_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
     35 define void @sample_d() #0 {
     36 main_body:
     37   %r = call <4 x float> @llvm.SI.image.sample.d.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
     38   %r0 = extractelement <4 x float> %r, i32 0
     39   %r1 = extractelement <4 x float> %r, i32 1
     40   %r2 = extractelement <4 x float> %r, i32 2
     41   %r3 = extractelement <4 x float> %r, i32 3
     42   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
     43   ret void
     44 }
     45 
     46 ;CHECK-LABEL: {{^}}sample_d_cl:
     47 ;CHECK-NOT: s_wqm
     48 ;CHECK: image_sample_d_cl_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
     49 define void @sample_d_cl() #0 {
     50 main_body:
     51   %r = call <4 x float> @llvm.SI.image.sample.d.cl.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
     52   %r0 = extractelement <4 x float> %r, i32 0
     53   %r1 = extractelement <4 x float> %r, i32 1
     54   %r2 = extractelement <4 x float> %r, i32 2
     55   %r3 = extractelement <4 x float> %r, i32 3
     56   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
     57   ret void
     58 }
     59 
     60 ;CHECK-LABEL: {{^}}sample_l:
     61 ;CHECK-NOT: s_wqm
     62 ;CHECK: image_sample_l_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
     63 define void @sample_l() #0 {
     64 main_body:
     65   %r = call <4 x float> @llvm.SI.image.sample.l.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
     66   %r0 = extractelement <4 x float> %r, i32 0
     67   %r1 = extractelement <4 x float> %r, i32 1
     68   %r2 = extractelement <4 x float> %r, i32 2
     69   %r3 = extractelement <4 x float> %r, i32 3
     70   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
     71   ret void
     72 }
     73 
     74 ;CHECK-LABEL: {{^}}sample_b:
     75 ;CHECK: s_wqm
     76 ;CHECK: image_sample_b_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
     77 define void @sample_b() #0 {
     78 main_body:
     79   %r = call <4 x float> @llvm.SI.image.sample.b.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
     80   %r0 = extractelement <4 x float> %r, i32 0
     81   %r1 = extractelement <4 x float> %r, i32 1
     82   %r2 = extractelement <4 x float> %r, i32 2
     83   %r3 = extractelement <4 x float> %r, i32 3
     84   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
     85   ret void
     86 }
     87 
     88 ;CHECK-LABEL: {{^}}sample_b_cl:
     89 ;CHECK: s_wqm
     90 ;CHECK: image_sample_b_cl_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
     91 define void @sample_b_cl() #0 {
     92 main_body:
     93   %r = call <4 x float> @llvm.SI.image.sample.b.cl.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
     94   %r0 = extractelement <4 x float> %r, i32 0
     95   %r1 = extractelement <4 x float> %r, i32 1
     96   %r2 = extractelement <4 x float> %r, i32 2
     97   %r3 = extractelement <4 x float> %r, i32 3
     98   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
     99   ret void
    100 }
    101 
    102 ;CHECK-LABEL: {{^}}sample_lz:
    103 ;CHECK-NOT: s_wqm
    104 ;CHECK: image_sample_lz_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
    105 define void @sample_lz() #0 {
    106 main_body:
    107   %r = call <4 x float> @llvm.SI.image.sample.lz.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
    108   %r0 = extractelement <4 x float> %r, i32 0
    109   %r1 = extractelement <4 x float> %r, i32 1
    110   %r2 = extractelement <4 x float> %r, i32 2
    111   %r3 = extractelement <4 x float> %r, i32 3
    112   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
    113   ret void
    114 }
    115 
    116 ;CHECK-LABEL: {{^}}sample_cd:
    117 ;CHECK-NOT: s_wqm
    118 ;CHECK: image_sample_cd_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
    119 define void @sample_cd() #0 {
    120 main_body:
    121   %r = call <4 x float> @llvm.SI.image.sample.cd.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
    122   %r0 = extractelement <4 x float> %r, i32 0
    123   %r1 = extractelement <4 x float> %r, i32 1
    124   %r2 = extractelement <4 x float> %r, i32 2
    125   %r3 = extractelement <4 x float> %r, i32 3
    126   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
    127   ret void
    128 }
    129 
    130 ;CHECK-LABEL: {{^}}sample_cd_cl:
    131 ;CHECK-NOT: s_wqm
    132 ;CHECK: image_sample_cd_cl_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
    133 define void @sample_cd_cl() #0 {
    134 main_body:
    135   %r = call <4 x float> @llvm.SI.image.sample.cd.cl.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
    136   %r0 = extractelement <4 x float> %r, i32 0
    137   %r1 = extractelement <4 x float> %r, i32 1
    138   %r2 = extractelement <4 x float> %r, i32 2
    139   %r3 = extractelement <4 x float> %r, i32 3
    140   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
    141   ret void
    142 }
    143 
    144 ;CHECK-LABEL: {{^}}sample_c:
    145 ;CHECK: s_wqm
    146 ;CHECK: image_sample_c_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
    147 define void @sample_c() #0 {
    148 main_body:
    149   %r = call <4 x float> @llvm.SI.image.sample.c.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
    150   %r0 = extractelement <4 x float> %r, i32 0
    151   %r1 = extractelement <4 x float> %r, i32 1
    152   %r2 = extractelement <4 x float> %r, i32 2
    153   %r3 = extractelement <4 x float> %r, i32 3
    154   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
    155   ret void
    156 }
    157 
    158 ;CHECK-LABEL: {{^}}sample_c_cl:
    159 ;CHECK: s_wqm
    160 ;CHECK: image_sample_c_cl_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
    161 define void @sample_c_cl() #0 {
    162 main_body:
    163   %r = call <4 x float> @llvm.SI.image.sample.c.cl.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
    164   %r0 = extractelement <4 x float> %r, i32 0
    165   %r1 = extractelement <4 x float> %r, i32 1
    166   %r2 = extractelement <4 x float> %r, i32 2
    167   %r3 = extractelement <4 x float> %r, i32 3
    168   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
    169   ret void
    170 }
    171 
    172 ;CHECK-LABEL: {{^}}sample_c_d:
    173 ;CHECK-NOT: s_wqm
    174 ;CHECK: image_sample_c_d_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
    175 define void @sample_c_d() #0 {
    176 main_body:
    177   %r = call <4 x float> @llvm.SI.image.sample.c.d.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
    178   %r0 = extractelement <4 x float> %r, i32 0
    179   %r1 = extractelement <4 x float> %r, i32 1
    180   %r2 = extractelement <4 x float> %r, i32 2
    181   %r3 = extractelement <4 x float> %r, i32 3
    182   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
    183   ret void
    184 }
    185 
    186 ;CHECK-LABEL: {{^}}sample_c_d_cl:
    187 ;CHECK-NOT: s_wqm
    188 ;CHECK: image_sample_c_d_cl_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
    189 define void @sample_c_d_cl() #0 {
    190 main_body:
    191   %r = call <4 x float> @llvm.SI.image.sample.c.d.cl.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
    192   %r0 = extractelement <4 x float> %r, i32 0
    193   %r1 = extractelement <4 x float> %r, i32 1
    194   %r2 = extractelement <4 x float> %r, i32 2
    195   %r3 = extractelement <4 x float> %r, i32 3
    196   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
    197   ret void
    198 }
    199 
    200 ;CHECK-LABEL: {{^}}sample_c_l:
    201 ;CHECK-NOT: s_wqm
    202 ;CHECK: image_sample_c_l_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
    203 define void @sample_c_l() #0 {
    204 main_body:
    205   %r = call <4 x float> @llvm.SI.image.sample.c.l.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
    206   %r0 = extractelement <4 x float> %r, i32 0
    207   %r1 = extractelement <4 x float> %r, i32 1
    208   %r2 = extractelement <4 x float> %r, i32 2
    209   %r3 = extractelement <4 x float> %r, i32 3
    210   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
    211   ret void
    212 }
    213 
    214 ;CHECK-LABEL: {{^}}sample_c_b:
    215 ;CHECK: s_wqm
    216 ;CHECK: image_sample_c_b_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
    217 define void @sample_c_b() #0 {
    218 main_body:
    219   %r = call <4 x float> @llvm.SI.image.sample.c.b.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
    220   %r0 = extractelement <4 x float> %r, i32 0
    221   %r1 = extractelement <4 x float> %r, i32 1
    222   %r2 = extractelement <4 x float> %r, i32 2
    223   %r3 = extractelement <4 x float> %r, i32 3
    224   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
    225   ret void
    226 }
    227 
    228 ;CHECK-LABEL: {{^}}sample_c_b_cl:
    229 ;CHECK: s_wqm
    230 ;CHECK: image_sample_c_b_cl_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
    231 define void @sample_c_b_cl() #0 {
    232 main_body:
    233   %r = call <4 x float> @llvm.SI.image.sample.c.b.cl.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
    234   %r0 = extractelement <4 x float> %r, i32 0
    235   %r1 = extractelement <4 x float> %r, i32 1
    236   %r2 = extractelement <4 x float> %r, i32 2
    237   %r3 = extractelement <4 x float> %r, i32 3
    238   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
    239   ret void
    240 }
    241 
    242 ;CHECK-LABEL: {{^}}sample_c_lz:
    243 ;CHECK-NOT: s_wqm
    244 ;CHECK: image_sample_c_lz_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
    245 define void @sample_c_lz() #0 {
    246 main_body:
    247   %r = call <4 x float> @llvm.SI.image.sample.c.lz.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
    248   %r0 = extractelement <4 x float> %r, i32 0
    249   %r1 = extractelement <4 x float> %r, i32 1
    250   %r2 = extractelement <4 x float> %r, i32 2
    251   %r3 = extractelement <4 x float> %r, i32 3
    252   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
    253   ret void
    254 }
    255 
    256 ;CHECK-LABEL: {{^}}sample_c_cd:
    257 ;CHECK-NOT: s_wqm
    258 ;CHECK: image_sample_c_cd_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
    259 define void @sample_c_cd() #0 {
    260 main_body:
    261   %r = call <4 x float> @llvm.SI.image.sample.c.cd.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
    262   %r0 = extractelement <4 x float> %r, i32 0
    263   %r1 = extractelement <4 x float> %r, i32 1
    264   %r2 = extractelement <4 x float> %r, i32 2
    265   %r3 = extractelement <4 x float> %r, i32 3
    266   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
    267   ret void
    268 }
    269 
    270 ;CHECK-LABEL: {{^}}sample_c_cd_cl:
    271 ;CHECK-NOT: s_wqm
    272 ;CHECK: image_sample_c_cd_cl_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
    273 define void @sample_c_cd_cl() #0 {
    274 main_body:
    275   %r = call <4 x float> @llvm.SI.image.sample.c.cd.cl.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
    276   %r0 = extractelement <4 x float> %r, i32 0
    277   %r1 = extractelement <4 x float> %r, i32 1
    278   %r2 = extractelement <4 x float> %r, i32 2
    279   %r3 = extractelement <4 x float> %r, i32 3
    280   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
    281   ret void
    282 }
    283 
    284 
    285 declare <4 x float> @llvm.SI.image.sample.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
    286 declare <4 x float> @llvm.SI.image.sample.cl.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
    287 declare <4 x float> @llvm.SI.image.sample.d.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
    288 declare <4 x float> @llvm.SI.image.sample.d.cl.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
    289 declare <4 x float> @llvm.SI.image.sample.l.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
    290 declare <4 x float> @llvm.SI.image.sample.b.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
    291 declare <4 x float> @llvm.SI.image.sample.b.cl.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
    292 declare <4 x float> @llvm.SI.image.sample.lz.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
    293 declare <4 x float> @llvm.SI.image.sample.cd.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
    294 declare <4 x float> @llvm.SI.image.sample.cd.cl.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
    295 
    296 declare <4 x float> @llvm.SI.image.sample.c.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
    297 declare <4 x float> @llvm.SI.image.sample.c.cl.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
    298 declare <4 x float> @llvm.SI.image.sample.c.d.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
    299 declare <4 x float> @llvm.SI.image.sample.c.d.cl.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
    300 declare <4 x float> @llvm.SI.image.sample.c.l.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
    301 declare <4 x float> @llvm.SI.image.sample.c.b.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
    302 declare <4 x float> @llvm.SI.image.sample.c.b.cl.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
    303 declare <4 x float> @llvm.SI.image.sample.c.lz.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
    304 declare <4 x float> @llvm.SI.image.sample.c.cd.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
    305 declare <4 x float> @llvm.SI.image.sample.c.cd.cl.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
    306 
    307 declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float)
    308 
    309 attributes #0 = { "ShaderType"="0" }
    310 attributes #1 = { nounwind readnone }
    311