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 7*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_i8: 8*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_load_ubyte v{{[0-9]+}} 9*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_load_ubyte 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_8 T{{[0-9]+}}.X, T{{[0-9]+}}.X, 0 12*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_i8(i8 addrspace(1)* %out, i8 addrspace(2)* %in) #0 { 13*9880d681SAndroid Build Coastguard Workerentry: 14*9880d681SAndroid Build Coastguard Worker %ld = load i8, i8 addrspace(2)* %in 15*9880d681SAndroid Build Coastguard Worker store i8 %ld, i8 addrspace(1)* %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: {{^}}constant_load_v2i8: 20*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_load_ushort v 21*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_load_ushort v 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_16 24*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_v2i8(<2 x i8> addrspace(1)* %out, <2 x i8> addrspace(2)* %in) #0 { 25*9880d681SAndroid Build Coastguard Workerentry: 26*9880d681SAndroid Build Coastguard Worker %ld = load <2 x i8>, <2 x i8> addrspace(2)* %in 27*9880d681SAndroid Build Coastguard Worker store <2 x i8> %ld, <2 x i8> addrspace(1)* %out 28*9880d681SAndroid Build Coastguard Worker ret void 29*9880d681SAndroid Build Coastguard Worker} 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_v3i8: 32*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dword s 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Worker; EG-DAG: VTX_READ_32 35*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_v3i8(<3 x i8> addrspace(1)* %out, <3 x i8> addrspace(2)* %in) #0 { 36*9880d681SAndroid Build Coastguard Workerentry: 37*9880d681SAndroid Build Coastguard Worker %ld = load <3 x i8>, <3 x i8> addrspace(2)* %in 38*9880d681SAndroid Build Coastguard Worker store <3 x i8> %ld, <3 x i8> addrspace(1)* %out 39*9880d681SAndroid Build Coastguard Worker ret void 40*9880d681SAndroid Build Coastguard Worker} 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_v4i8: 43*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dword s 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_32 46*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_v4i8(<4 x i8> addrspace(1)* %out, <4 x i8> addrspace(2)* %in) #0 { 47*9880d681SAndroid Build Coastguard Workerentry: 48*9880d681SAndroid Build Coastguard Worker %ld = load <4 x i8>, <4 x i8> addrspace(2)* %in 49*9880d681SAndroid Build Coastguard Worker store <4 x i8> %ld, <4 x i8> addrspace(1)* %out 50*9880d681SAndroid Build Coastguard Worker ret void 51*9880d681SAndroid Build Coastguard Worker} 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_v8i8: 54*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx2 55*9880d681SAndroid Build Coastguard Worker 56*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_64 57*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_v8i8(<8 x i8> addrspace(1)* %out, <8 x i8> addrspace(2)* %in) #0 { 58*9880d681SAndroid Build Coastguard Workerentry: 59*9880d681SAndroid Build Coastguard Worker %ld = load <8 x i8>, <8 x i8> addrspace(2)* %in 60*9880d681SAndroid Build Coastguard Worker store <8 x i8> %ld, <8 x i8> addrspace(1)* %out 61*9880d681SAndroid Build Coastguard Worker ret void 62*9880d681SAndroid Build Coastguard Worker} 63*9880d681SAndroid Build Coastguard Worker 64*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_v16i8: 65*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx4 66*9880d681SAndroid Build Coastguard Worker 67*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_128 68*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_v16i8(<16 x i8> addrspace(1)* %out, <16 x i8> addrspace(2)* %in) #0 { 69*9880d681SAndroid Build Coastguard Workerentry: 70*9880d681SAndroid Build Coastguard Worker %ld = load <16 x i8>, <16 x i8> addrspace(2)* %in 71*9880d681SAndroid Build Coastguard Worker store <16 x i8> %ld, <16 x i8> addrspace(1)* %out 72*9880d681SAndroid Build Coastguard Worker ret void 73*9880d681SAndroid Build Coastguard Worker} 74*9880d681SAndroid Build Coastguard Worker 75*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_i8_to_i32: 76*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_load_ubyte v{{[0-9]+}}, 77*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_load_ubyte 78*9880d681SAndroid Build Coastguard Worker 79*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_8 T{{[0-9]+\.X, T[0-9]+\.X}} 80*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_i8_to_i32(i32 addrspace(1)* %out, i8 addrspace(2)* %in) #0 { 81*9880d681SAndroid Build Coastguard Worker %a = load i8, i8 addrspace(2)* %in 82*9880d681SAndroid Build Coastguard Worker %ext = zext i8 %a to i32 83*9880d681SAndroid Build Coastguard Worker store i32 %ext, i32 addrspace(1)* %out 84*9880d681SAndroid Build Coastguard Worker ret void 85*9880d681SAndroid Build Coastguard Worker} 86*9880d681SAndroid Build Coastguard Worker 87*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_i8_to_i32: 88*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_load_sbyte 89*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_load_sbyte 90*9880d681SAndroid Build Coastguard Worker 91*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_8 [[DST:T[0-9]\.[XYZW]]], [[DST]] 92*9880d681SAndroid Build Coastguard Worker; EG: BFE_INT {{[* ]*}}T{{[0-9].[XYZW]}}, [[DST]], 0.0, literal 93*9880d681SAndroid Build Coastguard Worker; EG: 8 94*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_i8_to_i32(i32 addrspace(1)* %out, i8 addrspace(2)* %in) #0 { 95*9880d681SAndroid Build Coastguard Worker %ld = load i8, i8 addrspace(2)* %in 96*9880d681SAndroid Build Coastguard Worker %ext = sext i8 %ld to i32 97*9880d681SAndroid Build Coastguard Worker store i32 %ext, i32 addrspace(1)* %out 98*9880d681SAndroid Build Coastguard Worker ret void 99*9880d681SAndroid Build Coastguard Worker} 100*9880d681SAndroid Build Coastguard Worker 101*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v1i8_to_v1i32: 102*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v1i8_to_v1i32(<1 x i32> addrspace(1)* %out, <1 x i8> addrspace(2)* %in) #0 { 103*9880d681SAndroid Build Coastguard Worker %load = load <1 x i8>, <1 x i8> addrspace(2)* %in 104*9880d681SAndroid Build Coastguard Worker %ext = zext <1 x i8> %load to <1 x i32> 105*9880d681SAndroid Build Coastguard Worker store <1 x i32> %ext, <1 x i32> addrspace(1)* %out 106*9880d681SAndroid Build Coastguard Worker ret void 107*9880d681SAndroid Build Coastguard Worker} 108*9880d681SAndroid Build Coastguard Worker 109*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v1i8_to_v1i32: 110*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v1i8_to_v1i32(<1 x i32> addrspace(1)* %out, <1 x i8> addrspace(2)* %in) #0 { 111*9880d681SAndroid Build Coastguard Worker %load = load <1 x i8>, <1 x i8> addrspace(2)* %in 112*9880d681SAndroid Build Coastguard Worker %ext = sext <1 x i8> %load to <1 x i32> 113*9880d681SAndroid Build Coastguard Worker store <1 x i32> %ext, <1 x i32> addrspace(1)* %out 114*9880d681SAndroid Build Coastguard Worker ret void 115*9880d681SAndroid Build Coastguard Worker} 116*9880d681SAndroid Build Coastguard Worker 117*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v2i8_to_v2i32: 118*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_load_ushort 119*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_load_ushort 120*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_8 121*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_8 122*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v2i8_to_v2i32(<2 x i32> addrspace(1)* %out, <2 x i8> addrspace(2)* %in) #0 { 123*9880d681SAndroid Build Coastguard Worker %load = load <2 x i8>, <2 x i8> addrspace(2)* %in 124*9880d681SAndroid Build Coastguard Worker %ext = zext <2 x i8> %load to <2 x i32> 125*9880d681SAndroid Build Coastguard Worker store <2 x i32> %ext, <2 x i32> 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_sextload_v2i8_to_v2i32: 130*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_load_ushort 131*9880d681SAndroid Build Coastguard Worker 132*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_load_ushort 133*9880d681SAndroid Build Coastguard Worker 134*9880d681SAndroid Build Coastguard Worker; GCN: v_bfe_i32 135*9880d681SAndroid Build Coastguard Worker; GCN: v_bfe_i32 136*9880d681SAndroid Build Coastguard Worker 137*9880d681SAndroid Build Coastguard Worker; EG-DAG: VTX_READ_8 [[DST_X:T[0-9]\.[XYZW]]], [[DST_X]] 138*9880d681SAndroid Build Coastguard Worker; EG-DAG: VTX_READ_8 [[DST_Y:T[0-9]\.[XYZW]]], [[DST_Y]] 139*9880d681SAndroid Build Coastguard Worker; EG-DAG: BFE_INT {{[* ]*}}T{{[0-9].[XYZW]}}, [[DST_X]], 0.0, literal 140*9880d681SAndroid Build Coastguard Worker; EG-DAG: BFE_INT {{[* ]*}}T{{[0-9].[XYZW]}}, [[DST_Y]], 0.0, literal 141*9880d681SAndroid Build Coastguard Worker; EG-DAG: 8 142*9880d681SAndroid Build Coastguard Worker; EG-DAG: 8 143*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v2i8_to_v2i32(<2 x i32> addrspace(1)* %out, <2 x i8> addrspace(2)* %in) #0 { 144*9880d681SAndroid Build Coastguard Worker %load = load <2 x i8>, <2 x i8> addrspace(2)* %in 145*9880d681SAndroid Build Coastguard Worker %ext = sext <2 x i8> %load to <2 x i32> 146*9880d681SAndroid Build Coastguard Worker store <2 x i32> %ext, <2 x i32> addrspace(1)* %out 147*9880d681SAndroid Build Coastguard Worker ret void 148*9880d681SAndroid Build Coastguard Worker} 149*9880d681SAndroid Build Coastguard Worker 150*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v3i8_to_v3i32: 151*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dword s 152*9880d681SAndroid Build Coastguard Worker 153*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_bfe_u32 154*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_bfe_u32 155*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_and_b32 156*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v3i8_to_v3i32(<3 x i32> addrspace(1)* %out, <3 x i8> addrspace(2)* %in) #0 { 157*9880d681SAndroid Build Coastguard Workerentry: 158*9880d681SAndroid Build Coastguard Worker %ld = load <3 x i8>, <3 x i8> addrspace(2)* %in 159*9880d681SAndroid Build Coastguard Worker %ext = zext <3 x i8> %ld to <3 x i32> 160*9880d681SAndroid Build Coastguard Worker store <3 x i32> %ext, <3 x i32> addrspace(1)* %out 161*9880d681SAndroid Build Coastguard Worker ret void 162*9880d681SAndroid Build Coastguard Worker} 163*9880d681SAndroid Build Coastguard Worker 164*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v3i8_to_v3i32: 165*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dword s 166*9880d681SAndroid Build Coastguard Worker 167*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_bfe_i32 168*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_bfe_i32 169*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_bfe_i32 170*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v3i8_to_v3i32(<3 x i32> addrspace(1)* %out, <3 x i8> addrspace(2)* %in) #0 { 171*9880d681SAndroid Build Coastguard Workerentry: 172*9880d681SAndroid Build Coastguard Worker %ld = load <3 x i8>, <3 x i8> addrspace(2)* %in 173*9880d681SAndroid Build Coastguard Worker %ext = sext <3 x i8> %ld to <3 x i32> 174*9880d681SAndroid Build Coastguard Worker store <3 x i32> %ext, <3 x i32> addrspace(1)* %out 175*9880d681SAndroid Build Coastguard Worker ret void 176*9880d681SAndroid Build Coastguard Worker} 177*9880d681SAndroid Build Coastguard Worker 178*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v4i8_to_v4i32: 179*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dword s 180*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_and_b32 181*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_lshr_b32 182*9880d681SAndroid Build Coastguard Worker 183*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_8 184*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_8 185*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_8 186*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_8 187*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v4i8_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x i8> addrspace(2)* %in) #0 { 188*9880d681SAndroid Build Coastguard Worker %load = load <4 x i8>, <4 x i8> addrspace(2)* %in 189*9880d681SAndroid Build Coastguard Worker %ext = zext <4 x i8> %load to <4 x i32> 190*9880d681SAndroid Build Coastguard Worker store <4 x i32> %ext, <4 x i32> addrspace(1)* %out 191*9880d681SAndroid Build Coastguard Worker ret void 192*9880d681SAndroid Build Coastguard Worker} 193*9880d681SAndroid Build Coastguard Worker 194*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v4i8_to_v4i32: 195*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dword s 196*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_sext_i32_i8 197*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_ashr_i32 198*9880d681SAndroid Build Coastguard Worker 199*9880d681SAndroid Build Coastguard Worker; EG-DAG: VTX_READ_8 [[DST_X:T[0-9]\.[XYZW]]], [[DST_X]] 200*9880d681SAndroid Build Coastguard Worker; EG-DAG: VTX_READ_8 [[DST_Y:T[0-9]\.[XYZW]]], [[DST_Y]] 201*9880d681SAndroid Build Coastguard Worker; EG-DAG: VTX_READ_8 [[DST_Z:T[0-9]\.[XYZW]]], [[DST_Z]] 202*9880d681SAndroid Build Coastguard Worker; EG-DAG: VTX_READ_8 [[DST_W:T[0-9]\.[XYZW]]], [[DST_W]] 203*9880d681SAndroid Build Coastguard Worker; EG-DAG: BFE_INT {{[* ]*}}T{{[0-9].[XYZW]}}, [[DST_X]], 0.0, literal 204*9880d681SAndroid Build Coastguard Worker; EG-DAG: BFE_INT {{[* ]*}}T{{[0-9].[XYZW]}}, [[DST_Y]], 0.0, literal 205*9880d681SAndroid Build Coastguard Worker; EG-DAG: BFE_INT {{[* ]*}}T{{[0-9].[XYZW]}}, [[DST_Z]], 0.0, literal 206*9880d681SAndroid Build Coastguard Worker; EG-DAG: BFE_INT {{[* ]*}}T{{[0-9].[XYZW]}}, [[DST_W]], 0.0, literal 207*9880d681SAndroid Build Coastguard Worker; EG-DAG: 8 208*9880d681SAndroid Build Coastguard Worker; EG-DAG: 8 209*9880d681SAndroid Build Coastguard Worker; EG-DAG: 8 210*9880d681SAndroid Build Coastguard Worker; EG-DAG: 8 211*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v4i8_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x i8> addrspace(2)* %in) #0 { 212*9880d681SAndroid Build Coastguard Worker %load = load <4 x i8>, <4 x i8> addrspace(2)* %in 213*9880d681SAndroid Build Coastguard Worker %ext = sext <4 x i8> %load to <4 x i32> 214*9880d681SAndroid Build Coastguard Worker store <4 x i32> %ext, <4 x i32> addrspace(1)* %out 215*9880d681SAndroid Build Coastguard Worker ret void 216*9880d681SAndroid Build Coastguard Worker} 217*9880d681SAndroid Build Coastguard Worker 218*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v8i8_to_v8i32: 219*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx2 220*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_and_b32 221*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_lshr_b32 222*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v8i8_to_v8i32(<8 x i32> addrspace(1)* %out, <8 x i8> addrspace(2)* %in) #0 { 223*9880d681SAndroid Build Coastguard Worker %load = load <8 x i8>, <8 x i8> addrspace(2)* %in 224*9880d681SAndroid Build Coastguard Worker %ext = zext <8 x i8> %load to <8 x i32> 225*9880d681SAndroid Build Coastguard Worker store <8 x i32> %ext, <8 x i32> 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_v8i8_to_v8i32: 230*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx2 231*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_ashr_i32 232*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_sext_i32_i8 233*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v8i8_to_v8i32(<8 x i32> addrspace(1)* %out, <8 x i8> addrspace(2)* %in) #0 { 234*9880d681SAndroid Build Coastguard Worker %load = load <8 x i8>, <8 x i8> addrspace(2)* %in 235*9880d681SAndroid Build Coastguard Worker %ext = sext <8 x i8> %load to <8 x i32> 236*9880d681SAndroid Build Coastguard Worker store <8 x i32> %ext, <8 x i32> addrspace(1)* %out 237*9880d681SAndroid Build Coastguard Worker ret void 238*9880d681SAndroid Build Coastguard Worker} 239*9880d681SAndroid Build Coastguard Worker 240*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v16i8_to_v16i32: 241*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v16i8_to_v16i32(<16 x i32> addrspace(1)* %out, <16 x i8> addrspace(2)* %in) #0 { 242*9880d681SAndroid Build Coastguard Worker %load = load <16 x i8>, <16 x i8> addrspace(2)* %in 243*9880d681SAndroid Build Coastguard Worker %ext = zext <16 x i8> %load to <16 x i32> 244*9880d681SAndroid Build Coastguard Worker store <16 x i32> %ext, <16 x i32> addrspace(1)* %out 245*9880d681SAndroid Build Coastguard Worker ret void 246*9880d681SAndroid Build Coastguard Worker} 247*9880d681SAndroid Build Coastguard Worker 248*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v16i8_to_v16i32: 249*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v16i8_to_v16i32(<16 x i32> addrspace(1)* %out, <16 x i8> addrspace(2)* %in) #0 { 250*9880d681SAndroid Build Coastguard Worker %load = load <16 x i8>, <16 x i8> addrspace(2)* %in 251*9880d681SAndroid Build Coastguard Worker %ext = sext <16 x i8> %load to <16 x i32> 252*9880d681SAndroid Build Coastguard Worker store <16 x i32> %ext, <16 x i32> addrspace(1)* %out 253*9880d681SAndroid Build Coastguard Worker ret void 254*9880d681SAndroid Build Coastguard Worker} 255*9880d681SAndroid Build Coastguard Worker 256*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v32i8_to_v32i32: 257*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v32i8_to_v32i32(<32 x i32> addrspace(1)* %out, <32 x i8> addrspace(2)* %in) #0 { 258*9880d681SAndroid Build Coastguard Worker %load = load <32 x i8>, <32 x i8> addrspace(2)* %in 259*9880d681SAndroid Build Coastguard Worker %ext = zext <32 x i8> %load to <32 x i32> 260*9880d681SAndroid Build Coastguard Worker store <32 x i32> %ext, <32 x i32> addrspace(1)* %out 261*9880d681SAndroid Build Coastguard Worker ret void 262*9880d681SAndroid Build Coastguard Worker} 263*9880d681SAndroid Build Coastguard Worker 264*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v32i8_to_v32i32: 265*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v32i8_to_v32i32(<32 x i32> addrspace(1)* %out, <32 x i8> addrspace(2)* %in) #0 { 266*9880d681SAndroid Build Coastguard Worker %load = load <32 x i8>, <32 x i8> addrspace(2)* %in 267*9880d681SAndroid Build Coastguard Worker %ext = sext <32 x i8> %load to <32 x i32> 268*9880d681SAndroid Build Coastguard Worker store <32 x i32> %ext, <32 x i32> addrspace(1)* %out 269*9880d681SAndroid Build Coastguard Worker ret void 270*9880d681SAndroid Build Coastguard Worker} 271*9880d681SAndroid Build Coastguard Worker 272*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v64i8_to_v64i32: 273*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v64i8_to_v64i32(<64 x i32> addrspace(1)* %out, <64 x i8> addrspace(2)* %in) #0 { 274*9880d681SAndroid Build Coastguard Worker %load = load <64 x i8>, <64 x i8> addrspace(2)* %in 275*9880d681SAndroid Build Coastguard Worker %ext = zext <64 x i8> %load to <64 x i32> 276*9880d681SAndroid Build Coastguard Worker store <64 x i32> %ext, <64 x i32> addrspace(1)* %out 277*9880d681SAndroid Build Coastguard Worker ret void 278*9880d681SAndroid Build Coastguard Worker} 279*9880d681SAndroid Build Coastguard Worker 280*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v64i8_to_v64i32: 281*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v64i8_to_v64i32(<64 x i32> addrspace(1)* %out, <64 x i8> addrspace(2)* %in) #0 { 282*9880d681SAndroid Build Coastguard Worker %load = load <64 x i8>, <64 x i8> addrspace(2)* %in 283*9880d681SAndroid Build Coastguard Worker %ext = sext <64 x i8> %load to <64 x i32> 284*9880d681SAndroid Build Coastguard Worker store <64 x i32> %ext, <64 x i32> addrspace(1)* %out 285*9880d681SAndroid Build Coastguard Worker ret void 286*9880d681SAndroid Build Coastguard Worker} 287*9880d681SAndroid Build Coastguard Worker 288*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_i8_to_i64: 289*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_mov_b32_e32 v[[HI:[0-9]+]], 0{{$}} 290*9880d681SAndroid Build Coastguard Worker 291*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_load_ubyte v[[LO:[0-9]+]], 292*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx2 v{{\[}}[[LO]]:[[HI]]] 293*9880d681SAndroid Build Coastguard Worker 294*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_load_ubyte v[[LO:[0-9]+]], 295*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx2 v{{\[[0-9]+:[0-9]+\]}}, v{{\[}}[[LO]]:[[HI]]] 296*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_i8_to_i64(i64 addrspace(1)* %out, i8 addrspace(2)* %in) #0 { 297*9880d681SAndroid Build Coastguard Worker %a = load i8, i8 addrspace(2)* %in 298*9880d681SAndroid Build Coastguard Worker %ext = zext i8 %a to i64 299*9880d681SAndroid Build Coastguard Worker store i64 %ext, i64 addrspace(1)* %out 300*9880d681SAndroid Build Coastguard Worker ret void 301*9880d681SAndroid Build Coastguard Worker} 302*9880d681SAndroid Build Coastguard Worker 303*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_i8_to_i64: 304*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_load_sbyte v[[LO:[0-9]+]], 305*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_load_sbyte v[[LO:[0-9]+]], 306*9880d681SAndroid Build Coastguard Worker; GCN: v_ashrrev_i32_e32 v[[HI:[0-9]+]], 31, v[[LO]] 307*9880d681SAndroid Build Coastguard Worker 308*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx2 v{{\[}}[[LO]]:[[HI]]{{\]}} 309*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx2 v{{\[[0-9]+:[0-9]+\]}}, v{{\[}}[[LO]]:[[HI]]{{\]}} 310*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_i8_to_i64(i64 addrspace(1)* %out, i8 addrspace(2)* %in) #0 { 311*9880d681SAndroid Build Coastguard Worker %a = load i8, i8 addrspace(2)* %in 312*9880d681SAndroid Build Coastguard Worker %ext = sext i8 %a to i64 313*9880d681SAndroid Build Coastguard Worker store i64 %ext, i64 addrspace(1)* %out 314*9880d681SAndroid Build Coastguard Worker ret void 315*9880d681SAndroid Build Coastguard Worker} 316*9880d681SAndroid Build Coastguard Worker 317*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v1i8_to_v1i64: 318*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v1i8_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i8> addrspace(2)* %in) #0 { 319*9880d681SAndroid Build Coastguard Worker %load = load <1 x i8>, <1 x i8> addrspace(2)* %in 320*9880d681SAndroid Build Coastguard Worker %ext = zext <1 x i8> %load to <1 x i64> 321*9880d681SAndroid Build Coastguard Worker store <1 x i64> %ext, <1 x i64> addrspace(1)* %out 322*9880d681SAndroid Build Coastguard Worker ret void 323*9880d681SAndroid Build Coastguard Worker} 324*9880d681SAndroid Build Coastguard Worker 325*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v1i8_to_v1i64: 326*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v1i8_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i8> addrspace(2)* %in) #0 { 327*9880d681SAndroid Build Coastguard Worker %load = load <1 x i8>, <1 x i8> addrspace(2)* %in 328*9880d681SAndroid Build Coastguard Worker %ext = sext <1 x i8> %load to <1 x i64> 329*9880d681SAndroid Build Coastguard Worker store <1 x i64> %ext, <1 x i64> addrspace(1)* %out 330*9880d681SAndroid Build Coastguard Worker ret void 331*9880d681SAndroid Build Coastguard Worker} 332*9880d681SAndroid Build Coastguard Worker 333*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v2i8_to_v2i64: 334*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v2i8_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i8> addrspace(2)* %in) #0 { 335*9880d681SAndroid Build Coastguard Worker %load = load <2 x i8>, <2 x i8> addrspace(2)* %in 336*9880d681SAndroid Build Coastguard Worker %ext = zext <2 x i8> %load to <2 x i64> 337*9880d681SAndroid Build Coastguard Worker store <2 x i64> %ext, <2 x i64> addrspace(1)* %out 338*9880d681SAndroid Build Coastguard Worker ret void 339*9880d681SAndroid Build Coastguard Worker} 340*9880d681SAndroid Build Coastguard Worker 341*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v2i8_to_v2i64: 342*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v2i8_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i8> addrspace(2)* %in) #0 { 343*9880d681SAndroid Build Coastguard Worker %load = load <2 x i8>, <2 x i8> addrspace(2)* %in 344*9880d681SAndroid Build Coastguard Worker %ext = sext <2 x i8> %load to <2 x i64> 345*9880d681SAndroid Build Coastguard Worker store <2 x i64> %ext, <2 x i64> addrspace(1)* %out 346*9880d681SAndroid Build Coastguard Worker ret void 347*9880d681SAndroid Build Coastguard Worker} 348*9880d681SAndroid Build Coastguard Worker 349*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v4i8_to_v4i64: 350*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v4i8_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i8> addrspace(2)* %in) #0 { 351*9880d681SAndroid Build Coastguard Worker %load = load <4 x i8>, <4 x i8> addrspace(2)* %in 352*9880d681SAndroid Build Coastguard Worker %ext = zext <4 x i8> %load to <4 x i64> 353*9880d681SAndroid Build Coastguard Worker store <4 x i64> %ext, <4 x i64> addrspace(1)* %out 354*9880d681SAndroid Build Coastguard Worker ret void 355*9880d681SAndroid Build Coastguard Worker} 356*9880d681SAndroid Build Coastguard Worker 357*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v4i8_to_v4i64: 358*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v4i8_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i8> addrspace(2)* %in) #0 { 359*9880d681SAndroid Build Coastguard Worker %load = load <4 x i8>, <4 x i8> addrspace(2)* %in 360*9880d681SAndroid Build Coastguard Worker %ext = sext <4 x i8> %load to <4 x i64> 361*9880d681SAndroid Build Coastguard Worker store <4 x i64> %ext, <4 x i64> addrspace(1)* %out 362*9880d681SAndroid Build Coastguard Worker ret void 363*9880d681SAndroid Build Coastguard Worker} 364*9880d681SAndroid Build Coastguard Worker 365*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v8i8_to_v8i64: 366*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v8i8_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i8> addrspace(2)* %in) #0 { 367*9880d681SAndroid Build Coastguard Worker %load = load <8 x i8>, <8 x i8> addrspace(2)* %in 368*9880d681SAndroid Build Coastguard Worker %ext = zext <8 x i8> %load to <8 x i64> 369*9880d681SAndroid Build Coastguard Worker store <8 x i64> %ext, <8 x i64> addrspace(1)* %out 370*9880d681SAndroid Build Coastguard Worker ret void 371*9880d681SAndroid Build Coastguard Worker} 372*9880d681SAndroid Build Coastguard Worker 373*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v8i8_to_v8i64: 374*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v8i8_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i8> addrspace(2)* %in) #0 { 375*9880d681SAndroid Build Coastguard Worker %load = load <8 x i8>, <8 x i8> addrspace(2)* %in 376*9880d681SAndroid Build Coastguard Worker %ext = sext <8 x i8> %load to <8 x i64> 377*9880d681SAndroid Build Coastguard Worker store <8 x i64> %ext, <8 x i64> addrspace(1)* %out 378*9880d681SAndroid Build Coastguard Worker ret void 379*9880d681SAndroid Build Coastguard Worker} 380*9880d681SAndroid Build Coastguard Worker 381*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v16i8_to_v16i64: 382*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v16i8_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i8> addrspace(2)* %in) #0 { 383*9880d681SAndroid Build Coastguard Worker %load = load <16 x i8>, <16 x i8> addrspace(2)* %in 384*9880d681SAndroid Build Coastguard Worker %ext = zext <16 x i8> %load to <16 x i64> 385*9880d681SAndroid Build Coastguard Worker store <16 x i64> %ext, <16 x i64> addrspace(1)* %out 386*9880d681SAndroid Build Coastguard Worker ret void 387*9880d681SAndroid Build Coastguard Worker} 388*9880d681SAndroid Build Coastguard Worker 389*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v16i8_to_v16i64: 390*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v16i8_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i8> addrspace(2)* %in) #0 { 391*9880d681SAndroid Build Coastguard Worker %load = load <16 x i8>, <16 x i8> addrspace(2)* %in 392*9880d681SAndroid Build Coastguard Worker %ext = sext <16 x i8> %load to <16 x i64> 393*9880d681SAndroid Build Coastguard Worker store <16 x i64> %ext, <16 x i64> addrspace(1)* %out 394*9880d681SAndroid Build Coastguard Worker ret void 395*9880d681SAndroid Build Coastguard Worker} 396*9880d681SAndroid Build Coastguard Worker 397*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v32i8_to_v32i64: 398*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v32i8_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i8> addrspace(2)* %in) #0 { 399*9880d681SAndroid Build Coastguard Worker %load = load <32 x i8>, <32 x i8> addrspace(2)* %in 400*9880d681SAndroid Build Coastguard Worker %ext = zext <32 x i8> %load to <32 x i64> 401*9880d681SAndroid Build Coastguard Worker store <32 x i64> %ext, <32 x i64> addrspace(1)* %out 402*9880d681SAndroid Build Coastguard Worker ret void 403*9880d681SAndroid Build Coastguard Worker} 404*9880d681SAndroid Build Coastguard Worker 405*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v32i8_to_v32i64: 406*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v32i8_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i8> addrspace(2)* %in) #0 { 407*9880d681SAndroid Build Coastguard Worker %load = load <32 x i8>, <32 x i8> addrspace(2)* %in 408*9880d681SAndroid Build Coastguard Worker %ext = sext <32 x i8> %load to <32 x i64> 409*9880d681SAndroid Build Coastguard Worker store <32 x i64> %ext, <32 x i64> addrspace(1)* %out 410*9880d681SAndroid Build Coastguard Worker ret void 411*9880d681SAndroid Build Coastguard Worker} 412*9880d681SAndroid Build Coastguard Worker 413*9880d681SAndroid Build Coastguard Worker; XFUNC-LABEL: {{^}}constant_zextload_v64i8_to_v64i64: 414*9880d681SAndroid Build Coastguard Worker; define void @constant_zextload_v64i8_to_v64i64(<64 x i64> addrspace(1)* %out, <64 x i8> addrspace(2)* %in) #0 { 415*9880d681SAndroid Build Coastguard Worker; %load = load <64 x i8>, <64 x i8> addrspace(2)* %in 416*9880d681SAndroid Build Coastguard Worker; %ext = zext <64 x i8> %load to <64 x i64> 417*9880d681SAndroid Build Coastguard Worker; store <64 x i64> %ext, <64 x i64> addrspace(1)* %out 418*9880d681SAndroid Build Coastguard Worker; ret void 419*9880d681SAndroid Build Coastguard Worker; } 420*9880d681SAndroid Build Coastguard Worker 421*9880d681SAndroid Build Coastguard Worker; XFUNC-LABEL: {{^}}constant_sextload_v64i8_to_v64i64: 422*9880d681SAndroid Build Coastguard Worker; define void @constant_sextload_v64i8_to_v64i64(<64 x i64> addrspace(1)* %out, <64 x i8> addrspace(2)* %in) #0 { 423*9880d681SAndroid Build Coastguard Worker; %load = load <64 x i8>, <64 x i8> addrspace(2)* %in 424*9880d681SAndroid Build Coastguard Worker; %ext = sext <64 x i8> %load to <64 x i64> 425*9880d681SAndroid Build Coastguard Worker; store <64 x i64> %ext, <64 x i64> addrspace(1)* %out 426*9880d681SAndroid Build Coastguard Worker; ret void 427*9880d681SAndroid Build Coastguard Worker; } 428*9880d681SAndroid Build Coastguard Worker 429*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_i8_to_i16: 430*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_load_ubyte v[[VAL:[0-9]+]], 431*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_short v[[VAL]] 432*9880d681SAndroid Build Coastguard Worker 433*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_load_ubyte v[[VAL:[0-9]+]], 434*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_short v{{\[[0-9]+:[0-9]+\]}}, v[[VAL]] 435*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_i8_to_i16(i16 addrspace(1)* %out, i8 addrspace(2)* %in) #0 { 436*9880d681SAndroid Build Coastguard Worker %a = load i8, i8 addrspace(2)* %in 437*9880d681SAndroid Build Coastguard Worker %ext = zext i8 %a to i16 438*9880d681SAndroid Build Coastguard Worker store i16 %ext, i16 addrspace(1)* %out 439*9880d681SAndroid Build Coastguard Worker ret void 440*9880d681SAndroid Build Coastguard Worker} 441*9880d681SAndroid Build Coastguard Worker 442*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_i8_to_i16: 443*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_load_sbyte v[[VAL:[0-9]+]], 444*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_load_sbyte v[[VAL:[0-9]+]], 445*9880d681SAndroid Build Coastguard Worker 446*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_short v[[VAL]] 447*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_short v{{\[[0-9]+:[0-9]+\]}}, v[[VAL]] 448*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_i8_to_i16(i16 addrspace(1)* %out, i8 addrspace(2)* %in) #0 { 449*9880d681SAndroid Build Coastguard Worker %a = load i8, i8 addrspace(2)* %in 450*9880d681SAndroid Build Coastguard Worker %ext = sext i8 %a to i16 451*9880d681SAndroid Build Coastguard Worker store i16 %ext, i16 addrspace(1)* %out 452*9880d681SAndroid Build Coastguard Worker ret void 453*9880d681SAndroid Build Coastguard Worker} 454*9880d681SAndroid Build Coastguard Worker 455*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v1i8_to_v1i16: 456*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v1i8_to_v1i16(<1 x i16> addrspace(1)* %out, <1 x i8> addrspace(2)* %in) #0 { 457*9880d681SAndroid Build Coastguard Worker %load = load <1 x i8>, <1 x i8> addrspace(2)* %in 458*9880d681SAndroid Build Coastguard Worker %ext = zext <1 x i8> %load to <1 x i16> 459*9880d681SAndroid Build Coastguard Worker store <1 x i16> %ext, <1 x i16> addrspace(1)* %out 460*9880d681SAndroid Build Coastguard Worker ret void 461*9880d681SAndroid Build Coastguard Worker} 462*9880d681SAndroid Build Coastguard Worker 463*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v1i8_to_v1i16: 464*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v1i8_to_v1i16(<1 x i16> addrspace(1)* %out, <1 x i8> addrspace(2)* %in) #0 { 465*9880d681SAndroid Build Coastguard Worker %load = load <1 x i8>, <1 x i8> addrspace(2)* %in 466*9880d681SAndroid Build Coastguard Worker %ext = sext <1 x i8> %load to <1 x i16> 467*9880d681SAndroid Build Coastguard Worker store <1 x i16> %ext, <1 x i16> addrspace(1)* %out 468*9880d681SAndroid Build Coastguard Worker ret void 469*9880d681SAndroid Build Coastguard Worker} 470*9880d681SAndroid Build Coastguard Worker 471*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v2i8_to_v2i16: 472*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v2i8_to_v2i16(<2 x i16> addrspace(1)* %out, <2 x i8> addrspace(2)* %in) #0 { 473*9880d681SAndroid Build Coastguard Worker %load = load <2 x i8>, <2 x i8> addrspace(2)* %in 474*9880d681SAndroid Build Coastguard Worker %ext = zext <2 x i8> %load to <2 x i16> 475*9880d681SAndroid Build Coastguard Worker store <2 x i16> %ext, <2 x i16> addrspace(1)* %out 476*9880d681SAndroid Build Coastguard Worker ret void 477*9880d681SAndroid Build Coastguard Worker} 478*9880d681SAndroid Build Coastguard Worker 479*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v2i8_to_v2i16: 480*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v2i8_to_v2i16(<2 x i16> addrspace(1)* %out, <2 x i8> addrspace(2)* %in) #0 { 481*9880d681SAndroid Build Coastguard Worker %load = load <2 x i8>, <2 x i8> addrspace(2)* %in 482*9880d681SAndroid Build Coastguard Worker %ext = sext <2 x i8> %load to <2 x i16> 483*9880d681SAndroid Build Coastguard Worker store <2 x i16> %ext, <2 x i16> addrspace(1)* %out 484*9880d681SAndroid Build Coastguard Worker ret void 485*9880d681SAndroid Build Coastguard Worker} 486*9880d681SAndroid Build Coastguard Worker 487*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v4i8_to_v4i16: 488*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v4i8_to_v4i16(<4 x i16> addrspace(1)* %out, <4 x i8> addrspace(2)* %in) #0 { 489*9880d681SAndroid Build Coastguard Worker %load = load <4 x i8>, <4 x i8> addrspace(2)* %in 490*9880d681SAndroid Build Coastguard Worker %ext = zext <4 x i8> %load to <4 x i16> 491*9880d681SAndroid Build Coastguard Worker store <4 x i16> %ext, <4 x i16> addrspace(1)* %out 492*9880d681SAndroid Build Coastguard Worker ret void 493*9880d681SAndroid Build Coastguard Worker} 494*9880d681SAndroid Build Coastguard Worker 495*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v4i8_to_v4i16: 496*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v4i8_to_v4i16(<4 x i16> addrspace(1)* %out, <4 x i8> addrspace(2)* %in) #0 { 497*9880d681SAndroid Build Coastguard Worker %load = load <4 x i8>, <4 x i8> addrspace(2)* %in 498*9880d681SAndroid Build Coastguard Worker %ext = sext <4 x i8> %load to <4 x i16> 499*9880d681SAndroid Build Coastguard Worker store <4 x i16> %ext, <4 x i16> addrspace(1)* %out 500*9880d681SAndroid Build Coastguard Worker ret void 501*9880d681SAndroid Build Coastguard Worker} 502*9880d681SAndroid Build Coastguard Worker 503*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v8i8_to_v8i16: 504*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v8i8_to_v8i16(<8 x i16> addrspace(1)* %out, <8 x i8> addrspace(2)* %in) #0 { 505*9880d681SAndroid Build Coastguard Worker %load = load <8 x i8>, <8 x i8> addrspace(2)* %in 506*9880d681SAndroid Build Coastguard Worker %ext = zext <8 x i8> %load to <8 x i16> 507*9880d681SAndroid Build Coastguard Worker store <8 x i16> %ext, <8 x i16> addrspace(1)* %out 508*9880d681SAndroid Build Coastguard Worker ret void 509*9880d681SAndroid Build Coastguard Worker} 510*9880d681SAndroid Build Coastguard Worker 511*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v8i8_to_v8i16: 512*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v8i8_to_v8i16(<8 x i16> addrspace(1)* %out, <8 x i8> addrspace(2)* %in) #0 { 513*9880d681SAndroid Build Coastguard Worker %load = load <8 x i8>, <8 x i8> addrspace(2)* %in 514*9880d681SAndroid Build Coastguard Worker %ext = sext <8 x i8> %load to <8 x i16> 515*9880d681SAndroid Build Coastguard Worker store <8 x i16> %ext, <8 x i16> addrspace(1)* %out 516*9880d681SAndroid Build Coastguard Worker ret void 517*9880d681SAndroid Build Coastguard Worker} 518*9880d681SAndroid Build Coastguard Worker 519*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v16i8_to_v16i16: 520*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v16i8_to_v16i16(<16 x i16> addrspace(1)* %out, <16 x i8> addrspace(2)* %in) #0 { 521*9880d681SAndroid Build Coastguard Worker %load = load <16 x i8>, <16 x i8> addrspace(2)* %in 522*9880d681SAndroid Build Coastguard Worker %ext = zext <16 x i8> %load to <16 x i16> 523*9880d681SAndroid Build Coastguard Worker store <16 x i16> %ext, <16 x i16> addrspace(1)* %out 524*9880d681SAndroid Build Coastguard Worker ret void 525*9880d681SAndroid Build Coastguard Worker} 526*9880d681SAndroid Build Coastguard Worker 527*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v16i8_to_v16i16: 528*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v16i8_to_v16i16(<16 x i16> addrspace(1)* %out, <16 x i8> addrspace(2)* %in) #0 { 529*9880d681SAndroid Build Coastguard Worker %load = load <16 x i8>, <16 x i8> addrspace(2)* %in 530*9880d681SAndroid Build Coastguard Worker %ext = sext <16 x i8> %load to <16 x i16> 531*9880d681SAndroid Build Coastguard Worker store <16 x i16> %ext, <16 x i16> addrspace(1)* %out 532*9880d681SAndroid Build Coastguard Worker ret void 533*9880d681SAndroid Build Coastguard Worker} 534*9880d681SAndroid Build Coastguard Worker 535*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v32i8_to_v32i16: 536*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v32i8_to_v32i16(<32 x i16> addrspace(1)* %out, <32 x i8> addrspace(2)* %in) #0 { 537*9880d681SAndroid Build Coastguard Worker %load = load <32 x i8>, <32 x i8> addrspace(2)* %in 538*9880d681SAndroid Build Coastguard Worker %ext = zext <32 x i8> %load to <32 x i16> 539*9880d681SAndroid Build Coastguard Worker store <32 x i16> %ext, <32 x i16> addrspace(1)* %out 540*9880d681SAndroid Build Coastguard Worker ret void 541*9880d681SAndroid Build Coastguard Worker} 542*9880d681SAndroid Build Coastguard Worker 543*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v32i8_to_v32i16: 544*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v32i8_to_v32i16(<32 x i16> addrspace(1)* %out, <32 x i8> addrspace(2)* %in) #0 { 545*9880d681SAndroid Build Coastguard Worker %load = load <32 x i8>, <32 x i8> addrspace(2)* %in 546*9880d681SAndroid Build Coastguard Worker %ext = sext <32 x i8> %load to <32 x i16> 547*9880d681SAndroid Build Coastguard Worker store <32 x i16> %ext, <32 x i16> addrspace(1)* %out 548*9880d681SAndroid Build Coastguard Worker ret void 549*9880d681SAndroid Build Coastguard Worker} 550*9880d681SAndroid Build Coastguard Worker 551*9880d681SAndroid Build Coastguard Worker; XFUNC-LABEL: {{^}}constant_zextload_v64i8_to_v64i16: 552*9880d681SAndroid Build Coastguard Worker; define void @constant_zextload_v64i8_to_v64i16(<64 x i16> addrspace(1)* %out, <64 x i8> addrspace(2)* %in) #0 { 553*9880d681SAndroid Build Coastguard Worker; %load = load <64 x i8>, <64 x i8> addrspace(2)* %in 554*9880d681SAndroid Build Coastguard Worker; %ext = zext <64 x i8> %load to <64 x i16> 555*9880d681SAndroid Build Coastguard Worker; store <64 x i16> %ext, <64 x i16> addrspace(1)* %out 556*9880d681SAndroid Build Coastguard Worker; ret void 557*9880d681SAndroid Build Coastguard Worker; } 558*9880d681SAndroid Build Coastguard Worker 559*9880d681SAndroid Build Coastguard Worker; XFUNC-LABEL: {{^}}constant_sextload_v64i8_to_v64i16: 560*9880d681SAndroid Build Coastguard Worker; define void @constant_sextload_v64i8_to_v64i16(<64 x i16> addrspace(1)* %out, <64 x i8> addrspace(2)* %in) #0 { 561*9880d681SAndroid Build Coastguard Worker; %load = load <64 x i8>, <64 x i8> addrspace(2)* %in 562*9880d681SAndroid Build Coastguard Worker; %ext = sext <64 x i8> %load to <64 x i16> 563*9880d681SAndroid Build Coastguard Worker; store <64 x i16> %ext, <64 x i16> addrspace(1)* %out 564*9880d681SAndroid Build Coastguard Worker; ret void 565*9880d681SAndroid Build Coastguard Worker; } 566*9880d681SAndroid Build Coastguard Worker 567*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind } 568