1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=GCN-NOHSA -check-prefix=FUNC %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=kaveri -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=GCN-HSA -check-prefix=FUNC %s 3*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=GCN-NOHSA -check-prefix=FUNC %s 4*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_i32: 7*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dword s{{[0-9]+}} 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_32 T{{[0-9]+}}.X, T{{[0-9]+}}.X, 0 10*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_i32(i32 addrspace(1)* %out, i32 addrspace(2)* %in) #0 { 11*9880d681SAndroid Build Coastguard Workerentry: 12*9880d681SAndroid Build Coastguard Worker %ld = load i32, i32 addrspace(2)* %in 13*9880d681SAndroid Build Coastguard Worker store i32 %ld, i32 addrspace(1)* %out 14*9880d681SAndroid Build Coastguard Worker ret void 15*9880d681SAndroid Build Coastguard Worker} 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_v2i32: 18*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx2 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_64 21*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_v2i32(<2 x i32> addrspace(1)* %out, <2 x i32> addrspace(2)* %in) #0 { 22*9880d681SAndroid Build Coastguard Workerentry: 23*9880d681SAndroid Build Coastguard Worker %ld = load <2 x i32>, <2 x i32> addrspace(2)* %in 24*9880d681SAndroid Build Coastguard Worker store <2 x i32> %ld, <2 x i32> addrspace(1)* %out 25*9880d681SAndroid Build Coastguard Worker ret void 26*9880d681SAndroid Build Coastguard Worker} 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_v3i32: 29*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx4 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_128 32*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_v3i32(<3 x i32> addrspace(1)* %out, <3 x i32> addrspace(2)* %in) #0 { 33*9880d681SAndroid Build Coastguard Workerentry: 34*9880d681SAndroid Build Coastguard Worker %ld = load <3 x i32>, <3 x i32> addrspace(2)* %in 35*9880d681SAndroid Build Coastguard Worker store <3 x i32> %ld, <3 x i32> addrspace(1)* %out 36*9880d681SAndroid Build Coastguard Worker ret void 37*9880d681SAndroid Build Coastguard Worker} 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_v4i32: 40*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx4 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_128 43*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_v4i32(<4 x i32> addrspace(1)* %out, <4 x i32> addrspace(2)* %in) #0 { 44*9880d681SAndroid Build Coastguard Workerentry: 45*9880d681SAndroid Build Coastguard Worker %ld = load <4 x i32>, <4 x i32> addrspace(2)* %in 46*9880d681SAndroid Build Coastguard Worker store <4 x i32> %ld, <4 x i32> addrspace(1)* %out 47*9880d681SAndroid Build Coastguard Worker ret void 48*9880d681SAndroid Build Coastguard Worker} 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_v8i32: 51*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx8 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_128 54*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_128 55*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_v8i32(<8 x i32> addrspace(1)* %out, <8 x i32> addrspace(2)* %in) #0 { 56*9880d681SAndroid Build Coastguard Workerentry: 57*9880d681SAndroid Build Coastguard Worker %ld = load <8 x i32>, <8 x i32> addrspace(2)* %in 58*9880d681SAndroid Build Coastguard Worker store <8 x i32> %ld, <8 x i32> addrspace(1)* %out 59*9880d681SAndroid Build Coastguard Worker ret void 60*9880d681SAndroid Build Coastguard Worker} 61*9880d681SAndroid Build Coastguard Worker 62*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_v16i32: 63*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx16 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_128 66*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_128 67*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_128 68*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_128 69*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_v16i32(<16 x i32> addrspace(1)* %out, <16 x i32> addrspace(2)* %in) #0 { 70*9880d681SAndroid Build Coastguard Workerentry: 71*9880d681SAndroid Build Coastguard Worker %ld = load <16 x i32>, <16 x i32> addrspace(2)* %in 72*9880d681SAndroid Build Coastguard Worker store <16 x i32> %ld, <16 x i32> addrspace(1)* %out 73*9880d681SAndroid Build Coastguard Worker ret void 74*9880d681SAndroid Build Coastguard Worker} 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_i32_to_i64: 77*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_load_dword s[[SLO:[0-9]+]], 78*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_mov_b32_e32 v[[SHI:[0-9]+]], 0{{$}} 79*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx2 80*9880d681SAndroid Build Coastguard Worker 81*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW T{{[0-9]+}}.XY 82*9880d681SAndroid Build Coastguard Worker; EG: CF_END 83*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_32 84*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_i32_to_i64(i64 addrspace(1)* %out, i32 addrspace(2)* %in) #0 { 85*9880d681SAndroid Build Coastguard Worker %ld = load i32, i32 addrspace(2)* %in 86*9880d681SAndroid Build Coastguard Worker %ext = zext i32 %ld to i64 87*9880d681SAndroid Build Coastguard Worker store i64 %ext, i64 addrspace(1)* %out 88*9880d681SAndroid Build Coastguard Worker ret void 89*9880d681SAndroid Build Coastguard Worker} 90*9880d681SAndroid Build Coastguard Worker 91*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_i32_to_i64: 92*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dword s[[SLO:[0-9]+]] 93*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32 s[[HI:[0-9]+]], s[[SLO]], 31 94*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx2 95*9880d681SAndroid Build Coastguard Worker 96*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW T{{[0-9]+}}.XY 97*9880d681SAndroid Build Coastguard Worker; EG: CF_END 98*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_32 99*9880d681SAndroid Build Coastguard Worker; EG: ASHR {{[* ]*}}T{{[0-9]\.[XYZW]}}, T{{[0-9]\.[XYZW]}}, literal. 100*9880d681SAndroid Build Coastguard Worker; EG: 31 101*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_i32_to_i64(i64 addrspace(1)* %out, i32 addrspace(2)* %in) #0 { 102*9880d681SAndroid Build Coastguard Worker %ld = load i32, i32 addrspace(2)* %in 103*9880d681SAndroid Build Coastguard Worker %ext = sext i32 %ld to i64 104*9880d681SAndroid Build Coastguard Worker store i64 %ext, i64 addrspace(1)* %out 105*9880d681SAndroid Build Coastguard Worker ret void 106*9880d681SAndroid Build Coastguard Worker} 107*9880d681SAndroid Build Coastguard Worker 108*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v1i32_to_v1i64: 109*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dword 110*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx2 111*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v1i32_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i32> addrspace(2)* %in) #0 { 112*9880d681SAndroid Build Coastguard Worker %ld = load <1 x i32>, <1 x i32> addrspace(2)* %in 113*9880d681SAndroid Build Coastguard Worker %ext = zext <1 x i32> %ld to <1 x i64> 114*9880d681SAndroid Build Coastguard Worker store <1 x i64> %ext, <1 x i64> addrspace(1)* %out 115*9880d681SAndroid Build Coastguard Worker ret void 116*9880d681SAndroid Build Coastguard Worker} 117*9880d681SAndroid Build Coastguard Worker 118*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v1i32_to_v1i64: 119*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dword s[[LO:[0-9]+]] 120*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32 s[[HI:[0-9]+]], s[[LO]], 31 121*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx2 122*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v1i32_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i32> addrspace(2)* %in) #0 { 123*9880d681SAndroid Build Coastguard Worker %ld = load <1 x i32>, <1 x i32> addrspace(2)* %in 124*9880d681SAndroid Build Coastguard Worker %ext = sext <1 x i32> %ld to <1 x i64> 125*9880d681SAndroid Build Coastguard Worker store <1 x i64> %ext, <1 x i64> addrspace(1)* %out 126*9880d681SAndroid Build Coastguard Worker ret void 127*9880d681SAndroid Build Coastguard Worker} 128*9880d681SAndroid Build Coastguard Worker 129*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v2i32_to_v2i64: 130*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx2 s{{\[[0-9]+:[0-9]+\]}}, s{{\[[0-9]+:[0-9]+\]}}, 0x0{{$}} 131*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4 132*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v2i32_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i32> addrspace(2)* %in) #0 { 133*9880d681SAndroid Build Coastguard Worker %ld = load <2 x i32>, <2 x i32> addrspace(2)* %in 134*9880d681SAndroid Build Coastguard Worker %ext = zext <2 x i32> %ld to <2 x i64> 135*9880d681SAndroid Build Coastguard Worker store <2 x i64> %ext, <2 x i64> addrspace(1)* %out 136*9880d681SAndroid Build Coastguard Worker ret void 137*9880d681SAndroid Build Coastguard Worker} 138*9880d681SAndroid Build Coastguard Worker 139*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v2i32_to_v2i64: 140*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx2 s{{\[[0-9]+:[0-9]+\]}}, s{{\[[0-9]+:[0-9]+\]}}, 0x0{{$}} 141*9880d681SAndroid Build Coastguard Worker 142*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_ashr_i32 143*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_ashr_i32 144*9880d681SAndroid Build Coastguard Worker 145*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4 146*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v2i32_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i32> addrspace(2)* %in) #0 { 147*9880d681SAndroid Build Coastguard Worker %ld = load <2 x i32>, <2 x i32> addrspace(2)* %in 148*9880d681SAndroid Build Coastguard Worker %ext = sext <2 x i32> %ld to <2 x i64> 149*9880d681SAndroid Build Coastguard Worker store <2 x i64> %ext, <2 x i64> addrspace(1)* %out 150*9880d681SAndroid Build Coastguard Worker ret void 151*9880d681SAndroid Build Coastguard Worker} 152*9880d681SAndroid Build Coastguard Worker 153*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v4i32_to_v4i64: 154*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx4 155*9880d681SAndroid Build Coastguard Worker 156*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4 157*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4 158*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v4i32_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i32> addrspace(2)* %in) #0 { 159*9880d681SAndroid Build Coastguard Worker %ld = load <4 x i32>, <4 x i32> addrspace(2)* %in 160*9880d681SAndroid Build Coastguard Worker %ext = zext <4 x i32> %ld to <4 x i64> 161*9880d681SAndroid Build Coastguard Worker store <4 x i64> %ext, <4 x i64> addrspace(1)* %out 162*9880d681SAndroid Build Coastguard Worker ret void 163*9880d681SAndroid Build Coastguard Worker} 164*9880d681SAndroid Build Coastguard Worker 165*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v4i32_to_v4i64: 166*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx4 167*9880d681SAndroid Build Coastguard Worker 168*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32 169*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32 170*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32 171*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32 172*9880d681SAndroid Build Coastguard Worker 173*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4 174*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4 175*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v4i32_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i32> addrspace(2)* %in) #0 { 176*9880d681SAndroid Build Coastguard Worker %ld = load <4 x i32>, <4 x i32> addrspace(2)* %in 177*9880d681SAndroid Build Coastguard Worker %ext = sext <4 x i32> %ld to <4 x i64> 178*9880d681SAndroid Build Coastguard Worker store <4 x i64> %ext, <4 x i64> addrspace(1)* %out 179*9880d681SAndroid Build Coastguard Worker ret void 180*9880d681SAndroid Build Coastguard Worker} 181*9880d681SAndroid Build Coastguard Worker 182*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v8i32_to_v8i64: 183*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx8 184*9880d681SAndroid Build Coastguard Worker 185*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 186*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 187*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 188*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 189*9880d681SAndroid Build Coastguard Worker 190*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4 191*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4 192*9880d681SAndroid Build Coastguard Worker; GCN-SA-DAG: flat_store_dwordx4 193*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4 194*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v8i32_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i32> addrspace(2)* %in) #0 { 195*9880d681SAndroid Build Coastguard Worker %ld = load <8 x i32>, <8 x i32> addrspace(2)* %in 196*9880d681SAndroid Build Coastguard Worker %ext = zext <8 x i32> %ld to <8 x i64> 197*9880d681SAndroid Build Coastguard Worker store <8 x i64> %ext, <8 x i64> addrspace(1)* %out 198*9880d681SAndroid Build Coastguard Worker ret void 199*9880d681SAndroid Build Coastguard Worker} 200*9880d681SAndroid Build Coastguard Worker 201*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v8i32_to_v8i64: 202*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx8 203*9880d681SAndroid Build Coastguard Worker 204*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32 205*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32 206*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32 207*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32 208*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32 209*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32 210*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32 211*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32 212*9880d681SAndroid Build Coastguard Worker 213*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 214*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 215*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 216*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 217*9880d681SAndroid Build Coastguard Worker 218*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4 219*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4 220*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4 221*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4 222*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v8i32_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i32> addrspace(2)* %in) #0 { 223*9880d681SAndroid Build Coastguard Worker %ld = load <8 x i32>, <8 x i32> addrspace(2)* %in 224*9880d681SAndroid Build Coastguard Worker %ext = sext <8 x i32> %ld to <8 x i64> 225*9880d681SAndroid Build Coastguard Worker store <8 x i64> %ext, <8 x i64> addrspace(1)* %out 226*9880d681SAndroid Build Coastguard Worker ret void 227*9880d681SAndroid Build Coastguard Worker} 228*9880d681SAndroid Build Coastguard Worker 229*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v16i32_to_v16i64: 230*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx16 231*9880d681SAndroid Build Coastguard Worker 232*9880d681SAndroid Build Coastguard Worker 233*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_ashr_i32 234*9880d681SAndroid Build Coastguard Worker 235*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4 236*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4 237*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4 238*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4 239*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4 240*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4 241*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4 242*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4 243*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v16i32_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i32> addrspace(2)* %in) #0 { 244*9880d681SAndroid Build Coastguard Worker %ld = load <16 x i32>, <16 x i32> addrspace(2)* %in 245*9880d681SAndroid Build Coastguard Worker %ext = sext <16 x i32> %ld to <16 x i64> 246*9880d681SAndroid Build Coastguard Worker store <16 x i64> %ext, <16 x i64> addrspace(1)* %out 247*9880d681SAndroid Build Coastguard Worker ret void 248*9880d681SAndroid Build Coastguard Worker} 249*9880d681SAndroid Build Coastguard Worker 250*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v16i32_to_v16i64 251*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx16 252*9880d681SAndroid Build Coastguard Worker 253*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 254*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 255*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 256*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 257*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 258*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 259*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 260*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 261*9880d681SAndroid Build Coastguard Worker 262*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 263*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 264*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 265*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 266*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 267*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 268*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 269*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 270*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v16i32_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i32> addrspace(2)* %in) #0 { 271*9880d681SAndroid Build Coastguard Worker %ld = load <16 x i32>, <16 x i32> addrspace(2)* %in 272*9880d681SAndroid Build Coastguard Worker %ext = zext <16 x i32> %ld to <16 x i64> 273*9880d681SAndroid Build Coastguard Worker store <16 x i64> %ext, <16 x i64> addrspace(1)* %out 274*9880d681SAndroid Build Coastguard Worker ret void 275*9880d681SAndroid Build Coastguard Worker} 276*9880d681SAndroid Build Coastguard Worker 277*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v32i32_to_v32i64: 278*9880d681SAndroid Build Coastguard Worker 279*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx16 280*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx16 281*9880d681SAndroid Build Coastguard Worker 282*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 283*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 284*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 285*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 286*9880d681SAndroid Build Coastguard Worker 287*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 288*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 289*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 290*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 291*9880d681SAndroid Build Coastguard Worker 292*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 293*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 294*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 295*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 296*9880d681SAndroid Build Coastguard Worker 297*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 298*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 299*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 300*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4 301*9880d681SAndroid Build Coastguard Worker 302*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 303*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 304*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 305*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 306*9880d681SAndroid Build Coastguard Worker 307*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 308*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 309*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 310*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 311*9880d681SAndroid Build Coastguard Worker 312*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 313*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 314*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 315*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 316*9880d681SAndroid Build Coastguard Worker 317*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 318*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 319*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 320*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4 321*9880d681SAndroid Build Coastguard Worker 322*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v32i32_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i32> addrspace(2)* %in) #0 { 323*9880d681SAndroid Build Coastguard Worker %ld = load <32 x i32>, <32 x i32> addrspace(2)* %in 324*9880d681SAndroid Build Coastguard Worker %ext = sext <32 x i32> %ld to <32 x i64> 325*9880d681SAndroid Build Coastguard Worker store <32 x i64> %ext, <32 x i64> addrspace(1)* %out 326*9880d681SAndroid Build Coastguard Worker ret void 327*9880d681SAndroid Build Coastguard Worker} 328*9880d681SAndroid Build Coastguard Worker 329*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v32i32_to_v32i64: 330*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx16 331*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx16 332*9880d681SAndroid Build Coastguard Worker 333*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 334*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 335*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 336*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 337*9880d681SAndroid Build Coastguard Worker 338*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 339*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 340*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 341*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 342*9880d681SAndroid Build Coastguard Worker 343*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 344*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 345*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 346*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 347*9880d681SAndroid Build Coastguard Worker 348*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 349*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 350*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 351*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4 352*9880d681SAndroid Build Coastguard Worker 353*9880d681SAndroid Build Coastguard Worker 354*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4 355*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4 356*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4 357*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4 358*9880d681SAndroid Build Coastguard Worker 359*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4 360*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4 361*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4 362*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4 363*9880d681SAndroid Build Coastguard Worker 364*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4 365*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4 366*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4 367*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4 368*9880d681SAndroid Build Coastguard Worker 369*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4 370*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4 371*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4 372*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4 373*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v32i32_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i32> addrspace(2)* %in) #0 { 374*9880d681SAndroid Build Coastguard Worker %ld = load <32 x i32>, <32 x i32> addrspace(2)* %in 375*9880d681SAndroid Build Coastguard Worker %ext = zext <32 x i32> %ld to <32 x i64> 376*9880d681SAndroid Build Coastguard Worker store <32 x i64> %ext, <32 x i64> addrspace(1)* %out 377*9880d681SAndroid Build Coastguard Worker ret void 378*9880d681SAndroid Build Coastguard Worker} 379*9880d681SAndroid Build Coastguard Worker 380*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind } 381