1; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=FUNC %s 2; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=FUNC %s 3; RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s 4 5; FUNC-LABEL: {{^}}local_load_i16: 6; GCN: ds_read_u16 v{{[0-9]+}} 7 8; EG: LDS_USHORT_READ_RET 9define void @local_load_i16(i16 addrspace(3)* %out, i16 addrspace(3)* %in) { 10entry: 11 %ld = load i16, i16 addrspace(3)* %in 12 store i16 %ld, i16 addrspace(3)* %out 13 ret void 14} 15 16; FUNC-LABEL: {{^}}local_load_v2i16: 17; GCN: ds_read_b32 18 19; EG: LDS_READ_RET 20define void @local_load_v2i16(<2 x i16> addrspace(3)* %out, <2 x i16> addrspace(3)* %in) { 21entry: 22 %ld = load <2 x i16>, <2 x i16> addrspace(3)* %in 23 store <2 x i16> %ld, <2 x i16> addrspace(3)* %out 24 ret void 25} 26 27; FUNC-LABEL: {{^}}local_load_v3i16: 28; GCN: ds_read_b64 29; GCN-DAG: ds_write_b32 30; GCN-DAG: ds_write_b16 31 32; EG-DAG: LDS_USHORT_READ_RET 33; EG-DAG: LDS_READ_RET 34define void @local_load_v3i16(<3 x i16> addrspace(3)* %out, <3 x i16> addrspace(3)* %in) { 35entry: 36 %ld = load <3 x i16>, <3 x i16> addrspace(3)* %in 37 store <3 x i16> %ld, <3 x i16> addrspace(3)* %out 38 ret void 39} 40 41; FUNC-LABEL: {{^}}local_load_v4i16: 42; GCN: ds_read_b64 43 44; EG: LDS_READ_RET 45; EG: LDS_READ_RET 46define void @local_load_v4i16(<4 x i16> addrspace(3)* %out, <4 x i16> addrspace(3)* %in) { 47entry: 48 %ld = load <4 x i16>, <4 x i16> addrspace(3)* %in 49 store <4 x i16> %ld, <4 x i16> addrspace(3)* %out 50 ret void 51} 52 53; FUNC-LABEL: {{^}}local_load_v8i16: 54; GCN: ds_read2_b64 v{{\[[0-9]+:[0-9]+\]}}, v{{[0-9]+}} offset0:1{{$}} 55 56; EG: LDS_READ_RET 57; EG: LDS_READ_RET 58; EG: LDS_READ_RET 59; EG: LDS_READ_RET 60define void @local_load_v8i16(<8 x i16> addrspace(3)* %out, <8 x i16> addrspace(3)* %in) { 61entry: 62 %ld = load <8 x i16>, <8 x i16> addrspace(3)* %in 63 store <8 x i16> %ld, <8 x i16> addrspace(3)* %out 64 ret void 65} 66 67; FUNC-LABEL: {{^}}local_load_v16i16: 68; GCN-DAG: ds_read2_b64 v{{\[[0-9]+:[0-9]+\]}}, v{{[0-9]+}} offset0:3 offset1:2{{$}} 69; GCN-DAG: ds_read2_b64 v{{\[[0-9]+:[0-9]+\]}}, v{{[0-9]+}} offset0:1{{$}} 70 71 72; EG: LDS_READ_RET 73; EG: LDS_READ_RET 74; EG: LDS_READ_RET 75; EG: LDS_READ_RET 76 77; EG: LDS_READ_RET 78; EG: LDS_READ_RET 79; EG: LDS_READ_RET 80; EG: LDS_READ_RET 81define void @local_load_v16i16(<16 x i16> addrspace(3)* %out, <16 x i16> addrspace(3)* %in) { 82entry: 83 %ld = load <16 x i16>, <16 x i16> addrspace(3)* %in 84 store <16 x i16> %ld, <16 x i16> addrspace(3)* %out 85 ret void 86} 87 88; FUNC-LABEL: {{^}}local_zextload_i16_to_i32: 89; GCN: ds_read_u16 90; GCN: ds_write_b32 91 92; EG: LDS_USHORT_READ_RET 93define void @local_zextload_i16_to_i32(i32 addrspace(3)* %out, i16 addrspace(3)* %in) #0 { 94 %a = load i16, i16 addrspace(3)* %in 95 %ext = zext i16 %a to i32 96 store i32 %ext, i32 addrspace(3)* %out 97 ret void 98} 99 100; FUNC-LABEL: {{^}}local_sextload_i16_to_i32: 101; GCN-NOT: s_wqm_b64 102; GCN: s_mov_b32 m0 103; GCN: ds_read_i16 104 105; EG: LDS_USHORT_READ_RET 106; EG: BFE_INT 107define void @local_sextload_i16_to_i32(i32 addrspace(3)* %out, i16 addrspace(3)* %in) #0 { 108 %a = load i16, i16 addrspace(3)* %in 109 %ext = sext i16 %a to i32 110 store i32 %ext, i32 addrspace(3)* %out 111 ret void 112} 113 114; FUNC-LABEL: {{^}}local_zextload_v1i16_to_v1i32: 115; GCN: ds_read_u16 116define void @local_zextload_v1i16_to_v1i32(<1 x i32> addrspace(3)* %out, <1 x i16> addrspace(3)* %in) #0 { 117 %load = load <1 x i16>, <1 x i16> addrspace(3)* %in 118 %ext = zext <1 x i16> %load to <1 x i32> 119 store <1 x i32> %ext, <1 x i32> addrspace(3)* %out 120 ret void 121} 122 123; FUNC-LABEL: {{^}}local_sextload_v1i16_to_v1i32: 124; GCN: ds_read_i16 125define void @local_sextload_v1i16_to_v1i32(<1 x i32> addrspace(3)* %out, <1 x i16> addrspace(3)* %in) #0 { 126 %load = load <1 x i16>, <1 x i16> addrspace(3)* %in 127 %ext = sext <1 x i16> %load to <1 x i32> 128 store <1 x i32> %ext, <1 x i32> addrspace(3)* %out 129 ret void 130} 131 132; FUNC-LABEL: {{^}}local_zextload_v2i16_to_v2i32: 133; GCN-NOT: s_wqm_b64 134; GCN: s_mov_b32 m0 135; GCN: ds_read_u16 136; GCN: ds_read_u16 137 138; EG: LDS_USHORT_READ_RET 139; EG: LDS_USHORT_READ_RET 140define void @local_zextload_v2i16_to_v2i32(<2 x i32> addrspace(3)* %out, <2 x i16> addrspace(3)* %in) #0 { 141 %load = load <2 x i16>, <2 x i16> addrspace(3)* %in 142 %ext = zext <2 x i16> %load to <2 x i32> 143 store <2 x i32> %ext, <2 x i32> addrspace(3)* %out 144 ret void 145} 146 147; FUNC-LABEL: {{^}}local_sextload_v2i16_to_v2i32: 148; GCN-NOT: s_wqm_b64 149; GCN: s_mov_b32 m0 150; GCN: ds_read_i16 151; GCN: ds_read_i16 152 153; EG-DAG: LDS_USHORT_READ_RET 154; EG-DAG: LDS_USHORT_READ_RET 155; EG-DAG: BFE_INT 156; EG-DAG: BFE_INT 157define void @local_sextload_v2i16_to_v2i32(<2 x i32> addrspace(3)* %out, <2 x i16> addrspace(3)* %in) #0 { 158 %load = load <2 x i16>, <2 x i16> addrspace(3)* %in 159 %ext = sext <2 x i16> %load to <2 x i32> 160 store <2 x i32> %ext, <2 x i32> addrspace(3)* %out 161 ret void 162} 163 164; FUNC-LABEL: {{^}}local_local_zextload_v3i16_to_v3i32: 165; GCN: ds_read_b64 166; GCN-DAG: ds_write_b32 167; GCN-DAG: ds_write_b64 168define void @local_local_zextload_v3i16_to_v3i32(<3 x i32> addrspace(3)* %out, <3 x i16> addrspace(3)* %in) { 169entry: 170 %ld = load <3 x i16>, <3 x i16> addrspace(3)* %in 171 %ext = zext <3 x i16> %ld to <3 x i32> 172 store <3 x i32> %ext, <3 x i32> addrspace(3)* %out 173 ret void 174} 175 176; FUNC-LABEL: {{^}}local_local_sextload_v3i16_to_v3i32: 177; GCN: ds_read_b64 178; GCN-DAG: ds_write_b32 179; GCN-DAG: ds_write_b64 180define void @local_local_sextload_v3i16_to_v3i32(<3 x i32> addrspace(3)* %out, <3 x i16> addrspace(3)* %in) { 181entry: 182 %ld = load <3 x i16>, <3 x i16> addrspace(3)* %in 183 %ext = sext <3 x i16> %ld to <3 x i32> 184 store <3 x i32> %ext, <3 x i32> addrspace(3)* %out 185 ret void 186} 187 188; FUNC-LABEL: {{^}}local_local_zextload_v4i16_to_v4i32: 189; GCN-NOT: s_wqm_b64 190; GCN: s_mov_b32 m0 191; GCN: ds_read_u16 192; GCN: ds_read_u16 193; GCN: ds_read_u16 194; GCN: ds_read_u16 195 196; EG: LDS_USHORT_READ_RET 197; EG: LDS_USHORT_READ_RET 198; EG: LDS_USHORT_READ_RET 199; EG: LDS_USHORT_READ_RET 200define void @local_local_zextload_v4i16_to_v4i32(<4 x i32> addrspace(3)* %out, <4 x i16> addrspace(3)* %in) #0 { 201 %load = load <4 x i16>, <4 x i16> addrspace(3)* %in 202 %ext = zext <4 x i16> %load to <4 x i32> 203 store <4 x i32> %ext, <4 x i32> addrspace(3)* %out 204 ret void 205} 206 207; FUNC-LABEL: {{^}}local_sextload_v4i16_to_v4i32: 208; GCN-NOT: s_wqm_b64 209; GCN: s_mov_b32 m0 210; GCN: ds_read_i16 211; GCN: ds_read_i16 212; GCN: ds_read_i16 213; GCN: ds_read_i16 214 215; EG-DAG: LDS_USHORT_READ_RET 216; EG-DAG: LDS_USHORT_READ_RET 217; EG-DAG: LDS_USHORT_READ_RET 218; EG-DAG: LDS_USHORT_READ_RET 219; EG-DAG: BFE_INT 220; EG-DAG: BFE_INT 221; EG-DAG: BFE_INT 222; EG-DAG: BFE_INT 223define void @local_sextload_v4i16_to_v4i32(<4 x i32> addrspace(3)* %out, <4 x i16> addrspace(3)* %in) #0 { 224 %load = load <4 x i16>, <4 x i16> addrspace(3)* %in 225 %ext = sext <4 x i16> %load to <4 x i32> 226 store <4 x i32> %ext, <4 x i32> addrspace(3)* %out 227 ret void 228} 229 230; FUNC-LABEL: {{^}}local_zextload_v8i16_to_v8i32: 231; GCN: ds_read_u16 232; GCN: ds_read_u16 233; GCN: ds_read_u16 234; GCN: ds_read_u16 235; GCN: ds_read_u16 236; GCN: ds_read_u16 237; GCN: ds_read_u16 238; GCN: ds_read_u16 239define void @local_zextload_v8i16_to_v8i32(<8 x i32> addrspace(3)* %out, <8 x i16> addrspace(3)* %in) #0 { 240 %load = load <8 x i16>, <8 x i16> addrspace(3)* %in 241 %ext = zext <8 x i16> %load to <8 x i32> 242 store <8 x i32> %ext, <8 x i32> addrspace(3)* %out 243 ret void 244} 245 246; FUNC-LABEL: {{^}}local_sextload_v8i16_to_v8i32: 247; GCN: ds_read_i16 248; GCN: ds_read_i16 249; GCN: ds_read_i16 250; GCN: ds_read_i16 251; GCN: ds_read_i16 252; GCN: ds_read_i16 253; GCN: ds_read_i16 254; GCN: ds_read_i16 255define void @local_sextload_v8i16_to_v8i32(<8 x i32> addrspace(3)* %out, <8 x i16> addrspace(3)* %in) #0 { 256 %load = load <8 x i16>, <8 x i16> addrspace(3)* %in 257 %ext = sext <8 x i16> %load to <8 x i32> 258 store <8 x i32> %ext, <8 x i32> addrspace(3)* %out 259 ret void 260} 261 262; FUNC-LABEL: {{^}}local_zextload_v16i16_to_v16i32: 263; GCN: ds_read_u16 264; GCN: ds_read_u16 265; GCN: ds_read_u16 266; GCN: ds_read_u16 267; GCN: ds_read_u16 268; GCN: ds_read_u16 269; GCN: ds_read_u16 270; GCN: ds_read_u16 271; GCN: ds_read_u16 272; GCN: ds_read_u16 273; GCN: ds_read_u16 274; GCN: ds_read_u16 275; GCN: ds_read_u16 276; GCN: ds_read_u16 277; GCN: ds_read_u16 278; GCN: ds_read_u16 279define void @local_zextload_v16i16_to_v16i32(<16 x i32> addrspace(3)* %out, <16 x i16> addrspace(3)* %in) #0 { 280 %load = load <16 x i16>, <16 x i16> addrspace(3)* %in 281 %ext = zext <16 x i16> %load to <16 x i32> 282 store <16 x i32> %ext, <16 x i32> addrspace(3)* %out 283 ret void 284} 285 286; FUNC-LABEL: {{^}}local_sextload_v16i16_to_v16i32: 287; GCN: ds_read_i16 288; GCN: ds_read_i16 289; GCN: ds_read_i16 290; GCN: ds_read_i16 291; GCN: ds_read_i16 292; GCN: ds_read_i16 293; GCN: ds_read_i16 294; GCN: ds_read_i16 295; GCN: ds_read_i16 296; GCN: ds_read_i16 297; GCN: ds_read_i16 298; GCN: ds_read_i16 299; GCN: ds_read_i16 300; GCN: ds_read_i16 301; GCN: ds_read_i16 302; GCN: ds_read_i16 303define void @local_sextload_v16i16_to_v16i32(<16 x i32> addrspace(3)* %out, <16 x i16> addrspace(3)* %in) #0 { 304 %load = load <16 x i16>, <16 x i16> addrspace(3)* %in 305 %ext = sext <16 x i16> %load to <16 x i32> 306 store <16 x i32> %ext, <16 x i32> addrspace(3)* %out 307 ret void 308} 309 310; FUNC-LABEL: {{^}}local_zextload_v32i16_to_v32i32: 311; GCN: ds_read_u16 312; GCN: ds_read_u16 313; GCN: ds_read_u16 314; GCN: ds_read_u16 315; GCN: ds_read_u16 316; GCN: ds_read_u16 317; GCN: ds_read_u16 318; GCN: ds_read_u16 319; GCN: ds_read_u16 320; GCN: ds_read_u16 321; GCN: ds_read_u16 322; GCN: ds_read_u16 323; GCN: ds_read_u16 324; GCN: ds_read_u16 325; GCN: ds_read_u16 326; GCN: ds_read_u16 327; GCN: ds_read_u16 328; GCN: ds_read_u16 329; GCN: ds_read_u16 330; GCN: ds_read_u16 331; GCN: ds_read_u16 332; GCN: ds_read_u16 333; GCN: ds_read_u16 334; GCN: ds_read_u16 335; GCN: ds_read_u16 336; GCN: ds_read_u16 337; GCN: ds_read_u16 338; GCN: ds_read_u16 339; GCN: ds_read_u16 340; GCN: ds_read_u16 341; GCN: ds_read_u16 342; GCN: ds_read_u16 343 344define void @local_zextload_v32i16_to_v32i32(<32 x i32> addrspace(3)* %out, <32 x i16> addrspace(3)* %in) #0 { 345 %load = load <32 x i16>, <32 x i16> addrspace(3)* %in 346 %ext = zext <32 x i16> %load to <32 x i32> 347 store <32 x i32> %ext, <32 x i32> addrspace(3)* %out 348 ret void 349} 350 351; FUNC-LABEL: {{^}}local_sextload_v32i16_to_v32i32: 352; GCN: ds_read_i16 353; GCN: ds_read_i16 354; GCN: ds_read_i16 355; GCN: ds_read_i16 356; GCN: ds_read_i16 357; GCN: ds_read_i16 358; GCN: ds_read_i16 359; GCN: ds_read_i16 360; GCN: ds_read_i16 361; GCN: ds_read_i16 362; GCN: ds_read_i16 363; GCN: ds_read_i16 364; GCN: ds_read_i16 365; GCN: ds_read_i16 366; GCN: ds_read_i16 367; GCN: ds_read_i16 368; GCN: ds_read_i16 369; GCN: ds_read_i16 370; GCN: ds_read_i16 371; GCN: ds_read_i16 372; GCN: ds_read_i16 373; GCN: ds_read_i16 374; GCN: ds_read_i16 375; GCN: ds_read_i16 376; GCN: ds_read_i16 377; GCN: ds_read_i16 378; GCN: ds_read_i16 379; GCN: ds_read_i16 380; GCN: ds_read_i16 381; GCN: ds_read_i16 382; GCN: ds_read_i16 383; GCN: ds_read_i16 384define void @local_sextload_v32i16_to_v32i32(<32 x i32> addrspace(3)* %out, <32 x i16> addrspace(3)* %in) #0 { 385 %load = load <32 x i16>, <32 x i16> addrspace(3)* %in 386 %ext = sext <32 x i16> %load to <32 x i32> 387 store <32 x i32> %ext, <32 x i32> addrspace(3)* %out 388 ret void 389} 390 391; FUNC-LABEL: {{^}}local_zextload_v64i16_to_v64i32: 392; GCN: ds_read_u16 393; GCN: ds_read_u16 394; GCN: ds_read_u16 395; GCN: ds_read_u16 396; GCN: ds_read_u16 397; GCN: ds_read_u16 398; GCN: ds_read_u16 399; GCN: ds_read_u16 400; GCN: ds_read_u16 401; GCN: ds_read_u16 402; GCN: ds_read_u16 403; GCN: ds_read_u16 404; GCN: ds_read_u16 405; GCN: ds_read_u16 406; GCN: ds_read_u16 407; GCN: ds_read_u16 408; GCN: ds_read_u16 409; GCN: ds_read_u16 410; GCN: ds_read_u16 411; GCN: ds_read_u16 412; GCN: ds_read_u16 413; GCN: ds_read_u16 414; GCN: ds_read_u16 415; GCN: ds_read_u16 416; GCN: ds_read_u16 417; GCN: ds_read_u16 418; GCN: ds_read_u16 419; GCN: ds_read_u16 420; GCN: ds_read_u16 421; GCN: ds_read_u16 422; GCN: ds_read_u16 423; GCN: ds_read_u16 424; GCN: ds_read_u16 425; GCN: ds_read_u16 426; GCN: ds_read_u16 427; GCN: ds_read_u16 428; GCN: ds_read_u16 429; GCN: ds_read_u16 430; GCN: ds_read_u16 431; GCN: ds_read_u16 432; GCN: ds_read_u16 433; GCN: ds_read_u16 434; GCN: ds_read_u16 435; GCN: ds_read_u16 436; GCN: ds_read_u16 437; GCN: ds_read_u16 438; GCN: ds_read_u16 439; GCN: ds_read_u16 440; GCN: ds_read_u16 441; GCN: ds_read_u16 442; GCN: ds_read_u16 443; GCN: ds_read_u16 444; GCN: ds_read_u16 445; GCN: ds_read_u16 446; GCN: ds_read_u16 447; GCN: ds_read_u16 448; GCN: ds_read_u16 449; GCN: ds_read_u16 450; GCN: ds_read_u16 451; GCN: ds_read_u16 452; GCN: ds_read_u16 453; GCN: ds_read_u16 454; GCN: ds_read_u16 455; GCN: ds_read_u16 456 457define void @local_zextload_v64i16_to_v64i32(<64 x i32> addrspace(3)* %out, <64 x i16> addrspace(3)* %in) #0 { 458 %load = load <64 x i16>, <64 x i16> addrspace(3)* %in 459 %ext = zext <64 x i16> %load to <64 x i32> 460 store <64 x i32> %ext, <64 x i32> addrspace(3)* %out 461 ret void 462} 463 464; FUNC-LABEL: {{^}}local_sextload_v64i16_to_v64i32: 465define void @local_sextload_v64i16_to_v64i32(<64 x i32> addrspace(3)* %out, <64 x i16> addrspace(3)* %in) #0 { 466 %load = load <64 x i16>, <64 x i16> addrspace(3)* %in 467 %ext = sext <64 x i16> %load to <64 x i32> 468 store <64 x i32> %ext, <64 x i32> addrspace(3)* %out 469 ret void 470} 471 472; FUNC-LABEL: {{^}}local_zextload_i16_to_i64: 473; GCN-DAG: ds_read_u16 v[[LO:[0-9]+]], 474; GCN-DAG: v_mov_b32_e32 v[[HI:[0-9]+]], 0{{$}} 475 476; GCN: ds_write_b64 v{{[0-9]+}}, v{{\[}}[[LO]]:[[HI]]] 477define void @local_zextload_i16_to_i64(i64 addrspace(3)* %out, i16 addrspace(3)* %in) #0 { 478 %a = load i16, i16 addrspace(3)* %in 479 %ext = zext i16 %a to i64 480 store i64 %ext, i64 addrspace(3)* %out 481 ret void 482} 483 484; FUNC-LABEL: {{^}}local_sextload_i16_to_i64: 485; GCN: ds_read_i16 v[[LO:[0-9]+]], 486; GCN-DAG: v_ashrrev_i32_e32 v[[HI:[0-9]+]], 31, v[[LO]] 487 488; GCN: ds_write_b64 v{{[0-9]+}}, v{{\[}}[[LO]]:[[HI]]] 489define void @local_sextload_i16_to_i64(i64 addrspace(3)* %out, i16 addrspace(3)* %in) #0 { 490 %a = load i16, i16 addrspace(3)* %in 491 %ext = sext i16 %a to i64 492 store i64 %ext, i64 addrspace(3)* %out 493 ret void 494} 495 496; FUNC-LABEL: {{^}}local_zextload_v1i16_to_v1i64: 497define void @local_zextload_v1i16_to_v1i64(<1 x i64> addrspace(3)* %out, <1 x i16> addrspace(3)* %in) #0 { 498 %load = load <1 x i16>, <1 x i16> addrspace(3)* %in 499 %ext = zext <1 x i16> %load to <1 x i64> 500 store <1 x i64> %ext, <1 x i64> addrspace(3)* %out 501 ret void 502} 503 504; FUNC-LABEL: {{^}}local_sextload_v1i16_to_v1i64: 505define void @local_sextload_v1i16_to_v1i64(<1 x i64> addrspace(3)* %out, <1 x i16> addrspace(3)* %in) #0 { 506 %load = load <1 x i16>, <1 x i16> addrspace(3)* %in 507 %ext = sext <1 x i16> %load to <1 x i64> 508 store <1 x i64> %ext, <1 x i64> addrspace(3)* %out 509 ret void 510} 511 512; FUNC-LABEL: {{^}}local_zextload_v2i16_to_v2i64: 513define void @local_zextload_v2i16_to_v2i64(<2 x i64> addrspace(3)* %out, <2 x i16> addrspace(3)* %in) #0 { 514 %load = load <2 x i16>, <2 x i16> addrspace(3)* %in 515 %ext = zext <2 x i16> %load to <2 x i64> 516 store <2 x i64> %ext, <2 x i64> addrspace(3)* %out 517 ret void 518} 519 520; FUNC-LABEL: {{^}}local_sextload_v2i16_to_v2i64: 521define void @local_sextload_v2i16_to_v2i64(<2 x i64> addrspace(3)* %out, <2 x i16> addrspace(3)* %in) #0 { 522 %load = load <2 x i16>, <2 x i16> addrspace(3)* %in 523 %ext = sext <2 x i16> %load to <2 x i64> 524 store <2 x i64> %ext, <2 x i64> addrspace(3)* %out 525 ret void 526} 527 528; FUNC-LABEL: {{^}}local_zextload_v4i16_to_v4i64: 529define void @local_zextload_v4i16_to_v4i64(<4 x i64> addrspace(3)* %out, <4 x i16> addrspace(3)* %in) #0 { 530 %load = load <4 x i16>, <4 x i16> addrspace(3)* %in 531 %ext = zext <4 x i16> %load to <4 x i64> 532 store <4 x i64> %ext, <4 x i64> addrspace(3)* %out 533 ret void 534} 535 536; FUNC-LABEL: {{^}}local_sextload_v4i16_to_v4i64: 537define void @local_sextload_v4i16_to_v4i64(<4 x i64> addrspace(3)* %out, <4 x i16> addrspace(3)* %in) #0 { 538 %load = load <4 x i16>, <4 x i16> addrspace(3)* %in 539 %ext = sext <4 x i16> %load to <4 x i64> 540 store <4 x i64> %ext, <4 x i64> addrspace(3)* %out 541 ret void 542} 543 544; FUNC-LABEL: {{^}}local_zextload_v8i16_to_v8i64: 545define void @local_zextload_v8i16_to_v8i64(<8 x i64> addrspace(3)* %out, <8 x i16> addrspace(3)* %in) #0 { 546 %load = load <8 x i16>, <8 x i16> addrspace(3)* %in 547 %ext = zext <8 x i16> %load to <8 x i64> 548 store <8 x i64> %ext, <8 x i64> addrspace(3)* %out 549 ret void 550} 551 552; FUNC-LABEL: {{^}}local_sextload_v8i16_to_v8i64: 553define void @local_sextload_v8i16_to_v8i64(<8 x i64> addrspace(3)* %out, <8 x i16> addrspace(3)* %in) #0 { 554 %load = load <8 x i16>, <8 x i16> addrspace(3)* %in 555 %ext = sext <8 x i16> %load to <8 x i64> 556 store <8 x i64> %ext, <8 x i64> addrspace(3)* %out 557 ret void 558} 559 560; FUNC-LABEL: {{^}}local_zextload_v16i16_to_v16i64: 561define void @local_zextload_v16i16_to_v16i64(<16 x i64> addrspace(3)* %out, <16 x i16> addrspace(3)* %in) #0 { 562 %load = load <16 x i16>, <16 x i16> addrspace(3)* %in 563 %ext = zext <16 x i16> %load to <16 x i64> 564 store <16 x i64> %ext, <16 x i64> addrspace(3)* %out 565 ret void 566} 567 568; FUNC-LABEL: {{^}}local_sextload_v16i16_to_v16i64: 569define void @local_sextload_v16i16_to_v16i64(<16 x i64> addrspace(3)* %out, <16 x i16> addrspace(3)* %in) #0 { 570 %load = load <16 x i16>, <16 x i16> addrspace(3)* %in 571 %ext = sext <16 x i16> %load to <16 x i64> 572 store <16 x i64> %ext, <16 x i64> addrspace(3)* %out 573 ret void 574} 575 576; FUNC-LABEL: {{^}}local_zextload_v32i16_to_v32i64: 577define void @local_zextload_v32i16_to_v32i64(<32 x i64> addrspace(3)* %out, <32 x i16> addrspace(3)* %in) #0 { 578 %load = load <32 x i16>, <32 x i16> addrspace(3)* %in 579 %ext = zext <32 x i16> %load to <32 x i64> 580 store <32 x i64> %ext, <32 x i64> addrspace(3)* %out 581 ret void 582} 583 584; FUNC-LABEL: {{^}}local_sextload_v32i16_to_v32i64: 585define void @local_sextload_v32i16_to_v32i64(<32 x i64> addrspace(3)* %out, <32 x i16> addrspace(3)* %in) #0 { 586 %load = load <32 x i16>, <32 x i16> addrspace(3)* %in 587 %ext = sext <32 x i16> %load to <32 x i64> 588 store <32 x i64> %ext, <32 x i64> addrspace(3)* %out 589 ret void 590} 591 592; ; XFUNC-LABEL: {{^}}local_zextload_v64i16_to_v64i64: 593; define void @local_zextload_v64i16_to_v64i64(<64 x i64> addrspace(3)* %out, <64 x i16> addrspace(3)* %in) #0 { 594; %load = load <64 x i16>, <64 x i16> addrspace(3)* %in 595; %ext = zext <64 x i16> %load to <64 x i64> 596; store <64 x i64> %ext, <64 x i64> addrspace(3)* %out 597; ret void 598; } 599 600; ; XFUNC-LABEL: {{^}}local_sextload_v64i16_to_v64i64: 601; define void @local_sextload_v64i16_to_v64i64(<64 x i64> addrspace(3)* %out, <64 x i16> addrspace(3)* %in) #0 { 602; %load = load <64 x i16>, <64 x i16> addrspace(3)* %in 603; %ext = sext <64 x i16> %load to <64 x i64> 604; store <64 x i64> %ext, <64 x i64> addrspace(3)* %out 605; ret void 606; } 607 608attributes #0 = { nounwind } 609