1; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=GCN-NOHSA -check-prefix=FUNC %s 2; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=kaveri -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=GCN-HSA -check-prefix=FUNC %s 3; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=GCN-NOHSA -check-prefix=FUNC %s 4; RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s 5 6; FUNC-LABEL: {{^}}constant_load_i16: 7; GCN-NOHSA: buffer_load_ushort v{{[0-9]+}} 8; GCN-HSA: flat_load_ushort 9 10; EG: VTX_READ_16 T{{[0-9]+}}.X, T{{[0-9]+}}.X, 0 11define void @constant_load_i16(i16 addrspace(1)* %out, i16 addrspace(2)* %in) { 12entry: 13 %ld = load i16, i16 addrspace(2)* %in 14 store i16 %ld, i16 addrspace(1)* %out 15 ret void 16} 17 18; FUNC-LABEL: {{^}}constant_load_v2i16: 19; GCN: s_load_dword s 20 21; EG: VTX_READ_32 22define void @constant_load_v2i16(<2 x i16> addrspace(1)* %out, <2 x i16> addrspace(2)* %in) { 23entry: 24 %ld = load <2 x i16>, <2 x i16> addrspace(2)* %in 25 store <2 x i16> %ld, <2 x i16> addrspace(1)* %out 26 ret void 27} 28 29; FUNC-LABEL: {{^}}constant_load_v3i16: 30; GCN: s_load_dwordx2 s 31 32; EG-DAG: VTX_READ_32 33; EG-DAG: VTX_READ_16 34define void @constant_load_v3i16(<3 x i16> addrspace(1)* %out, <3 x i16> addrspace(2)* %in) { 35entry: 36 %ld = load <3 x i16>, <3 x i16> addrspace(2)* %in 37 store <3 x i16> %ld, <3 x i16> addrspace(1)* %out 38 ret void 39} 40 41; FUNC-LABEL: {{^}}constant_load_v4i16: 42; GCN: s_load_dwordx2 43 44; EG: VTX_READ_64 45define void @constant_load_v4i16(<4 x i16> addrspace(1)* %out, <4 x i16> addrspace(2)* %in) { 46entry: 47 %ld = load <4 x i16>, <4 x i16> addrspace(2)* %in 48 store <4 x i16> %ld, <4 x i16> addrspace(1)* %out 49 ret void 50} 51 52; FUNC-LABEL: {{^}}constant_load_v8i16: 53; GCN: s_load_dwordx4 54 55; EG: VTX_READ_128 56define void @constant_load_v8i16(<8 x i16> addrspace(1)* %out, <8 x i16> addrspace(2)* %in) { 57entry: 58 %ld = load <8 x i16>, <8 x i16> addrspace(2)* %in 59 store <8 x i16> %ld, <8 x i16> addrspace(1)* %out 60 ret void 61} 62 63; FUNC-LABEL: {{^}}constant_load_v16i16: 64; GCN: s_load_dwordx8 65 66; EG: VTX_READ_128 67; EG: VTX_READ_128 68define void @constant_load_v16i16(<16 x i16> addrspace(1)* %out, <16 x i16> addrspace(2)* %in) { 69entry: 70 %ld = load <16 x i16>, <16 x i16> addrspace(2)* %in 71 store <16 x i16> %ld, <16 x i16> addrspace(1)* %out 72 ret void 73} 74 75; FUNC-LABEL: {{^}}constant_zextload_i16_to_i32: 76; GCN-NOHSA: buffer_load_ushort 77; GCN-NOHSA: buffer_store_dword 78 79; GCN-HSA: flat_load_ushort 80; GCN-HSA: flat_store_dword 81 82; EG: VTX_READ_16 T{{[0-9]+\.X, T[0-9]+\.X}} 83define void @constant_zextload_i16_to_i32(i32 addrspace(1)* %out, i16 addrspace(2)* %in) #0 { 84 %a = load i16, i16 addrspace(2)* %in 85 %ext = zext i16 %a to i32 86 store i32 %ext, i32 addrspace(1)* %out 87 ret void 88} 89 90; FUNC-LABEL: {{^}}constant_sextload_i16_to_i32: 91; GCN-NOHSA: buffer_load_sshort 92; GCN-NOHSA: buffer_store_dword 93 94; GCN-HSA: flat_load_sshort 95; GCN-HSA: flat_store_dword 96 97; EG: VTX_READ_16 [[DST:T[0-9]\.[XYZW]]], [[DST]] 98; EG: BFE_INT {{[* ]*}}T{{[0-9].[XYZW]}}, [[DST]], 0.0, literal 99; EG: 16 100define void @constant_sextload_i16_to_i32(i32 addrspace(1)* %out, i16 addrspace(2)* %in) #0 { 101 %a = load i16, i16 addrspace(2)* %in 102 %ext = sext i16 %a to i32 103 store i32 %ext, i32 addrspace(1)* %out 104 ret void 105} 106 107; FUNC-LABEL: {{^}}constant_zextload_v1i16_to_v1i32: 108; GCN-NOHSA: buffer_load_ushort 109; GCN-HSA: flat_load_ushort 110define void @constant_zextload_v1i16_to_v1i32(<1 x i32> addrspace(1)* %out, <1 x i16> addrspace(2)* %in) #0 { 111 %load = load <1 x i16>, <1 x i16> addrspace(2)* %in 112 %ext = zext <1 x i16> %load to <1 x i32> 113 store <1 x i32> %ext, <1 x i32> addrspace(1)* %out 114 ret void 115} 116 117; FUNC-LABEL: {{^}}constant_sextload_v1i16_to_v1i32: 118; GCN-NOHSA: buffer_load_sshort 119; GCN-HSA: flat_load_sshort 120define void @constant_sextload_v1i16_to_v1i32(<1 x i32> addrspace(1)* %out, <1 x i16> addrspace(2)* %in) #0 { 121 %load = load <1 x i16>, <1 x i16> addrspace(2)* %in 122 %ext = sext <1 x i16> %load to <1 x i32> 123 store <1 x i32> %ext, <1 x i32> addrspace(1)* %out 124 ret void 125} 126 127; FUNC-LABEL: {{^}}constant_zextload_v2i16_to_v2i32: 128; GCN: s_load_dword s 129; GCN-DAG: s_and_b32 s{{[0-9]+}}, s{{[0-9]+}}, 0xffff{{$}} 130; GCN-DAG: s_lshr_b32 s{{[0-9]+}}, s{{[0-9]+}}, 16 131define void @constant_zextload_v2i16_to_v2i32(<2 x i32> addrspace(1)* %out, <2 x i16> addrspace(2)* %in) #0 { 132 %load = load <2 x i16>, <2 x i16> addrspace(2)* %in 133 %ext = zext <2 x i16> %load to <2 x i32> 134 store <2 x i32> %ext, <2 x i32> addrspace(1)* %out 135 ret void 136} 137 138; FUNC-LABEL: {{^}}constant_sextload_v2i16_to_v2i32: 139; GCN: s_load_dword s 140; GCN-DAG: s_ashr_i32 141; GCN-DAG: s_sext_i32_i16 142 143; EG-DAG: VTX_READ_16 [[DST_X:T[0-9]\.[XYZW]]], [[DST_X]] 144; EG-DAG: VTX_READ_16 [[DST_Y:T[0-9]\.[XYZW]]], [[DST_Y]] 145; EG-DAG: BFE_INT {{[* ]*}}T{{[0-9].[XYZW]}}, [[DST_X]], 0.0, literal 146; EG-DAG: BFE_INT {{[* ]*}}T{{[0-9].[XYZW]}}, [[DST_Y]], 0.0, literal 147; EG-DAG: 16 148; EG-DAG: 16 149define void @constant_sextload_v2i16_to_v2i32(<2 x i32> addrspace(1)* %out, <2 x i16> addrspace(2)* %in) #0 { 150 %load = load <2 x i16>, <2 x i16> addrspace(2)* %in 151 %ext = sext <2 x i16> %load to <2 x i32> 152 store <2 x i32> %ext, <2 x i32> addrspace(1)* %out 153 ret void 154} 155 156; FUNC-LABEL: {{^}}constant_constant_zextload_v3i16_to_v3i32: 157; GCN: s_load_dwordx2 158define void @constant_constant_zextload_v3i16_to_v3i32(<3 x i32> addrspace(1)* %out, <3 x i16> addrspace(2)* %in) { 159entry: 160 %ld = load <3 x i16>, <3 x i16> addrspace(2)* %in 161 %ext = zext <3 x i16> %ld to <3 x i32> 162 store <3 x i32> %ext, <3 x i32> addrspace(1)* %out 163 ret void 164} 165 166; FUNC-LABEL: {{^}}constant_constant_sextload_v3i16_to_v3i32: 167; GCN: s_load_dwordx2 168define void @constant_constant_sextload_v3i16_to_v3i32(<3 x i32> addrspace(1)* %out, <3 x i16> addrspace(2)* %in) { 169entry: 170 %ld = load <3 x i16>, <3 x i16> addrspace(2)* %in 171 %ext = sext <3 x i16> %ld to <3 x i32> 172 store <3 x i32> %ext, <3 x i32> addrspace(1)* %out 173 ret void 174} 175 176; FUNC-LABEL: {{^}}constant_constant_zextload_v4i16_to_v4i32: 177; GCN: s_load_dwordx2 178; GCN-DAG: s_and_b32 179; GCN-DAG: s_lshr_b32 180 181; EG: VTX_READ_16 182; EG: VTX_READ_16 183; EG: VTX_READ_16 184; EG: VTX_READ_16 185define void @constant_constant_zextload_v4i16_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x i16> addrspace(2)* %in) #0 { 186 %load = load <4 x i16>, <4 x i16> addrspace(2)* %in 187 %ext = zext <4 x i16> %load to <4 x i32> 188 store <4 x i32> %ext, <4 x i32> addrspace(1)* %out 189 ret void 190} 191 192; FUNC-LABEL: {{^}}constant_sextload_v4i16_to_v4i32: 193; GCN: s_load_dwordx2 194; GCN-DAG: s_ashr_i32 195; GCN-DAG: s_sext_i32_i16 196 197; EG-DAG: VTX_READ_16 [[DST_X:T[0-9]\.[XYZW]]], [[DST_X]] 198; EG-DAG: VTX_READ_16 [[DST_Y:T[0-9]\.[XYZW]]], [[DST_Y]] 199; EG-DAG: VTX_READ_16 [[DST_Z:T[0-9]\.[XYZW]]], [[DST_Z]] 200; EG-DAG: VTX_READ_16 [[DST_W:T[0-9]\.[XYZW]]], [[DST_W]] 201; EG-DAG: BFE_INT {{[* ]*}}T{{[0-9].[XYZW]}}, [[DST_X]], 0.0, literal 202; EG-DAG: BFE_INT {{[* ]*}}T{{[0-9].[XYZW]}}, [[DST_Y]], 0.0, literal 203; EG-DAG: BFE_INT {{[* ]*}}T{{[0-9].[XYZW]}}, [[DST_Z]], 0.0, literal 204; EG-DAG: BFE_INT {{[* ]*}}T{{[0-9].[XYZW]}}, [[DST_W]], 0.0, literal 205; EG-DAG: 16 206; EG-DAG: 16 207; EG-DAG: 16 208; EG-DAG: 16 209define void @constant_sextload_v4i16_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x i16> addrspace(2)* %in) #0 { 210 %load = load <4 x i16>, <4 x i16> addrspace(2)* %in 211 %ext = sext <4 x i16> %load to <4 x i32> 212 store <4 x i32> %ext, <4 x i32> addrspace(1)* %out 213 ret void 214} 215 216; FUNC-LABEL: {{^}}constant_zextload_v8i16_to_v8i32: 217; GCN: s_load_dwordx4 218; GCN-DAG: s_and_b32 219; GCN-DAG: s_lshr_b32 220define void @constant_zextload_v8i16_to_v8i32(<8 x i32> addrspace(1)* %out, <8 x i16> addrspace(2)* %in) #0 { 221 %load = load <8 x i16>, <8 x i16> addrspace(2)* %in 222 %ext = zext <8 x i16> %load to <8 x i32> 223 store <8 x i32> %ext, <8 x i32> addrspace(1)* %out 224 ret void 225} 226 227; FUNC-LABEL: {{^}}constant_sextload_v8i16_to_v8i32: 228; GCN: s_load_dwordx4 229; GCN-DAG: s_ashr_i32 230; GCN-DAG: s_sext_i32_i16 231define void @constant_sextload_v8i16_to_v8i32(<8 x i32> addrspace(1)* %out, <8 x i16> addrspace(2)* %in) #0 { 232 %load = load <8 x i16>, <8 x i16> addrspace(2)* %in 233 %ext = sext <8 x i16> %load to <8 x i32> 234 store <8 x i32> %ext, <8 x i32> addrspace(1)* %out 235 ret void 236} 237 238; FUNC-LABEL: {{^}}constant_zextload_v16i16_to_v16i32: 239; GCN: s_load_dwordx8 240; GCN-DAG: s_and_b32 241; GCN-DAG: s_lshr_b32 242define void @constant_zextload_v16i16_to_v16i32(<16 x i32> addrspace(1)* %out, <16 x i16> addrspace(2)* %in) #0 { 243 %load = load <16 x i16>, <16 x i16> addrspace(2)* %in 244 %ext = zext <16 x i16> %load to <16 x i32> 245 store <16 x i32> %ext, <16 x i32> addrspace(1)* %out 246 ret void 247} 248 249; FUNC-LABEL: {{^}}constant_sextload_v16i16_to_v16i32: 250; GCN: s_load_dwordx8 251; GCN-DAG: s_ashr_i32 252; GCN-DAG: s_sext_i32_i16 253define void @constant_sextload_v16i16_to_v16i32(<16 x i32> addrspace(1)* %out, <16 x i16> addrspace(2)* %in) #0 { 254 %load = load <16 x i16>, <16 x i16> addrspace(2)* %in 255 %ext = sext <16 x i16> %load to <16 x i32> 256 store <16 x i32> %ext, <16 x i32> addrspace(1)* %out 257 ret void 258} 259 260; FUNC-LABEL: {{^}}constant_zextload_v32i16_to_v32i32: 261; GCN-DAG: s_load_dwordx16 262; GCN-DAG: s_mov_b32 [[K:s[0-9]+]], 0xffff{{$}} 263; GCN: s_and_b32 s{{[0-9]+}}, s{{[0-9]+}}, [[K]] 264; GCN: s_lshr_b32 s{{[0-9]+}}, s{{[0-9]+}}, 16 265define void @constant_zextload_v32i16_to_v32i32(<32 x i32> addrspace(1)* %out, <32 x i16> addrspace(2)* %in) #0 { 266 %load = load <32 x i16>, <32 x i16> addrspace(2)* %in 267 %ext = zext <32 x i16> %load to <32 x i32> 268 store <32 x i32> %ext, <32 x i32> addrspace(1)* %out 269 ret void 270} 271 272; FUNC-LABEL: {{^}}constant_sextload_v32i16_to_v32i32: 273; GCN: s_load_dwordx16 274; GCN-DAG: s_ashr_i32 275; GCN-DAG: s_sext_i32_i16 276define void @constant_sextload_v32i16_to_v32i32(<32 x i32> addrspace(1)* %out, <32 x i16> addrspace(2)* %in) #0 { 277 %load = load <32 x i16>, <32 x i16> addrspace(2)* %in 278 %ext = sext <32 x i16> %load to <32 x i32> 279 store <32 x i32> %ext, <32 x i32> addrspace(1)* %out 280 ret void 281} 282 283; FUNC-LABEL: {{^}}constant_zextload_v64i16_to_v64i32: 284; GCN: s_load_dwordx16 285; GCN: s_load_dwordx16 286define void @constant_zextload_v64i16_to_v64i32(<64 x i32> addrspace(1)* %out, <64 x i16> addrspace(2)* %in) #0 { 287 %load = load <64 x i16>, <64 x i16> addrspace(2)* %in 288 %ext = zext <64 x i16> %load to <64 x i32> 289 store <64 x i32> %ext, <64 x i32> addrspace(1)* %out 290 ret void 291} 292 293; FUNC-LABEL: {{^}}constant_sextload_v64i16_to_v64i32: 294define void @constant_sextload_v64i16_to_v64i32(<64 x i32> addrspace(1)* %out, <64 x i16> addrspace(2)* %in) #0 { 295 %load = load <64 x i16>, <64 x i16> addrspace(2)* %in 296 %ext = sext <64 x i16> %load to <64 x i32> 297 store <64 x i32> %ext, <64 x i32> addrspace(1)* %out 298 ret void 299} 300 301; FUNC-LABEL: {{^}}constant_zextload_i16_to_i64: 302; GCN-NOHSA-DAG: buffer_load_ushort v[[LO:[0-9]+]], 303; GCN-HSA-DAG: flat_load_ushort v[[LO:[0-9]+]], 304; GCN-DAG: v_mov_b32_e32 v[[HI:[0-9]+]], 0{{$}} 305 306; GCN-NOHSA: buffer_store_dwordx2 v{{\[}}[[LO]]:[[HI]]] 307; GCN-HSA: flat_store_dwordx2 v{{\[[0-9]+:[0-9]+\]}}, v{{\[}}[[LO]]:[[HI]]{{\]}} 308define void @constant_zextload_i16_to_i64(i64 addrspace(1)* %out, i16 addrspace(2)* %in) #0 { 309 %a = load i16, i16 addrspace(2)* %in 310 %ext = zext i16 %a to i64 311 store i64 %ext, i64 addrspace(1)* %out 312 ret void 313} 314 315; FUNC-LABEL: {{^}}constant_sextload_i16_to_i64: 316; GCN-NOHSA-DAG: buffer_load_sshort v[[LO:[0-9]+]], 317; GCN-HSA-DAG: flat_load_sshort v[[LO:[0-9]+]], 318; GCN-DAG: v_ashrrev_i32_e32 v[[HI:[0-9]+]], 31, v[[LO]] 319 320; GCN-NOHSA: buffer_store_dwordx2 v{{\[}}[[LO]]:[[HI]]] 321; GCN-HSA: flat_store_dwordx2 v{{\[[0-9]+:[0-9]+\]}}, v{{\[}}[[LO]]:[[HI]]{{\]}} 322define void @constant_sextload_i16_to_i64(i64 addrspace(1)* %out, i16 addrspace(2)* %in) #0 { 323 %a = load i16, i16 addrspace(2)* %in 324 %ext = sext i16 %a to i64 325 store i64 %ext, i64 addrspace(1)* %out 326 ret void 327} 328 329; FUNC-LABEL: {{^}}constant_zextload_v1i16_to_v1i64: 330define void @constant_zextload_v1i16_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i16> addrspace(2)* %in) #0 { 331 %load = load <1 x i16>, <1 x i16> addrspace(2)* %in 332 %ext = zext <1 x i16> %load to <1 x i64> 333 store <1 x i64> %ext, <1 x i64> addrspace(1)* %out 334 ret void 335} 336 337; FUNC-LABEL: {{^}}constant_sextload_v1i16_to_v1i64: 338define void @constant_sextload_v1i16_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i16> addrspace(2)* %in) #0 { 339 %load = load <1 x i16>, <1 x i16> addrspace(2)* %in 340 %ext = sext <1 x i16> %load to <1 x i64> 341 store <1 x i64> %ext, <1 x i64> addrspace(1)* %out 342 ret void 343} 344 345; FUNC-LABEL: {{^}}constant_zextload_v2i16_to_v2i64: 346define void @constant_zextload_v2i16_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i16> addrspace(2)* %in) #0 { 347 %load = load <2 x i16>, <2 x i16> addrspace(2)* %in 348 %ext = zext <2 x i16> %load to <2 x i64> 349 store <2 x i64> %ext, <2 x i64> addrspace(1)* %out 350 ret void 351} 352 353; FUNC-LABEL: {{^}}constant_sextload_v2i16_to_v2i64: 354define void @constant_sextload_v2i16_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i16> addrspace(2)* %in) #0 { 355 %load = load <2 x i16>, <2 x i16> addrspace(2)* %in 356 %ext = sext <2 x i16> %load to <2 x i64> 357 store <2 x i64> %ext, <2 x i64> addrspace(1)* %out 358 ret void 359} 360 361; FUNC-LABEL: {{^}}constant_zextload_v4i16_to_v4i64: 362define void @constant_zextload_v4i16_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i16> addrspace(2)* %in) #0 { 363 %load = load <4 x i16>, <4 x i16> addrspace(2)* %in 364 %ext = zext <4 x i16> %load to <4 x i64> 365 store <4 x i64> %ext, <4 x i64> addrspace(1)* %out 366 ret void 367} 368 369; FUNC-LABEL: {{^}}constant_sextload_v4i16_to_v4i64: 370define void @constant_sextload_v4i16_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i16> addrspace(2)* %in) #0 { 371 %load = load <4 x i16>, <4 x i16> addrspace(2)* %in 372 %ext = sext <4 x i16> %load to <4 x i64> 373 store <4 x i64> %ext, <4 x i64> addrspace(1)* %out 374 ret void 375} 376 377; FUNC-LABEL: {{^}}constant_zextload_v8i16_to_v8i64: 378define void @constant_zextload_v8i16_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i16> addrspace(2)* %in) #0 { 379 %load = load <8 x i16>, <8 x i16> addrspace(2)* %in 380 %ext = zext <8 x i16> %load to <8 x i64> 381 store <8 x i64> %ext, <8 x i64> addrspace(1)* %out 382 ret void 383} 384 385; FUNC-LABEL: {{^}}constant_sextload_v8i16_to_v8i64: 386define void @constant_sextload_v8i16_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i16> addrspace(2)* %in) #0 { 387 %load = load <8 x i16>, <8 x i16> addrspace(2)* %in 388 %ext = sext <8 x i16> %load to <8 x i64> 389 store <8 x i64> %ext, <8 x i64> addrspace(1)* %out 390 ret void 391} 392 393; FUNC-LABEL: {{^}}constant_zextload_v16i16_to_v16i64: 394define void @constant_zextload_v16i16_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i16> addrspace(2)* %in) #0 { 395 %load = load <16 x i16>, <16 x i16> addrspace(2)* %in 396 %ext = zext <16 x i16> %load to <16 x i64> 397 store <16 x i64> %ext, <16 x i64> addrspace(1)* %out 398 ret void 399} 400 401; FUNC-LABEL: {{^}}constant_sextload_v16i16_to_v16i64: 402define void @constant_sextload_v16i16_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i16> addrspace(2)* %in) #0 { 403 %load = load <16 x i16>, <16 x i16> addrspace(2)* %in 404 %ext = sext <16 x i16> %load to <16 x i64> 405 store <16 x i64> %ext, <16 x i64> addrspace(1)* %out 406 ret void 407} 408 409; FUNC-LABEL: {{^}}constant_zextload_v32i16_to_v32i64: 410define void @constant_zextload_v32i16_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i16> addrspace(2)* %in) #0 { 411 %load = load <32 x i16>, <32 x i16> addrspace(2)* %in 412 %ext = zext <32 x i16> %load to <32 x i64> 413 store <32 x i64> %ext, <32 x i64> addrspace(1)* %out 414 ret void 415} 416 417; FUNC-LABEL: {{^}}constant_sextload_v32i16_to_v32i64: 418define void @constant_sextload_v32i16_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i16> addrspace(2)* %in) #0 { 419 %load = load <32 x i16>, <32 x i16> addrspace(2)* %in 420 %ext = sext <32 x i16> %load to <32 x i64> 421 store <32 x i64> %ext, <32 x i64> addrspace(1)* %out 422 ret void 423} 424 425; ; XFUNC-LABEL: {{^}}constant_zextload_v64i16_to_v64i64: 426; define void @constant_zextload_v64i16_to_v64i64(<64 x i64> addrspace(1)* %out, <64 x i16> addrspace(2)* %in) #0 { 427; %load = load <64 x i16>, <64 x i16> addrspace(2)* %in 428; %ext = zext <64 x i16> %load to <64 x i64> 429; store <64 x i64> %ext, <64 x i64> addrspace(1)* %out 430; ret void 431; } 432 433; ; XFUNC-LABEL: {{^}}constant_sextload_v64i16_to_v64i64: 434; define void @constant_sextload_v64i16_to_v64i64(<64 x i64> addrspace(1)* %out, <64 x i16> addrspace(2)* %in) #0 { 435; %load = load <64 x i16>, <64 x i16> addrspace(2)* %in 436; %ext = sext <64 x i16> %load to <64 x i64> 437; store <64 x i64> %ext, <64 x i64> addrspace(1)* %out 438; ret void 439; } 440 441attributes #0 = { nounwind } 442