1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=FUNC %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=FUNC %s 3*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_load_i8: 7*9880d681SAndroid Build Coastguard Worker; GCN-NOT: s_wqm_b64 8*9880d681SAndroid Build Coastguard Worker; GCN: s_mov_b32 m0 9*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker; EG: LDS_UBYTE_READ_RET 12*9880d681SAndroid Build Coastguard Workerdefine void @local_load_i8(i8 addrspace(3)* %out, i8 addrspace(3)* %in) #0 { 13*9880d681SAndroid Build Coastguard Workerentry: 14*9880d681SAndroid Build Coastguard Worker %ld = load i8, i8 addrspace(3)* %in 15*9880d681SAndroid Build Coastguard Worker store i8 %ld, i8 addrspace(3)* %out 16*9880d681SAndroid Build Coastguard Worker ret void 17*9880d681SAndroid Build Coastguard Worker} 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_load_v2i8: 20*9880d681SAndroid Build Coastguard Worker; GCN-NOT: s_wqm_b64 21*9880d681SAndroid Build Coastguard Worker; GCN: s_mov_b32 m0 22*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u16 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Worker; EG: LDS_USHORT_READ_RET 25*9880d681SAndroid Build Coastguard Workerdefine void @local_load_v2i8(<2 x i8> addrspace(3)* %out, <2 x i8> addrspace(3)* %in) #0 { 26*9880d681SAndroid Build Coastguard Workerentry: 27*9880d681SAndroid Build Coastguard Worker %ld = load <2 x i8>, <2 x i8> addrspace(3)* %in 28*9880d681SAndroid Build Coastguard Worker store <2 x i8> %ld, <2 x i8> addrspace(3)* %out 29*9880d681SAndroid Build Coastguard Worker ret void 30*9880d681SAndroid Build Coastguard Worker} 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_load_v3i8: 33*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_b32 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Worker; EG: DS_READ_RET 36*9880d681SAndroid Build Coastguard Workerdefine void @local_load_v3i8(<3 x i8> addrspace(3)* %out, <3 x i8> addrspace(3)* %in) #0 { 37*9880d681SAndroid Build Coastguard Workerentry: 38*9880d681SAndroid Build Coastguard Worker %ld = load <3 x i8>, <3 x i8> addrspace(3)* %in 39*9880d681SAndroid Build Coastguard Worker store <3 x i8> %ld, <3 x i8> addrspace(3)* %out 40*9880d681SAndroid Build Coastguard Worker ret void 41*9880d681SAndroid Build Coastguard Worker} 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_load_v4i8: 44*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_b32 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Worker; EG: LDS_READ_RET 47*9880d681SAndroid Build Coastguard Workerdefine void @local_load_v4i8(<4 x i8> addrspace(3)* %out, <4 x i8> addrspace(3)* %in) #0 { 48*9880d681SAndroid Build Coastguard Workerentry: 49*9880d681SAndroid Build Coastguard Worker %ld = load <4 x i8>, <4 x i8> addrspace(3)* %in 50*9880d681SAndroid Build Coastguard Worker store <4 x i8> %ld, <4 x i8> addrspace(3)* %out 51*9880d681SAndroid Build Coastguard Worker ret void 52*9880d681SAndroid Build Coastguard Worker} 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_load_v8i8: 55*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_b64 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Worker; EG: LDS_READ_RET 58*9880d681SAndroid Build Coastguard Worker; EG: LDS_READ_RET 59*9880d681SAndroid Build Coastguard Workerdefine void @local_load_v8i8(<8 x i8> addrspace(3)* %out, <8 x i8> addrspace(3)* %in) #0 { 60*9880d681SAndroid Build Coastguard Workerentry: 61*9880d681SAndroid Build Coastguard Worker %ld = load <8 x i8>, <8 x i8> addrspace(3)* %in 62*9880d681SAndroid Build Coastguard Worker store <8 x i8> %ld, <8 x i8> addrspace(3)* %out 63*9880d681SAndroid Build Coastguard Worker ret void 64*9880d681SAndroid Build Coastguard Worker} 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_load_v16i8: 67*9880d681SAndroid Build Coastguard Worker; GCN: ds_read2_b64 v{{\[}}[[LO:[0-9]+]]:[[HI:[0-9]+]]{{\]}}, v{{[0-9]+}} offset0:1{{$}} 68*9880d681SAndroid Build Coastguard Worker; GCN: ds_write2_b64 v{{[0-9]+}}, v{{\[}}[[LO]]:{{[0-9]+}}], v[{{[0-9]+}}:[[HI]]{{\]}} offset0:1{{$}} 69*9880d681SAndroid Build Coastguard Worker 70*9880d681SAndroid Build Coastguard Worker; EG: LDS_READ_RET 71*9880d681SAndroid Build Coastguard Worker; EG: LDS_READ_RET 72*9880d681SAndroid Build Coastguard Worker; EG: LDS_READ_RET 73*9880d681SAndroid Build Coastguard Worker; EG: LDS_READ_RET 74*9880d681SAndroid Build Coastguard Workerdefine void @local_load_v16i8(<16 x i8> addrspace(3)* %out, <16 x i8> addrspace(3)* %in) #0 { 75*9880d681SAndroid Build Coastguard Workerentry: 76*9880d681SAndroid Build Coastguard Worker %ld = load <16 x i8>, <16 x i8> addrspace(3)* %in 77*9880d681SAndroid Build Coastguard Worker store <16 x i8> %ld, <16 x i8> addrspace(3)* %out 78*9880d681SAndroid Build Coastguard Worker ret void 79*9880d681SAndroid Build Coastguard Worker} 80*9880d681SAndroid Build Coastguard Worker 81*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_zextload_i8_to_i32: 82*9880d681SAndroid Build Coastguard Worker; GCN-NOT: s_wqm_b64 83*9880d681SAndroid Build Coastguard Worker; GCN: s_mov_b32 m0 84*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8 85*9880d681SAndroid Build Coastguard Worker 86*9880d681SAndroid Build Coastguard Worker; EG: LDS_UBYTE_READ_RET 87*9880d681SAndroid Build Coastguard Workerdefine void @local_zextload_i8_to_i32(i32 addrspace(3)* %out, i8 addrspace(3)* %in) #0 { 88*9880d681SAndroid Build Coastguard Worker %a = load i8, i8 addrspace(3)* %in 89*9880d681SAndroid Build Coastguard Worker %ext = zext i8 %a to i32 90*9880d681SAndroid Build Coastguard Worker store i32 %ext, i32 addrspace(3)* %out 91*9880d681SAndroid Build Coastguard Worker ret void 92*9880d681SAndroid Build Coastguard Worker} 93*9880d681SAndroid Build Coastguard Worker 94*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_sextload_i8_to_i32: 95*9880d681SAndroid Build Coastguard Worker; GCN-NOT: s_wqm_b64 96*9880d681SAndroid Build Coastguard Worker; GCN: s_mov_b32 m0 97*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_i8 98*9880d681SAndroid Build Coastguard Worker 99*9880d681SAndroid Build Coastguard Worker; EG: LDS_UBYTE_READ_RET 100*9880d681SAndroid Build Coastguard Worker; EG: BFE_INT 101*9880d681SAndroid Build Coastguard Workerdefine void @local_sextload_i8_to_i32(i32 addrspace(3)* %out, i8 addrspace(3)* %in) #0 { 102*9880d681SAndroid Build Coastguard Worker %ld = load i8, i8 addrspace(3)* %in 103*9880d681SAndroid Build Coastguard Worker %ext = sext i8 %ld to i32 104*9880d681SAndroid Build Coastguard Worker store i32 %ext, i32 addrspace(3)* %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: {{^}}local_zextload_v1i8_to_v1i32: 109*9880d681SAndroid Build Coastguard Workerdefine void @local_zextload_v1i8_to_v1i32(<1 x i32> addrspace(3)* %out, <1 x i8> addrspace(3)* %in) #0 { 110*9880d681SAndroid Build Coastguard Worker %load = load <1 x i8>, <1 x i8> addrspace(3)* %in 111*9880d681SAndroid Build Coastguard Worker %ext = zext <1 x i8> %load to <1 x i32> 112*9880d681SAndroid Build Coastguard Worker store <1 x i32> %ext, <1 x i32> addrspace(3)* %out 113*9880d681SAndroid Build Coastguard Worker ret void 114*9880d681SAndroid Build Coastguard Worker} 115*9880d681SAndroid Build Coastguard Worker 116*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_sextload_v1i8_to_v1i32: 117*9880d681SAndroid Build Coastguard Workerdefine void @local_sextload_v1i8_to_v1i32(<1 x i32> addrspace(3)* %out, <1 x i8> addrspace(3)* %in) #0 { 118*9880d681SAndroid Build Coastguard Worker %load = load <1 x i8>, <1 x i8> addrspace(3)* %in 119*9880d681SAndroid Build Coastguard Worker %ext = sext <1 x i8> %load to <1 x i32> 120*9880d681SAndroid Build Coastguard Worker store <1 x i32> %ext, <1 x i32> addrspace(3)* %out 121*9880d681SAndroid Build Coastguard Worker ret void 122*9880d681SAndroid Build Coastguard Worker} 123*9880d681SAndroid Build Coastguard Worker 124*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_zextload_v2i8_to_v2i32: 125*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u16 126*9880d681SAndroid Build Coastguard Worker 127*9880d681SAndroid Build Coastguard Worker; EG: LDS_UBYTE_READ_RET 128*9880d681SAndroid Build Coastguard Worker; EG: LDS_UBYTE_READ_RET 129*9880d681SAndroid Build Coastguard Workerdefine void @local_zextload_v2i8_to_v2i32(<2 x i32> addrspace(3)* %out, <2 x i8> addrspace(3)* %in) #0 { 130*9880d681SAndroid Build Coastguard Worker %load = load <2 x i8>, <2 x i8> addrspace(3)* %in 131*9880d681SAndroid Build Coastguard Worker %ext = zext <2 x i8> %load to <2 x i32> 132*9880d681SAndroid Build Coastguard Worker store <2 x i32> %ext, <2 x i32> addrspace(3)* %out 133*9880d681SAndroid Build Coastguard Worker ret void 134*9880d681SAndroid Build Coastguard Worker} 135*9880d681SAndroid Build Coastguard Worker 136*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_sextload_v2i8_to_v2i32: 137*9880d681SAndroid Build Coastguard Worker; GCN-NOT: s_wqm_b64 138*9880d681SAndroid Build Coastguard Worker; GCN: s_mov_b32 m0 139*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u16 140*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_bfe_i32 v{{[0-9]+}}, v{{[0-9]+}}, 8, 8 141*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_bfe_i32 v{{[0-9]+}}, v{{[0-9]+}}, 0, 8 142*9880d681SAndroid Build Coastguard Worker 143*9880d681SAndroid Build Coastguard Worker; EG-DAG: LDS_UBYTE_READ_RET 144*9880d681SAndroid Build Coastguard Worker; EG-DAG: LDS_UBYTE_READ_RET 145*9880d681SAndroid Build Coastguard Worker; EG-DAG: BFE_INT 146*9880d681SAndroid Build Coastguard Worker; EG-DAG: BFE_INT 147*9880d681SAndroid Build Coastguard Workerdefine void @local_sextload_v2i8_to_v2i32(<2 x i32> addrspace(3)* %out, <2 x i8> addrspace(3)* %in) #0 { 148*9880d681SAndroid Build Coastguard Worker %load = load <2 x i8>, <2 x i8> addrspace(3)* %in 149*9880d681SAndroid Build Coastguard Worker %ext = sext <2 x i8> %load to <2 x i32> 150*9880d681SAndroid Build Coastguard Worker store <2 x i32> %ext, <2 x i32> addrspace(3)* %out 151*9880d681SAndroid Build Coastguard Worker ret void 152*9880d681SAndroid Build Coastguard Worker} 153*9880d681SAndroid Build Coastguard Worker 154*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_zextload_v3i8_to_v3i32: 155*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_b32 156*9880d681SAndroid Build Coastguard Worker 157*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_bfe_u32 v{{[0-9]+}}, v{{[0-9]+}}, 8, 8 158*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_bfe_u32 v{{[0-9]+}}, v{{[0-9]+}}, 16, 8 159*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_and_b32_e32 v{{[0-9]+}}, 0xff, 160*9880d681SAndroid Build Coastguard Workerdefine void @local_zextload_v3i8_to_v3i32(<3 x i32> addrspace(3)* %out, <3 x i8> addrspace(3)* %in) #0 { 161*9880d681SAndroid Build Coastguard Workerentry: 162*9880d681SAndroid Build Coastguard Worker %ld = load <3 x i8>, <3 x i8> addrspace(3)* %in 163*9880d681SAndroid Build Coastguard Worker %ext = zext <3 x i8> %ld to <3 x i32> 164*9880d681SAndroid Build Coastguard Worker store <3 x i32> %ext, <3 x i32> addrspace(3)* %out 165*9880d681SAndroid Build Coastguard Worker ret void 166*9880d681SAndroid Build Coastguard Worker} 167*9880d681SAndroid Build Coastguard Worker 168*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_sextload_v3i8_to_v3i32: 169*9880d681SAndroid Build Coastguard Worker; GCN-NOT: s_wqm_b64 170*9880d681SAndroid Build Coastguard Worker; GCN: s_mov_b32 m0 171*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_b32 172*9880d681SAndroid Build Coastguard Worker 173*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_bfe_i32 174*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_bfe_i32 175*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_bfe_i32 176*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_bfe_i32 177*9880d681SAndroid Build Coastguard Worker 178*9880d681SAndroid Build Coastguard Worker; GCN-DAG: ds_write_b64 179*9880d681SAndroid Build Coastguard Worker; GCN-DAG: ds_write_b32 180*9880d681SAndroid Build Coastguard Worker 181*9880d681SAndroid Build Coastguard Workerdefine void @local_sextload_v3i8_to_v3i32(<3 x i32> addrspace(3)* %out, <3 x i8> addrspace(3)* %in) #0 { 182*9880d681SAndroid Build Coastguard Workerentry: 183*9880d681SAndroid Build Coastguard Worker %ld = load <3 x i8>, <3 x i8> addrspace(3)* %in 184*9880d681SAndroid Build Coastguard Worker %ext = sext <3 x i8> %ld to <3 x i32> 185*9880d681SAndroid Build Coastguard Worker store <3 x i32> %ext, <3 x i32> addrspace(3)* %out 186*9880d681SAndroid Build Coastguard Worker ret void 187*9880d681SAndroid Build Coastguard Worker} 188*9880d681SAndroid Build Coastguard Worker 189*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_zextload_v4i8_to_v4i32: 190*9880d681SAndroid Build Coastguard Worker; GCN-NOT: s_wqm_b64 191*9880d681SAndroid Build Coastguard Worker; GCN: s_mov_b32 m0 192*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_b32 193*9880d681SAndroid Build Coastguard Worker 194*9880d681SAndroid Build Coastguard Worker; EG: LDS_UBYTE_READ_RET 195*9880d681SAndroid Build Coastguard Worker; EG: LDS_UBYTE_READ_RET 196*9880d681SAndroid Build Coastguard Worker; EG: LDS_UBYTE_READ_RET 197*9880d681SAndroid Build Coastguard Worker; EG: LDS_UBYTE_READ_RET 198*9880d681SAndroid Build Coastguard Workerdefine void @local_zextload_v4i8_to_v4i32(<4 x i32> addrspace(3)* %out, <4 x i8> addrspace(3)* %in) #0 { 199*9880d681SAndroid Build Coastguard Worker %load = load <4 x i8>, <4 x i8> addrspace(3)* %in 200*9880d681SAndroid Build Coastguard Worker %ext = zext <4 x i8> %load to <4 x i32> 201*9880d681SAndroid Build Coastguard Worker store <4 x i32> %ext, <4 x i32> addrspace(3)* %out 202*9880d681SAndroid Build Coastguard Worker ret void 203*9880d681SAndroid Build Coastguard Worker} 204*9880d681SAndroid Build Coastguard Worker 205*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_sextload_v4i8_to_v4i32: 206*9880d681SAndroid Build Coastguard Worker; GCN-NOT: s_wqm_b64 207*9880d681SAndroid Build Coastguard Worker; GCN: s_mov_b32 m0 208*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_b32 209*9880d681SAndroid Build Coastguard Worker 210*9880d681SAndroid Build Coastguard Worker; EG-DAG: LDS_UBYTE_READ_RET 211*9880d681SAndroid Build Coastguard Worker; EG-DAG: LDS_UBYTE_READ_RET 212*9880d681SAndroid Build Coastguard Worker; EG-DAG: LDS_UBYTE_READ_RET 213*9880d681SAndroid Build Coastguard Worker; EG-DAG: LDS_UBYTE_READ_RET 214*9880d681SAndroid Build Coastguard Worker; EG-DAG: BFE_INT 215*9880d681SAndroid Build Coastguard Worker; EG-DAG: BFE_INT 216*9880d681SAndroid Build Coastguard Worker; EG-DAG: BFE_INT 217*9880d681SAndroid Build Coastguard Worker; EG-DAG: BFE_INT 218*9880d681SAndroid Build Coastguard Workerdefine void @local_sextload_v4i8_to_v4i32(<4 x i32> addrspace(3)* %out, <4 x i8> addrspace(3)* %in) #0 { 219*9880d681SAndroid Build Coastguard Worker %load = load <4 x i8>, <4 x i8> addrspace(3)* %in 220*9880d681SAndroid Build Coastguard Worker %ext = sext <4 x i8> %load to <4 x i32> 221*9880d681SAndroid Build Coastguard Worker store <4 x i32> %ext, <4 x i32> addrspace(3)* %out 222*9880d681SAndroid Build Coastguard Worker ret void 223*9880d681SAndroid Build Coastguard Worker} 224*9880d681SAndroid Build Coastguard Worker 225*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_zextload_v8i8_to_v8i32: 226*9880d681SAndroid Build Coastguard Workerdefine void @local_zextload_v8i8_to_v8i32(<8 x i32> addrspace(3)* %out, <8 x i8> addrspace(3)* %in) #0 { 227*9880d681SAndroid Build Coastguard Worker %load = load <8 x i8>, <8 x i8> addrspace(3)* %in 228*9880d681SAndroid Build Coastguard Worker %ext = zext <8 x i8> %load to <8 x i32> 229*9880d681SAndroid Build Coastguard Worker store <8 x i32> %ext, <8 x i32> addrspace(3)* %out 230*9880d681SAndroid Build Coastguard Worker ret void 231*9880d681SAndroid Build Coastguard Worker} 232*9880d681SAndroid Build Coastguard Worker 233*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_sextload_v8i8_to_v8i32: 234*9880d681SAndroid Build Coastguard Workerdefine void @local_sextload_v8i8_to_v8i32(<8 x i32> addrspace(3)* %out, <8 x i8> addrspace(3)* %in) #0 { 235*9880d681SAndroid Build Coastguard Worker %load = load <8 x i8>, <8 x i8> addrspace(3)* %in 236*9880d681SAndroid Build Coastguard Worker %ext = sext <8 x i8> %load to <8 x i32> 237*9880d681SAndroid Build Coastguard Worker store <8 x i32> %ext, <8 x i32> addrspace(3)* %out 238*9880d681SAndroid Build Coastguard Worker ret void 239*9880d681SAndroid Build Coastguard Worker} 240*9880d681SAndroid Build Coastguard Worker 241*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_zextload_v16i8_to_v16i32: 242*9880d681SAndroid Build Coastguard Workerdefine void @local_zextload_v16i8_to_v16i32(<16 x i32> addrspace(3)* %out, <16 x i8> addrspace(3)* %in) #0 { 243*9880d681SAndroid Build Coastguard Worker %load = load <16 x i8>, <16 x i8> addrspace(3)* %in 244*9880d681SAndroid Build Coastguard Worker %ext = zext <16 x i8> %load to <16 x i32> 245*9880d681SAndroid Build Coastguard Worker store <16 x i32> %ext, <16 x i32> addrspace(3)* %out 246*9880d681SAndroid Build Coastguard Worker ret void 247*9880d681SAndroid Build Coastguard Worker} 248*9880d681SAndroid Build Coastguard Worker 249*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_sextload_v16i8_to_v16i32: 250*9880d681SAndroid Build Coastguard Workerdefine void @local_sextload_v16i8_to_v16i32(<16 x i32> addrspace(3)* %out, <16 x i8> addrspace(3)* %in) #0 { 251*9880d681SAndroid Build Coastguard Worker %load = load <16 x i8>, <16 x i8> addrspace(3)* %in 252*9880d681SAndroid Build Coastguard Worker %ext = sext <16 x i8> %load to <16 x i32> 253*9880d681SAndroid Build Coastguard Worker store <16 x i32> %ext, <16 x i32> addrspace(3)* %out 254*9880d681SAndroid Build Coastguard Worker ret void 255*9880d681SAndroid Build Coastguard Worker} 256*9880d681SAndroid Build Coastguard Worker 257*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_zextload_v32i8_to_v32i32: 258*9880d681SAndroid Build Coastguard Workerdefine void @local_zextload_v32i8_to_v32i32(<32 x i32> addrspace(3)* %out, <32 x i8> addrspace(3)* %in) #0 { 259*9880d681SAndroid Build Coastguard Worker %load = load <32 x i8>, <32 x i8> addrspace(3)* %in 260*9880d681SAndroid Build Coastguard Worker %ext = zext <32 x i8> %load to <32 x i32> 261*9880d681SAndroid Build Coastguard Worker store <32 x i32> %ext, <32 x i32> addrspace(3)* %out 262*9880d681SAndroid Build Coastguard Worker ret void 263*9880d681SAndroid Build Coastguard Worker} 264*9880d681SAndroid Build Coastguard Worker 265*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_sextload_v32i8_to_v32i32: 266*9880d681SAndroid Build Coastguard Workerdefine void @local_sextload_v32i8_to_v32i32(<32 x i32> addrspace(3)* %out, <32 x i8> addrspace(3)* %in) #0 { 267*9880d681SAndroid Build Coastguard Worker %load = load <32 x i8>, <32 x i8> addrspace(3)* %in 268*9880d681SAndroid Build Coastguard Worker %ext = sext <32 x i8> %load to <32 x i32> 269*9880d681SAndroid Build Coastguard Worker store <32 x i32> %ext, <32 x i32> addrspace(3)* %out 270*9880d681SAndroid Build Coastguard Worker ret void 271*9880d681SAndroid Build Coastguard Worker} 272*9880d681SAndroid Build Coastguard Worker 273*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_zextload_v64i8_to_v64i32: 274*9880d681SAndroid Build Coastguard Workerdefine void @local_zextload_v64i8_to_v64i32(<64 x i32> addrspace(3)* %out, <64 x i8> addrspace(3)* %in) #0 { 275*9880d681SAndroid Build Coastguard Worker %load = load <64 x i8>, <64 x i8> addrspace(3)* %in 276*9880d681SAndroid Build Coastguard Worker %ext = zext <64 x i8> %load to <64 x i32> 277*9880d681SAndroid Build Coastguard Worker store <64 x i32> %ext, <64 x i32> addrspace(3)* %out 278*9880d681SAndroid Build Coastguard Worker ret void 279*9880d681SAndroid Build Coastguard Worker} 280*9880d681SAndroid Build Coastguard Worker 281*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_sextload_v64i8_to_v64i32: 282*9880d681SAndroid Build Coastguard Workerdefine void @local_sextload_v64i8_to_v64i32(<64 x i32> addrspace(3)* %out, <64 x i8> addrspace(3)* %in) #0 { 283*9880d681SAndroid Build Coastguard Worker %load = load <64 x i8>, <64 x i8> addrspace(3)* %in 284*9880d681SAndroid Build Coastguard Worker %ext = sext <64 x i8> %load to <64 x i32> 285*9880d681SAndroid Build Coastguard Worker store <64 x i32> %ext, <64 x i32> addrspace(3)* %out 286*9880d681SAndroid Build Coastguard Worker ret void 287*9880d681SAndroid Build Coastguard Worker} 288*9880d681SAndroid Build Coastguard Worker 289*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_zextload_i8_to_i64: 290*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_mov_b32_e32 v[[HI:[0-9]+]], 0{{$}} 291*9880d681SAndroid Build Coastguard Worker; GCN-DAG: ds_read_u8 v[[LO:[0-9]+]], 292*9880d681SAndroid Build Coastguard Worker; GCN: ds_write_b64 v{{[0-9]+}}, v{{\[}}[[LO]]:[[HI]]] 293*9880d681SAndroid Build Coastguard Workerdefine void @local_zextload_i8_to_i64(i64 addrspace(3)* %out, i8 addrspace(3)* %in) #0 { 294*9880d681SAndroid Build Coastguard Worker %a = load i8, i8 addrspace(3)* %in 295*9880d681SAndroid Build Coastguard Worker %ext = zext i8 %a to i64 296*9880d681SAndroid Build Coastguard Worker store i64 %ext, i64 addrspace(3)* %out 297*9880d681SAndroid Build Coastguard Worker ret void 298*9880d681SAndroid Build Coastguard Worker} 299*9880d681SAndroid Build Coastguard Worker 300*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_sextload_i8_to_i64: 301*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_i8 v[[LO:[0-9]+]], 302*9880d681SAndroid Build Coastguard Worker; GCN: v_ashrrev_i32_e32 v[[HI:[0-9]+]], 31, v[[LO]] 303*9880d681SAndroid Build Coastguard Worker 304*9880d681SAndroid Build Coastguard Worker; GCN: ds_write_b64 v{{[0-9]+}}, v{{\[}}[[LO]]:[[HI]]{{\]}} 305*9880d681SAndroid Build Coastguard Workerdefine void @local_sextload_i8_to_i64(i64 addrspace(3)* %out, i8 addrspace(3)* %in) #0 { 306*9880d681SAndroid Build Coastguard Worker %a = load i8, i8 addrspace(3)* %in 307*9880d681SAndroid Build Coastguard Worker %ext = sext i8 %a to i64 308*9880d681SAndroid Build Coastguard Worker store i64 %ext, i64 addrspace(3)* %out 309*9880d681SAndroid Build Coastguard Worker ret void 310*9880d681SAndroid Build Coastguard Worker} 311*9880d681SAndroid Build Coastguard Worker 312*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_zextload_v1i8_to_v1i64: 313*9880d681SAndroid Build Coastguard Workerdefine void @local_zextload_v1i8_to_v1i64(<1 x i64> addrspace(3)* %out, <1 x i8> addrspace(3)* %in) #0 { 314*9880d681SAndroid Build Coastguard Worker %load = load <1 x i8>, <1 x i8> addrspace(3)* %in 315*9880d681SAndroid Build Coastguard Worker %ext = zext <1 x i8> %load to <1 x i64> 316*9880d681SAndroid Build Coastguard Worker store <1 x i64> %ext, <1 x i64> addrspace(3)* %out 317*9880d681SAndroid Build Coastguard Worker ret void 318*9880d681SAndroid Build Coastguard Worker} 319*9880d681SAndroid Build Coastguard Worker 320*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_sextload_v1i8_to_v1i64: 321*9880d681SAndroid Build Coastguard Workerdefine void @local_sextload_v1i8_to_v1i64(<1 x i64> addrspace(3)* %out, <1 x i8> addrspace(3)* %in) #0 { 322*9880d681SAndroid Build Coastguard Worker %load = load <1 x i8>, <1 x i8> addrspace(3)* %in 323*9880d681SAndroid Build Coastguard Worker %ext = sext <1 x i8> %load to <1 x i64> 324*9880d681SAndroid Build Coastguard Worker store <1 x i64> %ext, <1 x i64> addrspace(3)* %out 325*9880d681SAndroid Build Coastguard Worker ret void 326*9880d681SAndroid Build Coastguard Worker} 327*9880d681SAndroid Build Coastguard Worker 328*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_zextload_v2i8_to_v2i64: 329*9880d681SAndroid Build Coastguard Workerdefine void @local_zextload_v2i8_to_v2i64(<2 x i64> addrspace(3)* %out, <2 x i8> addrspace(3)* %in) #0 { 330*9880d681SAndroid Build Coastguard Worker %load = load <2 x i8>, <2 x i8> addrspace(3)* %in 331*9880d681SAndroid Build Coastguard Worker %ext = zext <2 x i8> %load to <2 x i64> 332*9880d681SAndroid Build Coastguard Worker store <2 x i64> %ext, <2 x i64> addrspace(3)* %out 333*9880d681SAndroid Build Coastguard Worker ret void 334*9880d681SAndroid Build Coastguard Worker} 335*9880d681SAndroid Build Coastguard Worker 336*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_sextload_v2i8_to_v2i64: 337*9880d681SAndroid Build Coastguard Workerdefine void @local_sextload_v2i8_to_v2i64(<2 x i64> addrspace(3)* %out, <2 x i8> addrspace(3)* %in) #0 { 338*9880d681SAndroid Build Coastguard Worker %load = load <2 x i8>, <2 x i8> addrspace(3)* %in 339*9880d681SAndroid Build Coastguard Worker %ext = sext <2 x i8> %load to <2 x i64> 340*9880d681SAndroid Build Coastguard Worker store <2 x i64> %ext, <2 x i64> addrspace(3)* %out 341*9880d681SAndroid Build Coastguard Worker ret void 342*9880d681SAndroid Build Coastguard Worker} 343*9880d681SAndroid Build Coastguard Worker 344*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_zextload_v4i8_to_v4i64: 345*9880d681SAndroid Build Coastguard Workerdefine void @local_zextload_v4i8_to_v4i64(<4 x i64> addrspace(3)* %out, <4 x i8> addrspace(3)* %in) #0 { 346*9880d681SAndroid Build Coastguard Worker %load = load <4 x i8>, <4 x i8> addrspace(3)* %in 347*9880d681SAndroid Build Coastguard Worker %ext = zext <4 x i8> %load to <4 x i64> 348*9880d681SAndroid Build Coastguard Worker store <4 x i64> %ext, <4 x i64> addrspace(3)* %out 349*9880d681SAndroid Build Coastguard Worker ret void 350*9880d681SAndroid Build Coastguard Worker} 351*9880d681SAndroid Build Coastguard Worker 352*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_sextload_v4i8_to_v4i64: 353*9880d681SAndroid Build Coastguard Workerdefine void @local_sextload_v4i8_to_v4i64(<4 x i64> addrspace(3)* %out, <4 x i8> addrspace(3)* %in) #0 { 354*9880d681SAndroid Build Coastguard Worker %load = load <4 x i8>, <4 x i8> addrspace(3)* %in 355*9880d681SAndroid Build Coastguard Worker %ext = sext <4 x i8> %load to <4 x i64> 356*9880d681SAndroid Build Coastguard Worker store <4 x i64> %ext, <4 x i64> addrspace(3)* %out 357*9880d681SAndroid Build Coastguard Worker ret void 358*9880d681SAndroid Build Coastguard Worker} 359*9880d681SAndroid Build Coastguard Worker 360*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_zextload_v8i8_to_v8i64: 361*9880d681SAndroid Build Coastguard Workerdefine void @local_zextload_v8i8_to_v8i64(<8 x i64> addrspace(3)* %out, <8 x i8> addrspace(3)* %in) #0 { 362*9880d681SAndroid Build Coastguard Worker %load = load <8 x i8>, <8 x i8> addrspace(3)* %in 363*9880d681SAndroid Build Coastguard Worker %ext = zext <8 x i8> %load to <8 x i64> 364*9880d681SAndroid Build Coastguard Worker store <8 x i64> %ext, <8 x i64> addrspace(3)* %out 365*9880d681SAndroid Build Coastguard Worker ret void 366*9880d681SAndroid Build Coastguard Worker} 367*9880d681SAndroid Build Coastguard Worker 368*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_sextload_v8i8_to_v8i64: 369*9880d681SAndroid Build Coastguard Workerdefine void @local_sextload_v8i8_to_v8i64(<8 x i64> addrspace(3)* %out, <8 x i8> addrspace(3)* %in) #0 { 370*9880d681SAndroid Build Coastguard Worker %load = load <8 x i8>, <8 x i8> addrspace(3)* %in 371*9880d681SAndroid Build Coastguard Worker %ext = sext <8 x i8> %load to <8 x i64> 372*9880d681SAndroid Build Coastguard Worker store <8 x i64> %ext, <8 x i64> addrspace(3)* %out 373*9880d681SAndroid Build Coastguard Worker ret void 374*9880d681SAndroid Build Coastguard Worker} 375*9880d681SAndroid Build Coastguard Worker 376*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_zextload_v16i8_to_v16i64: 377*9880d681SAndroid Build Coastguard Workerdefine void @local_zextload_v16i8_to_v16i64(<16 x i64> addrspace(3)* %out, <16 x i8> addrspace(3)* %in) #0 { 378*9880d681SAndroid Build Coastguard Worker %load = load <16 x i8>, <16 x i8> addrspace(3)* %in 379*9880d681SAndroid Build Coastguard Worker %ext = zext <16 x i8> %load to <16 x i64> 380*9880d681SAndroid Build Coastguard Worker store <16 x i64> %ext, <16 x i64> addrspace(3)* %out 381*9880d681SAndroid Build Coastguard Worker ret void 382*9880d681SAndroid Build Coastguard Worker} 383*9880d681SAndroid Build Coastguard Worker 384*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_sextload_v16i8_to_v16i64: 385*9880d681SAndroid Build Coastguard Workerdefine void @local_sextload_v16i8_to_v16i64(<16 x i64> addrspace(3)* %out, <16 x i8> addrspace(3)* %in) #0 { 386*9880d681SAndroid Build Coastguard Worker %load = load <16 x i8>, <16 x i8> addrspace(3)* %in 387*9880d681SAndroid Build Coastguard Worker %ext = sext <16 x i8> %load to <16 x i64> 388*9880d681SAndroid Build Coastguard Worker store <16 x i64> %ext, <16 x i64> addrspace(3)* %out 389*9880d681SAndroid Build Coastguard Worker ret void 390*9880d681SAndroid Build Coastguard Worker} 391*9880d681SAndroid Build Coastguard Worker 392*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_zextload_v32i8_to_v32i64: 393*9880d681SAndroid Build Coastguard Workerdefine void @local_zextload_v32i8_to_v32i64(<32 x i64> addrspace(3)* %out, <32 x i8> addrspace(3)* %in) #0 { 394*9880d681SAndroid Build Coastguard Worker %load = load <32 x i8>, <32 x i8> addrspace(3)* %in 395*9880d681SAndroid Build Coastguard Worker %ext = zext <32 x i8> %load to <32 x i64> 396*9880d681SAndroid Build Coastguard Worker store <32 x i64> %ext, <32 x i64> addrspace(3)* %out 397*9880d681SAndroid Build Coastguard Worker ret void 398*9880d681SAndroid Build Coastguard Worker} 399*9880d681SAndroid Build Coastguard Worker 400*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_sextload_v32i8_to_v32i64: 401*9880d681SAndroid Build Coastguard Workerdefine void @local_sextload_v32i8_to_v32i64(<32 x i64> addrspace(3)* %out, <32 x i8> addrspace(3)* %in) #0 { 402*9880d681SAndroid Build Coastguard Worker %load = load <32 x i8>, <32 x i8> addrspace(3)* %in 403*9880d681SAndroid Build Coastguard Worker %ext = sext <32 x i8> %load to <32 x i64> 404*9880d681SAndroid Build Coastguard Worker store <32 x i64> %ext, <32 x i64> addrspace(3)* %out 405*9880d681SAndroid Build Coastguard Worker ret void 406*9880d681SAndroid Build Coastguard Worker} 407*9880d681SAndroid Build Coastguard Worker 408*9880d681SAndroid Build Coastguard Worker; XFUNC-LABEL: {{^}}local_zextload_v64i8_to_v64i64: 409*9880d681SAndroid Build Coastguard Worker; define void @local_zextload_v64i8_to_v64i64(<64 x i64> addrspace(3)* %out, <64 x i8> addrspace(3)* %in) #0 { 410*9880d681SAndroid Build Coastguard Worker; %load = load <64 x i8>, <64 x i8> addrspace(3)* %in 411*9880d681SAndroid Build Coastguard Worker; %ext = zext <64 x i8> %load to <64 x i64> 412*9880d681SAndroid Build Coastguard Worker; store <64 x i64> %ext, <64 x i64> addrspace(3)* %out 413*9880d681SAndroid Build Coastguard Worker; ret void 414*9880d681SAndroid Build Coastguard Worker; } 415*9880d681SAndroid Build Coastguard Worker 416*9880d681SAndroid Build Coastguard Worker; XFUNC-LABEL: {{^}}local_sextload_v64i8_to_v64i64: 417*9880d681SAndroid Build Coastguard Worker; define void @local_sextload_v64i8_to_v64i64(<64 x i64> addrspace(3)* %out, <64 x i8> addrspace(3)* %in) #0 { 418*9880d681SAndroid Build Coastguard Worker; %load = load <64 x i8>, <64 x i8> addrspace(3)* %in 419*9880d681SAndroid Build Coastguard Worker; %ext = sext <64 x i8> %load to <64 x i64> 420*9880d681SAndroid Build Coastguard Worker; store <64 x i64> %ext, <64 x i64> addrspace(3)* %out 421*9880d681SAndroid Build Coastguard Worker; ret void 422*9880d681SAndroid Build Coastguard Worker; } 423*9880d681SAndroid Build Coastguard Worker 424*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_zextload_i8_to_i16: 425*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8 v[[VAL:[0-9]+]], 426*9880d681SAndroid Build Coastguard Worker; GCN: ds_write_b16 v[[VAL:[0-9]+]] 427*9880d681SAndroid Build Coastguard Workerdefine void @local_zextload_i8_to_i16(i16 addrspace(3)* %out, i8 addrspace(3)* %in) #0 { 428*9880d681SAndroid Build Coastguard Worker %a = load i8, i8 addrspace(3)* %in 429*9880d681SAndroid Build Coastguard Worker %ext = zext i8 %a to i16 430*9880d681SAndroid Build Coastguard Worker store i16 %ext, i16 addrspace(3)* %out 431*9880d681SAndroid Build Coastguard Worker ret void 432*9880d681SAndroid Build Coastguard Worker} 433*9880d681SAndroid Build Coastguard Worker 434*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_sextload_i8_to_i16: 435*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_i8 v[[VAL:[0-9]+]], 436*9880d681SAndroid Build Coastguard Worker; GCN: ds_write_b16 v{{[0-9]+}}, v[[VAL]] 437*9880d681SAndroid Build Coastguard Workerdefine void @local_sextload_i8_to_i16(i16 addrspace(3)* %out, i8 addrspace(3)* %in) #0 { 438*9880d681SAndroid Build Coastguard Worker %a = load i8, i8 addrspace(3)* %in 439*9880d681SAndroid Build Coastguard Worker %ext = sext i8 %a to i16 440*9880d681SAndroid Build Coastguard Worker store i16 %ext, i16 addrspace(3)* %out 441*9880d681SAndroid Build Coastguard Worker ret void 442*9880d681SAndroid Build Coastguard Worker} 443*9880d681SAndroid Build Coastguard Worker 444*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_zextload_v1i8_to_v1i16: 445*9880d681SAndroid Build Coastguard Workerdefine void @local_zextload_v1i8_to_v1i16(<1 x i16> addrspace(3)* %out, <1 x i8> addrspace(3)* %in) #0 { 446*9880d681SAndroid Build Coastguard Worker %load = load <1 x i8>, <1 x i8> addrspace(3)* %in 447*9880d681SAndroid Build Coastguard Worker %ext = zext <1 x i8> %load to <1 x i16> 448*9880d681SAndroid Build Coastguard Worker store <1 x i16> %ext, <1 x i16> addrspace(3)* %out 449*9880d681SAndroid Build Coastguard Worker ret void 450*9880d681SAndroid Build Coastguard Worker} 451*9880d681SAndroid Build Coastguard Worker 452*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_sextload_v1i8_to_v1i16: 453*9880d681SAndroid Build Coastguard Workerdefine void @local_sextload_v1i8_to_v1i16(<1 x i16> addrspace(3)* %out, <1 x i8> addrspace(3)* %in) #0 { 454*9880d681SAndroid Build Coastguard Worker %load = load <1 x i8>, <1 x i8> addrspace(3)* %in 455*9880d681SAndroid Build Coastguard Worker %ext = sext <1 x i8> %load to <1 x i16> 456*9880d681SAndroid Build Coastguard Worker store <1 x i16> %ext, <1 x i16> addrspace(3)* %out 457*9880d681SAndroid Build Coastguard Worker ret void 458*9880d681SAndroid Build Coastguard Worker} 459*9880d681SAndroid Build Coastguard Worker 460*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_zextload_v2i8_to_v2i16: 461*9880d681SAndroid Build Coastguard Workerdefine void @local_zextload_v2i8_to_v2i16(<2 x i16> addrspace(3)* %out, <2 x i8> addrspace(3)* %in) #0 { 462*9880d681SAndroid Build Coastguard Worker %load = load <2 x i8>, <2 x i8> addrspace(3)* %in 463*9880d681SAndroid Build Coastguard Worker %ext = zext <2 x i8> %load to <2 x i16> 464*9880d681SAndroid Build Coastguard Worker store <2 x i16> %ext, <2 x i16> addrspace(3)* %out 465*9880d681SAndroid Build Coastguard Worker ret void 466*9880d681SAndroid Build Coastguard Worker} 467*9880d681SAndroid Build Coastguard Worker 468*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_sextload_v2i8_to_v2i16: 469*9880d681SAndroid Build Coastguard Workerdefine void @local_sextload_v2i8_to_v2i16(<2 x i16> addrspace(3)* %out, <2 x i8> addrspace(3)* %in) #0 { 470*9880d681SAndroid Build Coastguard Worker %load = load <2 x i8>, <2 x i8> addrspace(3)* %in 471*9880d681SAndroid Build Coastguard Worker %ext = sext <2 x i8> %load to <2 x i16> 472*9880d681SAndroid Build Coastguard Worker store <2 x i16> %ext, <2 x i16> addrspace(3)* %out 473*9880d681SAndroid Build Coastguard Worker ret void 474*9880d681SAndroid Build Coastguard Worker} 475*9880d681SAndroid Build Coastguard Worker 476*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_zextload_v4i8_to_v4i16: 477*9880d681SAndroid Build Coastguard Workerdefine void @local_zextload_v4i8_to_v4i16(<4 x i16> addrspace(3)* %out, <4 x i8> addrspace(3)* %in) #0 { 478*9880d681SAndroid Build Coastguard Worker %load = load <4 x i8>, <4 x i8> addrspace(3)* %in 479*9880d681SAndroid Build Coastguard Worker %ext = zext <4 x i8> %load to <4 x i16> 480*9880d681SAndroid Build Coastguard Worker store <4 x i16> %ext, <4 x i16> addrspace(3)* %out 481*9880d681SAndroid Build Coastguard Worker ret void 482*9880d681SAndroid Build Coastguard Worker} 483*9880d681SAndroid Build Coastguard Worker 484*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_sextload_v4i8_to_v4i16: 485*9880d681SAndroid Build Coastguard Workerdefine void @local_sextload_v4i8_to_v4i16(<4 x i16> addrspace(3)* %out, <4 x i8> addrspace(3)* %in) #0 { 486*9880d681SAndroid Build Coastguard Worker %load = load <4 x i8>, <4 x i8> addrspace(3)* %in 487*9880d681SAndroid Build Coastguard Worker %ext = sext <4 x i8> %load to <4 x i16> 488*9880d681SAndroid Build Coastguard Worker store <4 x i16> %ext, <4 x i16> addrspace(3)* %out 489*9880d681SAndroid Build Coastguard Worker ret void 490*9880d681SAndroid Build Coastguard Worker} 491*9880d681SAndroid Build Coastguard Worker 492*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_zextload_v8i8_to_v8i16: 493*9880d681SAndroid Build Coastguard Workerdefine void @local_zextload_v8i8_to_v8i16(<8 x i16> addrspace(3)* %out, <8 x i8> addrspace(3)* %in) #0 { 494*9880d681SAndroid Build Coastguard Worker %load = load <8 x i8>, <8 x i8> addrspace(3)* %in 495*9880d681SAndroid Build Coastguard Worker %ext = zext <8 x i8> %load to <8 x i16> 496*9880d681SAndroid Build Coastguard Worker store <8 x i16> %ext, <8 x i16> addrspace(3)* %out 497*9880d681SAndroid Build Coastguard Worker ret void 498*9880d681SAndroid Build Coastguard Worker} 499*9880d681SAndroid Build Coastguard Worker 500*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_sextload_v8i8_to_v8i16: 501*9880d681SAndroid Build Coastguard Workerdefine void @local_sextload_v8i8_to_v8i16(<8 x i16> addrspace(3)* %out, <8 x i8> addrspace(3)* %in) #0 { 502*9880d681SAndroid Build Coastguard Worker %load = load <8 x i8>, <8 x i8> addrspace(3)* %in 503*9880d681SAndroid Build Coastguard Worker %ext = sext <8 x i8> %load to <8 x i16> 504*9880d681SAndroid Build Coastguard Worker store <8 x i16> %ext, <8 x i16> addrspace(3)* %out 505*9880d681SAndroid Build Coastguard Worker ret void 506*9880d681SAndroid Build Coastguard Worker} 507*9880d681SAndroid Build Coastguard Worker 508*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_zextload_v16i8_to_v16i16: 509*9880d681SAndroid Build Coastguard Workerdefine void @local_zextload_v16i8_to_v16i16(<16 x i16> addrspace(3)* %out, <16 x i8> addrspace(3)* %in) #0 { 510*9880d681SAndroid Build Coastguard Worker %load = load <16 x i8>, <16 x i8> addrspace(3)* %in 511*9880d681SAndroid Build Coastguard Worker %ext = zext <16 x i8> %load to <16 x i16> 512*9880d681SAndroid Build Coastguard Worker store <16 x i16> %ext, <16 x i16> addrspace(3)* %out 513*9880d681SAndroid Build Coastguard Worker ret void 514*9880d681SAndroid Build Coastguard Worker} 515*9880d681SAndroid Build Coastguard Worker 516*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_sextload_v16i8_to_v16i16: 517*9880d681SAndroid Build Coastguard Workerdefine void @local_sextload_v16i8_to_v16i16(<16 x i16> addrspace(3)* %out, <16 x i8> addrspace(3)* %in) #0 { 518*9880d681SAndroid Build Coastguard Worker %load = load <16 x i8>, <16 x i8> addrspace(3)* %in 519*9880d681SAndroid Build Coastguard Worker %ext = sext <16 x i8> %load to <16 x i16> 520*9880d681SAndroid Build Coastguard Worker store <16 x i16> %ext, <16 x i16> addrspace(3)* %out 521*9880d681SAndroid Build Coastguard Worker ret void 522*9880d681SAndroid Build Coastguard Worker} 523*9880d681SAndroid Build Coastguard Worker 524*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_zextload_v32i8_to_v32i16: 525*9880d681SAndroid Build Coastguard Workerdefine void @local_zextload_v32i8_to_v32i16(<32 x i16> addrspace(3)* %out, <32 x i8> addrspace(3)* %in) #0 { 526*9880d681SAndroid Build Coastguard Worker %load = load <32 x i8>, <32 x i8> addrspace(3)* %in 527*9880d681SAndroid Build Coastguard Worker %ext = zext <32 x i8> %load to <32 x i16> 528*9880d681SAndroid Build Coastguard Worker store <32 x i16> %ext, <32 x i16> addrspace(3)* %out 529*9880d681SAndroid Build Coastguard Worker ret void 530*9880d681SAndroid Build Coastguard Worker} 531*9880d681SAndroid Build Coastguard Worker 532*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_sextload_v32i8_to_v32i16: 533*9880d681SAndroid Build Coastguard Workerdefine void @local_sextload_v32i8_to_v32i16(<32 x i16> addrspace(3)* %out, <32 x i8> addrspace(3)* %in) #0 { 534*9880d681SAndroid Build Coastguard Worker %load = load <32 x i8>, <32 x i8> addrspace(3)* %in 535*9880d681SAndroid Build Coastguard Worker %ext = sext <32 x i8> %load to <32 x i16> 536*9880d681SAndroid Build Coastguard Worker store <32 x i16> %ext, <32 x i16> addrspace(3)* %out 537*9880d681SAndroid Build Coastguard Worker ret void 538*9880d681SAndroid Build Coastguard Worker} 539*9880d681SAndroid Build Coastguard Worker 540*9880d681SAndroid Build Coastguard Worker; XFUNC-LABEL: {{^}}local_zextload_v64i8_to_v64i16: 541*9880d681SAndroid Build Coastguard Worker; define void @local_zextload_v64i8_to_v64i16(<64 x i16> addrspace(3)* %out, <64 x i8> addrspace(3)* %in) #0 { 542*9880d681SAndroid Build Coastguard Worker; %load = load <64 x i8>, <64 x i8> addrspace(3)* %in 543*9880d681SAndroid Build Coastguard Worker; %ext = zext <64 x i8> %load to <64 x i16> 544*9880d681SAndroid Build Coastguard Worker; store <64 x i16> %ext, <64 x i16> addrspace(3)* %out 545*9880d681SAndroid Build Coastguard Worker; ret void 546*9880d681SAndroid Build Coastguard Worker; } 547*9880d681SAndroid Build Coastguard Worker 548*9880d681SAndroid Build Coastguard Worker; XFUNC-LABEL: {{^}}local_sextload_v64i8_to_v64i16: 549*9880d681SAndroid Build Coastguard Worker; define void @local_sextload_v64i8_to_v64i16(<64 x i16> addrspace(3)* %out, <64 x i8> addrspace(3)* %in) #0 { 550*9880d681SAndroid Build Coastguard Worker; %load = load <64 x i8>, <64 x i8> addrspace(3)* %in 551*9880d681SAndroid Build Coastguard Worker; %ext = sext <64 x i8> %load to <64 x i16> 552*9880d681SAndroid Build Coastguard Worker; store <64 x i16> %ext, <64 x i16> addrspace(3)* %out 553*9880d681SAndroid Build Coastguard Worker; ret void 554*9880d681SAndroid Build Coastguard Worker; } 555*9880d681SAndroid Build Coastguard Worker 556*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind } 557