Home | History | Annotate | Download | only in R600
      1 ; RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck %s --check-prefix=EG-CHECK
      2 ; RUN: llc < %s -march=r600 -mcpu=cayman | FileCheck %s --check-prefix=EG-CHECK
      3 ; RUN: llc < %s -march=r600 -mcpu=SI -verify-machineinstrs | FileCheck %s --check-prefix=SI-CHECK
      4 
      5 ; EG-CHECK-LABEL: @i8_arg
      6 ; EG-CHECK: MOV {{[ *]*}}T{{[0-9]+\.[XYZW]}}, KC0[2].Z
      7 ; SI-CHECK-LABEL: @i8_arg
      8 ; SI-CHECK: BUFFER_LOAD_UBYTE
      9 
     10 define void @i8_arg(i32 addrspace(1)* nocapture %out, i8 %in) nounwind {
     11 entry:
     12   %0 = zext i8 %in to i32
     13   store i32 %0, i32 addrspace(1)* %out, align 4
     14   ret void
     15 }
     16 
     17 ; EG-CHECK-LABEL: @i8_zext_arg
     18 ; EG-CHECK: MOV {{[ *]*}}T{{[0-9]+\.[XYZW]}}, KC0[2].Z
     19 ; SI-CHECK-LABEL: @i8_zext_arg
     20 ; SI-CHECK: S_LOAD_DWORD s{{[0-9]}}, s[0:1], 0xb
     21 
     22 define void @i8_zext_arg(i32 addrspace(1)* nocapture %out, i8 zeroext %in) nounwind {
     23 entry:
     24   %0 = zext i8 %in to i32
     25   store i32 %0, i32 addrspace(1)* %out, align 4
     26   ret void
     27 }
     28 
     29 ; EG-CHECK-LABEL: @i8_sext_arg
     30 ; EG-CHECK: MOV {{[ *]*}}T{{[0-9]+\.[XYZW]}}, KC0[2].Z
     31 ; SI-CHECK-LABEL: @i8_sext_arg
     32 ; SI-CHECK: S_LOAD_DWORD s{{[0-9]}}, s[0:1], 0xb
     33 
     34 define void @i8_sext_arg(i32 addrspace(1)* nocapture %out, i8 signext %in) nounwind {
     35 entry:
     36   %0 = sext i8 %in to i32
     37   store i32 %0, i32 addrspace(1)* %out, align 4
     38   ret void
     39 }
     40 
     41 ; EG-CHECK-LABEL: @i16_arg
     42 ; EG-CHECK: MOV {{[ *]*}}T{{[0-9]+\.[XYZW]}}, KC0[2].Z
     43 ; SI-CHECK-LABEL: @i16_arg
     44 ; SI-CHECK: BUFFER_LOAD_USHORT
     45 
     46 define void @i16_arg(i32 addrspace(1)* nocapture %out, i16 %in) nounwind {
     47 entry:
     48   %0 = zext i16 %in to i32
     49   store i32 %0, i32 addrspace(1)* %out, align 4
     50   ret void
     51 }
     52 
     53 ; EG-CHECK-LABEL: @i16_zext_arg
     54 ; EG-CHECK: MOV {{[ *]*}}T{{[0-9]+\.[XYZW]}}, KC0[2].Z
     55 ; SI-CHECK-LABEL: @i16_zext_arg
     56 ; SI-CHECK: S_LOAD_DWORD s{{[0-9]}}, s[0:1], 0xb
     57 
     58 define void @i16_zext_arg(i32 addrspace(1)* nocapture %out, i16 zeroext %in) nounwind {
     59 entry:
     60   %0 = zext i16 %in to i32
     61   store i32 %0, i32 addrspace(1)* %out, align 4
     62   ret void
     63 }
     64 
     65 ; EG-CHECK-LABEL: @i16_sext_arg
     66 ; EG-CHECK: MOV {{[ *]*}}T{{[0-9]+\.[XYZW]}}, KC0[2].Z
     67 ; SI-CHECK-LABEL: @i16_sext_arg
     68 ; SI-CHECK: S_LOAD_DWORD s{{[0-9]}}, s[0:1], 0xb
     69 
     70 define void @i16_sext_arg(i32 addrspace(1)* nocapture %out, i16 signext %in) nounwind {
     71 entry:
     72   %0 = sext i16 %in to i32
     73   store i32 %0, i32 addrspace(1)* %out, align 4
     74   ret void
     75 }
     76 
     77 ; EG-CHECK-LABEL: @i32_arg
     78 ; EG-CHECK: T{{[0-9]\.[XYZW]}}, KC0[2].Z
     79 ; SI-CHECK-LABEL: @i32_arg
     80 ; S_LOAD_DWORD s{{[0-9]}}, s[0:1], 0xb
     81 define void @i32_arg(i32 addrspace(1)* nocapture %out, i32 %in) nounwind {
     82 entry:
     83   store i32 %in, i32 addrspace(1)* %out, align 4
     84   ret void
     85 }
     86 
     87 ; EG-CHECK-LABEL: @f32_arg
     88 ; EG-CHECK: T{{[0-9]\.[XYZW]}}, KC0[2].Z
     89 ; SI-CHECK-LABEL: @f32_arg
     90 ; S_LOAD_DWORD s{{[0-9]}}, s[0:1], 0xb
     91 define void @f32_arg(float addrspace(1)* nocapture %out, float %in) nounwind {
     92 entry:
     93   store float %in, float addrspace(1)* %out, align 4
     94   ret void
     95 }
     96 
     97 ; EG-CHECK-LABEL: @v2i8_arg
     98 ; EG-CHECK: VTX_READ_8
     99 ; EG-CHECK: VTX_READ_8
    100 ; SI-CHECK-LABEL: @v2i8_arg
    101 ; SI-CHECK: BUFFER_LOAD_UBYTE
    102 ; SI-CHECK: BUFFER_LOAD_UBYTE
    103 define void @v2i8_arg(<2 x i8> addrspace(1)* %out, <2 x i8> %in) {
    104 entry:
    105   store <2 x i8> %in, <2 x i8> addrspace(1)* %out
    106   ret void
    107 }
    108 
    109 ; EG-CHECK-LABEL: @v2i16_arg
    110 ; EG-CHECK: VTX_READ_16
    111 ; EG-CHECK: VTX_READ_16
    112 ; SI-CHECK-LABEL: @v2i16_arg
    113 ; SI-CHECK-DAG: BUFFER_LOAD_USHORT
    114 ; SI-CHECK-DAG: BUFFER_LOAD_USHORT
    115 define void @v2i16_arg(<2 x i16> addrspace(1)* %out, <2 x i16> %in) {
    116 entry:
    117   store <2 x i16> %in, <2 x i16> addrspace(1)* %out
    118   ret void
    119 }
    120 
    121 ; EG-CHECK-LABEL: @v2i32_arg
    122 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].X
    123 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[2].W
    124 ; SI-CHECK-LABEL: @v2i32_arg
    125 ; SI-CHECK: S_LOAD_DWORDX2 s{{\[[0-9]:[0-9]\]}}, s[0:1], 0xb
    126 define void @v2i32_arg(<2 x i32> addrspace(1)* nocapture %out, <2 x i32> %in) nounwind {
    127 entry:
    128   store <2 x i32> %in, <2 x i32> addrspace(1)* %out, align 4
    129   ret void
    130 }
    131 
    132 ; EG-CHECK-LABEL: @v2f32_arg
    133 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].X
    134 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[2].W
    135 ; SI-CHECK-LABEL: @v2f32_arg
    136 ; SI-CHECK: S_LOAD_DWORDX2 s{{\[[0-9]:[0-9]\]}}, s[0:1], 0xb
    137 define void @v2f32_arg(<2 x float> addrspace(1)* nocapture %out, <2 x float> %in) nounwind {
    138 entry:
    139   store <2 x float> %in, <2 x float> addrspace(1)* %out, align 4
    140   ret void
    141 }
    142 
    143 ; EG-CHECK-LABEL: @v3i8_arg
    144 ; VTX_READ_8 T{{[0-9]}}.X, T{{[0-9]}}.X, 40
    145 ; VTX_READ_8 T{{[0-9]}}.X, T{{[0-9]}}.X, 41
    146 ; VTX_READ_8 T{{[0-9]}}.X, T{{[0-9]}}.X, 42
    147 ; SI-CHECK-LABEL: @v3i8_arg
    148 define void @v3i8_arg(<3 x i8> addrspace(1)* nocapture %out, <3 x i8> %in) nounwind {
    149 entry:
    150   store <3 x i8> %in, <3 x i8> addrspace(1)* %out, align 4
    151   ret void
    152 }
    153 
    154 ; EG-CHECK-LABEL: @v3i16_arg
    155 ; VTX_READ_16 T{{[0-9]}}.X, T{{[0-9]}}.X, 44
    156 ; VTX_READ_16 T{{[0-9]}}.X, T{{[0-9]}}.X, 46
    157 ; VTX_READ_16 T{{[0-9]}}.X, T{{[0-9]}}.X, 48
    158 ; SI-CHECK-LABEL: @v3i16_arg
    159 define void @v3i16_arg(<3 x i16> addrspace(1)* nocapture %out, <3 x i16> %in) nounwind {
    160 entry:
    161   store <3 x i16> %in, <3 x i16> addrspace(1)* %out, align 4
    162   ret void
    163 }
    164 ; EG-CHECK-LABEL: @v3i32_arg
    165 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].Y
    166 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].Z
    167 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].W
    168 ; SI-CHECK-LABEL: @v3i32_arg
    169 ; SI-CHECK: S_LOAD_DWORDX4 s{{\[[0-9]:[0-9]+\]}}, s[0:1], 0xd
    170 define void @v3i32_arg(<3 x i32> addrspace(1)* nocapture %out, <3 x i32> %in) nounwind {
    171 entry:
    172   store <3 x i32> %in, <3 x i32> addrspace(1)* %out, align 4
    173   ret void
    174 }
    175 
    176 ; EG-CHECK-LABEL: @v3f32_arg
    177 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].Y
    178 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].Z
    179 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].W
    180 ; SI-CHECK-LABEL: @v3f32_arg
    181 ; SI-CHECK: S_LOAD_DWORDX4 s{{\[[0-9]:[0-9]+\]}}, s[0:1], 0xd
    182 define void @v3f32_arg(<3 x float> addrspace(1)* nocapture %out, <3 x float> %in) nounwind {
    183 entry:
    184   store <3 x float> %in, <3 x float> addrspace(1)* %out, align 4
    185   ret void
    186 }
    187 
    188 ; EG-CHECK-LABEL: @v4i8_arg
    189 ; EG-CHECK: VTX_READ_8
    190 ; EG-CHECK: VTX_READ_8
    191 ; EG-CHECK: VTX_READ_8
    192 ; EG-CHECK: VTX_READ_8
    193 ; SI-CHECK-LABEL: @v4i8_arg
    194 ; SI-CHECK: BUFFER_LOAD_UBYTE
    195 ; SI-CHECK: BUFFER_LOAD_UBYTE
    196 ; SI-CHECK: BUFFER_LOAD_UBYTE
    197 ; SI-CHECK: BUFFER_LOAD_UBYTE
    198 define void @v4i8_arg(<4 x i8> addrspace(1)* %out, <4 x i8> %in) {
    199 entry:
    200   store <4 x i8> %in, <4 x i8> addrspace(1)* %out
    201   ret void
    202 }
    203 
    204 ; EG-CHECK-LABEL: @v4i16_arg
    205 ; EG-CHECK: VTX_READ_16
    206 ; EG-CHECK: VTX_READ_16
    207 ; EG-CHECK: VTX_READ_16
    208 ; EG-CHECK: VTX_READ_16
    209 ; SI-CHECK-LABEL: @v4i16_arg
    210 ; SI-CHECK: BUFFER_LOAD_USHORT
    211 ; SI-CHECK: BUFFER_LOAD_USHORT
    212 ; SI-CHECK: BUFFER_LOAD_USHORT
    213 ; SI-CHECK: BUFFER_LOAD_USHORT
    214 define void @v4i16_arg(<4 x i16> addrspace(1)* %out, <4 x i16> %in) {
    215 entry:
    216   store <4 x i16> %in, <4 x i16> addrspace(1)* %out
    217   ret void
    218 }
    219 
    220 ; EG-CHECK-LABEL: @v4i32_arg
    221 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].Y
    222 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].Z
    223 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].W
    224 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[4].X
    225 ; SI-CHECK-LABEL: @v4i32_arg
    226 ; SI-CHECK: S_LOAD_DWORDX4 s{{\[[0-9]:[0-9]\]}}, s[0:1], 0xd
    227 define void @v4i32_arg(<4 x i32> addrspace(1)* nocapture %out, <4 x i32> %in) nounwind {
    228 entry:
    229   store <4 x i32> %in, <4 x i32> addrspace(1)* %out, align 4
    230   ret void
    231 }
    232 
    233 ; EG-CHECK-LABEL: @v4f32_arg
    234 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].Y
    235 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].Z
    236 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].W
    237 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[4].X
    238 ; SI-CHECK-LABEL: @v4f32_arg
    239 ; SI-CHECK: S_LOAD_DWORDX4 s{{\[[0-9]:[0-9]\]}}, s[0:1], 0xd
    240 define void @v4f32_arg(<4 x float> addrspace(1)* nocapture %out, <4 x float> %in) nounwind {
    241 entry:
    242   store <4 x float> %in, <4 x float> addrspace(1)* %out, align 4
    243   ret void
    244 }
    245 
    246 ; EG-CHECK-LABEL: @v8i8_arg
    247 ; EG-CHECK: VTX_READ_8
    248 ; EG-CHECK: VTX_READ_8
    249 ; EG-CHECK: VTX_READ_8
    250 ; EG-CHECK: VTX_READ_8
    251 ; EG-CHECK: VTX_READ_8
    252 ; EG-CHECK: VTX_READ_8
    253 ; EG-CHECK: VTX_READ_8
    254 ; EG-CHECK: VTX_READ_8
    255 ; SI-CHECK-LABEL: @v8i8_arg
    256 ; SI-CHECK: BUFFER_LOAD_UBYTE
    257 ; SI-CHECK: BUFFER_LOAD_UBYTE
    258 ; SI-CHECK: BUFFER_LOAD_UBYTE
    259 ; SI-CHECK: BUFFER_LOAD_UBYTE
    260 ; SI-CHECK: BUFFER_LOAD_UBYTE
    261 ; SI-CHECK: BUFFER_LOAD_UBYTE
    262 ; SI-CHECK: BUFFER_LOAD_UBYTE
    263 define void @v8i8_arg(<8 x i8> addrspace(1)* %out, <8 x i8> %in) {
    264 entry:
    265   store <8 x i8> %in, <8 x i8> addrspace(1)* %out
    266   ret void
    267 }
    268 
    269 ; EG-CHECK-LABEL: @v8i16_arg
    270 ; EG-CHECK: VTX_READ_16
    271 ; EG-CHECK: VTX_READ_16
    272 ; EG-CHECK: VTX_READ_16
    273 ; EG-CHECK: VTX_READ_16
    274 ; EG-CHECK: VTX_READ_16
    275 ; EG-CHECK: VTX_READ_16
    276 ; EG-CHECK: VTX_READ_16
    277 ; EG-CHECK: VTX_READ_16
    278 ; SI-CHECK-LABEL: @v8i16_arg
    279 ; SI-CHECK: BUFFER_LOAD_USHORT
    280 ; SI-CHECK: BUFFER_LOAD_USHORT
    281 ; SI-CHECK: BUFFER_LOAD_USHORT
    282 ; SI-CHECK: BUFFER_LOAD_USHORT
    283 ; SI-CHECK: BUFFER_LOAD_USHORT
    284 ; SI-CHECK: BUFFER_LOAD_USHORT
    285 ; SI-CHECK: BUFFER_LOAD_USHORT
    286 ; SI-CHECK: BUFFER_LOAD_USHORT
    287 define void @v8i16_arg(<8 x i16> addrspace(1)* %out, <8 x i16> %in) {
    288 entry:
    289   store <8 x i16> %in, <8 x i16> addrspace(1)* %out
    290   ret void
    291 }
    292 
    293 ; EG-CHECK-LABEL: @v8i32_arg
    294 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[4].Y
    295 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[4].Z
    296 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[4].W
    297 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[5].X
    298 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[5].Y
    299 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[5].Z
    300 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[5].W
    301 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[6].X
    302 ; SI-CHECK-LABEL: @v8i32_arg
    303 ; SI-CHECK: S_LOAD_DWORDX8 s{{\[[0-9]:[0-9]+\]}}, s[0:1], 0x11
    304 define void @v8i32_arg(<8 x i32> addrspace(1)* nocapture %out, <8 x i32> %in) nounwind {
    305 entry:
    306   store <8 x i32> %in, <8 x i32> addrspace(1)* %out, align 4
    307   ret void
    308 }
    309 
    310 ; EG-CHECK-LABEL: @v8f32_arg
    311 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[4].Y
    312 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[4].Z
    313 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[4].W
    314 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[5].X
    315 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[5].Y
    316 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[5].Z
    317 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[5].W
    318 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[6].X
    319 ; SI-CHECK-LABEL: @v8f32_arg
    320 ; SI-CHECK: S_LOAD_DWORDX8 s{{\[[0-9]:[0-9]+\]}}, s[0:1], 0x11
    321 define void @v8f32_arg(<8 x float> addrspace(1)* nocapture %out, <8 x float> %in) nounwind {
    322 entry:
    323   store <8 x float> %in, <8 x float> addrspace(1)* %out, align 4
    324   ret void
    325 }
    326 
    327 ; EG-CHECK-LABEL: @v16i8_arg
    328 ; EG-CHECK: VTX_READ_8
    329 ; EG-CHECK: VTX_READ_8
    330 ; EG-CHECK: VTX_READ_8
    331 ; EG-CHECK: VTX_READ_8
    332 ; EG-CHECK: VTX_READ_8
    333 ; EG-CHECK: VTX_READ_8
    334 ; EG-CHECK: VTX_READ_8
    335 ; EG-CHECK: VTX_READ_8
    336 ; EG-CHECK: VTX_READ_8
    337 ; EG-CHECK: VTX_READ_8
    338 ; EG-CHECK: VTX_READ_8
    339 ; EG-CHECK: VTX_READ_8
    340 ; EG-CHECK: VTX_READ_8
    341 ; EG-CHECK: VTX_READ_8
    342 ; EG-CHECK: VTX_READ_8
    343 ; EG-CHECK: VTX_READ_8
    344 ; SI-CHECK-LABEL: @v16i8_arg
    345 ; SI-CHECK: BUFFER_LOAD_UBYTE
    346 ; SI-CHECK: BUFFER_LOAD_UBYTE
    347 ; SI-CHECK: BUFFER_LOAD_UBYTE
    348 ; SI-CHECK: BUFFER_LOAD_UBYTE
    349 ; SI-CHECK: BUFFER_LOAD_UBYTE
    350 ; SI-CHECK: BUFFER_LOAD_UBYTE
    351 ; SI-CHECK: BUFFER_LOAD_UBYTE
    352 ; SI-CHECK: BUFFER_LOAD_UBYTE
    353 ; SI-CHECK: BUFFER_LOAD_UBYTE
    354 ; SI-CHECK: BUFFER_LOAD_UBYTE
    355 ; SI-CHECK: BUFFER_LOAD_UBYTE
    356 ; SI-CHECK: BUFFER_LOAD_UBYTE
    357 ; SI-CHECK: BUFFER_LOAD_UBYTE
    358 ; SI-CHECK: BUFFER_LOAD_UBYTE
    359 ; SI-CHECK: BUFFER_LOAD_UBYTE
    360 ; SI-CHECK: BUFFER_LOAD_UBYTE
    361 define void @v16i8_arg(<16 x i8> addrspace(1)* %out, <16 x i8> %in) {
    362 entry:
    363   store <16 x i8> %in, <16 x i8> addrspace(1)* %out
    364   ret void
    365 }
    366 
    367 ; EG-CHECK-LABEL: @v16i16_arg
    368 ; EG-CHECK: VTX_READ_16
    369 ; EG-CHECK: VTX_READ_16
    370 ; EG-CHECK: VTX_READ_16
    371 ; EG-CHECK: VTX_READ_16
    372 ; EG-CHECK: VTX_READ_16
    373 ; EG-CHECK: VTX_READ_16
    374 ; EG-CHECK: VTX_READ_16
    375 ; EG-CHECK: VTX_READ_16
    376 ; EG-CHECK: VTX_READ_16
    377 ; EG-CHECK: VTX_READ_16
    378 ; EG-CHECK: VTX_READ_16
    379 ; EG-CHECK: VTX_READ_16
    380 ; EG-CHECK: VTX_READ_16
    381 ; EG-CHECK: VTX_READ_16
    382 ; EG-CHECK: VTX_READ_16
    383 ; EG-CHECK: VTX_READ_16
    384 ; SI-CHECK-LABEL: @v16i16_arg
    385 ; SI-CHECK: BUFFER_LOAD_USHORT
    386 ; SI-CHECK: BUFFER_LOAD_USHORT
    387 ; SI-CHECK: BUFFER_LOAD_USHORT
    388 ; SI-CHECK: BUFFER_LOAD_USHORT
    389 ; SI-CHECK: BUFFER_LOAD_USHORT
    390 ; SI-CHECK: BUFFER_LOAD_USHORT
    391 ; SI-CHECK: BUFFER_LOAD_USHORT
    392 ; SI-CHECK: BUFFER_LOAD_USHORT
    393 ; SI-CHECK: BUFFER_LOAD_USHORT
    394 ; SI-CHECK: BUFFER_LOAD_USHORT
    395 ; SI-CHECK: BUFFER_LOAD_USHORT
    396 ; SI-CHECK: BUFFER_LOAD_USHORT
    397 ; SI-CHECK: BUFFER_LOAD_USHORT
    398 ; SI-CHECK: BUFFER_LOAD_USHORT
    399 ; SI-CHECK: BUFFER_LOAD_USHORT
    400 ; SI-CHECK: BUFFER_LOAD_USHORT
    401 define void @v16i16_arg(<16 x i16> addrspace(1)* %out, <16 x i16> %in) {
    402 entry:
    403   store <16 x i16> %in, <16 x i16> addrspace(1)* %out
    404   ret void
    405 }
    406 
    407 ; EG-CHECK-LABEL: @v16i32_arg
    408 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[6].Y
    409 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[6].Z
    410 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[6].W
    411 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[7].X
    412 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[7].Y
    413 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[7].Z
    414 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[7].W
    415 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[8].X
    416 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[8].Y
    417 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[8].Z
    418 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[8].W
    419 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[9].X
    420 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[9].Y
    421 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[9].Z
    422 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[9].W
    423 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[10].X
    424 ; SI-CHECK-LABEL: @v16i32_arg
    425 ; SI-CHECK: S_LOAD_DWORDX16 s{{\[[0-9]:[0-9]+\]}}, s[0:1], 0x19
    426 define void @v16i32_arg(<16 x i32> addrspace(1)* nocapture %out, <16 x i32> %in) nounwind {
    427 entry:
    428   store <16 x i32> %in, <16 x i32> addrspace(1)* %out, align 4
    429   ret void
    430 }
    431 
    432 ; EG-CHECK-LABEL: @v16f32_arg
    433 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[6].Y
    434 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[6].Z
    435 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[6].W
    436 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[7].X
    437 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[7].Y
    438 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[7].Z
    439 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[7].W
    440 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[8].X
    441 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[8].Y
    442 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[8].Z
    443 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[8].W
    444 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[9].X
    445 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[9].Y
    446 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[9].Z
    447 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[9].W
    448 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[10].X
    449 ; SI-CHECK-LABEL: @v16f32_arg
    450 ; SI-CHECK: S_LOAD_DWORDX16 s{{\[[0-9]:[0-9]+\]}}, s[0:1], 0x19
    451 define void @v16f32_arg(<16 x float> addrspace(1)* nocapture %out, <16 x float> %in) nounwind {
    452 entry:
    453   store <16 x float> %in, <16 x float> addrspace(1)* %out, align 4
    454   ret void
    455 }
    456