1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck --check-prefix=GCN-NOHSA-SI %s 3; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=kaveri -verify-machineinstrs < %s | FileCheck --check-prefix=GCN-HSA %s 4; RUN: llc -march=amdgcn -mcpu=tonga -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck --check-prefix=GCN-NOHSA-VI %s 5; RUN: llc -march=r600 -mcpu=redwood -verify-machineinstrs < %s | FileCheck --check-prefix=EG %s 6 7define amdgpu_kernel void @constant_load_i16(i16 addrspace(1)* %out, i16 addrspace(4)* %in) { 8; GCN-NOHSA-SI-LABEL: constant_load_i16: 9; GCN-NOHSA-SI: ; %bb.0: ; %entry 10; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 11; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 12; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 13; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 14; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 15; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 16; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 17; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 18; GCN-NOHSA-SI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 19; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 20; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 21; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 22; GCN-NOHSA-SI-NEXT: buffer_store_short v0, off, s[4:7], 0 23; GCN-NOHSA-SI-NEXT: s_endpgm 24; 25; GCN-HSA-LABEL: constant_load_i16: 26; GCN-HSA: ; %bb.0: ; %entry 27; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 28; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 29; GCN-HSA-NEXT: v_mov_b32_e32 v2, s2 30; GCN-HSA-NEXT: v_mov_b32_e32 v3, s3 31; GCN-HSA-NEXT: flat_load_ushort v2, v[2:3] 32; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 33; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 34; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 35; GCN-HSA-NEXT: flat_store_short v[0:1], v2 36; GCN-HSA-NEXT: s_endpgm 37; 38; GCN-NOHSA-VI-LABEL: constant_load_i16: 39; GCN-NOHSA-VI: ; %bb.0: ; %entry 40; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 41; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 42; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 43; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 44; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 45; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 46; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s6 47; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s7 48; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, s2 49; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, s3 50; GCN-NOHSA-VI-NEXT: buffer_load_ushort v0, off, s[4:7], 0 51; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 52; GCN-NOHSA-VI-NEXT: buffer_store_short v0, off, s[0:3], 0 53; GCN-NOHSA-VI-NEXT: s_endpgm 54; 55; EG-LABEL: constant_load_i16: 56; EG: ; %bb.0: ; %entry 57; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 58; EG-NEXT: TEX 0 @6 59; EG-NEXT: ALU 11, @9, KC0[CB0:0-32], KC1[] 60; EG-NEXT: MEM_RAT MSKOR T0.XW, T1.X 61; EG-NEXT: CF_END 62; EG-NEXT: PAD 63; EG-NEXT: Fetch clause starting at 6: 64; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 65; EG-NEXT: ALU clause starting at 8: 66; EG-NEXT: MOV * T0.X, KC0[2].Z, 67; EG-NEXT: ALU clause starting at 9: 68; EG-NEXT: AND_INT T0.W, KC0[2].Y, literal.x, 69; EG-NEXT: AND_INT * T1.W, T0.X, literal.y, 70; EG-NEXT: 3(4.203895e-45), 65535(9.183409e-41) 71; EG-NEXT: LSHL * T0.W, PV.W, literal.x, 72; EG-NEXT: 3(4.203895e-45), 0(0.000000e+00) 73; EG-NEXT: LSHL T0.X, T1.W, PV.W, 74; EG-NEXT: LSHL * T0.W, literal.x, PV.W, 75; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 76; EG-NEXT: MOV T0.Y, 0.0, 77; EG-NEXT: MOV * T0.Z, 0.0, 78; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 79; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 80entry: 81 %ld = load i16, i16 addrspace(4)* %in 82 store i16 %ld, i16 addrspace(1)* %out 83 ret void 84} 85 86define amdgpu_kernel void @constant_load_v2i16(<2 x i16> addrspace(1)* %out, <2 x i16> addrspace(4)* %in) { 87; GCN-NOHSA-SI-LABEL: constant_load_v2i16: 88; GCN-NOHSA-SI: ; %bb.0: ; %entry 89; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 90; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 91; GCN-NOHSA-SI-NEXT: s_load_dword s4, s[2:3], 0x0 92; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 93; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 94; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 95; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s4 96; GCN-NOHSA-SI-NEXT: buffer_store_dword v0, off, s[0:3], 0 97; GCN-NOHSA-SI-NEXT: s_endpgm 98; 99; GCN-HSA-LABEL: constant_load_v2i16: 100; GCN-HSA: ; %bb.0: ; %entry 101; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 102; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 103; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 104; GCN-HSA-NEXT: s_load_dword s0, s[2:3], 0x0 105; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 106; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 107; GCN-HSA-NEXT: v_mov_b32_e32 v2, s0 108; GCN-HSA-NEXT: flat_store_dword v[0:1], v2 109; GCN-HSA-NEXT: s_endpgm 110; 111; GCN-NOHSA-VI-LABEL: constant_load_v2i16: 112; GCN-NOHSA-VI: ; %bb.0: ; %entry 113; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 114; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 115; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 116; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 117; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 118; GCN-NOHSA-VI-NEXT: s_load_dword s0, s[2:3], 0x0 119; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 120; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 121; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s0 122; GCN-NOHSA-VI-NEXT: buffer_store_dword v0, off, s[4:7], 0 123; GCN-NOHSA-VI-NEXT: s_endpgm 124; 125; EG-LABEL: constant_load_v2i16: 126; EG: ; %bb.0: ; %entry 127; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 128; EG-NEXT: TEX 0 @6 129; EG-NEXT: ALU 1, @9, KC0[CB0:0-32], KC1[] 130; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1 131; EG-NEXT: CF_END 132; EG-NEXT: PAD 133; EG-NEXT: Fetch clause starting at 6: 134; EG-NEXT: VTX_READ_32 T0.X, T0.X, 0, #1 135; EG-NEXT: ALU clause starting at 8: 136; EG-NEXT: MOV * T0.X, KC0[2].Z, 137; EG-NEXT: ALU clause starting at 9: 138; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 139; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 140entry: 141 %ld = load <2 x i16>, <2 x i16> addrspace(4)* %in 142 store <2 x i16> %ld, <2 x i16> addrspace(1)* %out 143 ret void 144} 145 146define amdgpu_kernel void @constant_load_v3i16(<3 x i16> addrspace(1)* %out, <3 x i16> addrspace(4)* %in) { 147; GCN-NOHSA-SI-LABEL: constant_load_v3i16: 148; GCN-NOHSA-SI: ; %bb.0: ; %entry 149; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 150; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 151; GCN-NOHSA-SI-NEXT: s_load_dwordx2 s[4:5], s[2:3], 0x0 152; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 153; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 154; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 155; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s5 156; GCN-NOHSA-SI-NEXT: buffer_store_short v0, off, s[0:3], 0 offset:4 157; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 158; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s4 159; GCN-NOHSA-SI-NEXT: buffer_store_dword v0, off, s[0:3], 0 160; GCN-NOHSA-SI-NEXT: s_endpgm 161; 162; GCN-HSA-LABEL: constant_load_v3i16: 163; GCN-HSA: ; %bb.0: ; %entry 164; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 165; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 166; GCN-HSA-NEXT: s_load_dwordx2 s[2:3], s[2:3], 0x0 167; GCN-HSA-NEXT: s_add_u32 s4, s0, 4 168; GCN-HSA-NEXT: s_addc_u32 s5, s1, 0 169; GCN-HSA-NEXT: v_mov_b32_e32 v2, s4 170; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 171; GCN-HSA-NEXT: v_mov_b32_e32 v3, s5 172; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 173; GCN-HSA-NEXT: v_mov_b32_e32 v4, s3 174; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 175; GCN-HSA-NEXT: v_mov_b32_e32 v5, s2 176; GCN-HSA-NEXT: flat_store_short v[2:3], v4 177; GCN-HSA-NEXT: flat_store_dword v[0:1], v5 178; GCN-HSA-NEXT: s_endpgm 179; 180; GCN-NOHSA-VI-LABEL: constant_load_v3i16: 181; GCN-NOHSA-VI: ; %bb.0: ; %entry 182; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 183; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 184; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 185; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 186; GCN-NOHSA-VI-NEXT: s_load_dwordx2 s[2:3], s[2:3], 0x0 187; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 188; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 189; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 190; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s3 191; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s2 192; GCN-NOHSA-VI-NEXT: buffer_store_short v0, off, s[4:7], 0 offset:4 193; GCN-NOHSA-VI-NEXT: buffer_store_dword v1, off, s[4:7], 0 194; GCN-NOHSA-VI-NEXT: s_endpgm 195; 196; EG-LABEL: constant_load_v3i16: 197; EG: ; %bb.0: ; %entry 198; EG-NEXT: ALU 0, @12, KC0[CB0:0-32], KC1[] 199; EG-NEXT: TEX 2 @6 200; EG-NEXT: ALU 19, @13, KC0[CB0:0-32], KC1[] 201; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T6.X, T7.X, 0 202; EG-NEXT: MEM_RAT MSKOR T5.XW, T8.X 203; EG-NEXT: CF_END 204; EG-NEXT: Fetch clause starting at 6: 205; EG-NEXT: VTX_READ_16 T6.X, T5.X, 0, #1 206; EG-NEXT: VTX_READ_16 T7.X, T5.X, 2, #1 207; EG-NEXT: VTX_READ_16 T5.X, T5.X, 4, #1 208; EG-NEXT: ALU clause starting at 12: 209; EG-NEXT: MOV * T5.X, KC0[2].Z, 210; EG-NEXT: ALU clause starting at 13: 211; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 212; EG-NEXT: 4(5.605194e-45), 0(0.000000e+00) 213; EG-NEXT: AND_INT T1.W, PV.W, literal.x, 214; EG-NEXT: AND_INT * T2.W, T5.X, literal.y, 215; EG-NEXT: 3(4.203895e-45), 65535(9.183409e-41) 216; EG-NEXT: LSHL * T1.W, PV.W, literal.x, 217; EG-NEXT: 3(4.203895e-45), 0(0.000000e+00) 218; EG-NEXT: LSHL T5.X, T2.W, PV.W, 219; EG-NEXT: LSHL * T5.W, literal.x, PV.W, 220; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 221; EG-NEXT: MOV T5.Y, 0.0, 222; EG-NEXT: MOV * T5.Z, 0.0, 223; EG-NEXT: LSHR T8.X, T0.W, literal.x, 224; EG-NEXT: LSHL T0.W, T7.X, literal.y, 225; EG-NEXT: AND_INT * T1.W, T6.X, literal.z, 226; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 227; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 228; EG-NEXT: OR_INT T6.X, PV.W, PS, 229; EG-NEXT: LSHR * T7.X, KC0[2].Y, literal.x, 230; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 231entry: 232 %ld = load <3 x i16>, <3 x i16> addrspace(4)* %in 233 store <3 x i16> %ld, <3 x i16> addrspace(1)* %out 234 ret void 235} 236 237define amdgpu_kernel void @constant_load_v4i16(<4 x i16> addrspace(1)* %out, <4 x i16> addrspace(4)* %in) { 238; GCN-NOHSA-SI-LABEL: constant_load_v4i16: 239; GCN-NOHSA-SI: ; %bb.0: ; %entry 240; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 241; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 242; GCN-NOHSA-SI-NEXT: s_load_dwordx2 s[4:5], s[2:3], 0x0 243; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 244; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 245; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 246; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s4 247; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s5 248; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 0 249; GCN-NOHSA-SI-NEXT: s_endpgm 250; 251; GCN-HSA-LABEL: constant_load_v4i16: 252; GCN-HSA: ; %bb.0: ; %entry 253; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 254; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 255; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 256; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 257; GCN-HSA-NEXT: s_load_dwordx2 s[0:1], s[2:3], 0x0 258; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 259; GCN-HSA-NEXT: v_mov_b32_e32 v3, s1 260; GCN-HSA-NEXT: v_mov_b32_e32 v2, s0 261; GCN-HSA-NEXT: flat_store_dwordx2 v[0:1], v[2:3] 262; GCN-HSA-NEXT: s_endpgm 263; 264; GCN-NOHSA-VI-LABEL: constant_load_v4i16: 265; GCN-NOHSA-VI: ; %bb.0: ; %entry 266; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 267; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 268; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 269; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 270; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 271; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 272; GCN-NOHSA-VI-NEXT: s_load_dwordx2 s[0:1], s[2:3], 0x0 273; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 274; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s0 275; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s1 276; GCN-NOHSA-VI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 277; GCN-NOHSA-VI-NEXT: s_endpgm 278; 279; EG-LABEL: constant_load_v4i16: 280; EG: ; %bb.0: ; %entry 281; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 282; EG-NEXT: TEX 0 @6 283; EG-NEXT: ALU 1, @9, KC0[CB0:0-32], KC1[] 284; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1 285; EG-NEXT: CF_END 286; EG-NEXT: PAD 287; EG-NEXT: Fetch clause starting at 6: 288; EG-NEXT: VTX_READ_64 T0.XY, T0.X, 0, #1 289; EG-NEXT: ALU clause starting at 8: 290; EG-NEXT: MOV * T0.X, KC0[2].Z, 291; EG-NEXT: ALU clause starting at 9: 292; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 293; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 294entry: 295 %ld = load <4 x i16>, <4 x i16> addrspace(4)* %in 296 store <4 x i16> %ld, <4 x i16> addrspace(1)* %out 297 ret void 298} 299 300define amdgpu_kernel void @constant_load_v8i16(<8 x i16> addrspace(1)* %out, <8 x i16> addrspace(4)* %in) { 301; GCN-NOHSA-SI-LABEL: constant_load_v8i16: 302; GCN-NOHSA-SI: ; %bb.0: ; %entry 303; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 304; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 305; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[2:3], 0x0 306; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 307; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 308; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 309; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s4 310; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s5 311; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s6 312; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s7 313; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 314; GCN-NOHSA-SI-NEXT: s_endpgm 315; 316; GCN-HSA-LABEL: constant_load_v8i16: 317; GCN-HSA: ; %bb.0: ; %entry 318; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 319; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 320; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 321; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 322; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[2:3], 0x0 323; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 324; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 325; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 326; GCN-HSA-NEXT: v_mov_b32_e32 v2, s2 327; GCN-HSA-NEXT: v_mov_b32_e32 v3, s3 328; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 329; GCN-HSA-NEXT: s_endpgm 330; 331; GCN-NOHSA-VI-LABEL: constant_load_v8i16: 332; GCN-NOHSA-VI: ; %bb.0: ; %entry 333; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 334; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 335; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 336; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 337; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 338; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 339; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[2:3], 0x0 340; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 341; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s0 342; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s1 343; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s2 344; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s3 345; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 346; GCN-NOHSA-VI-NEXT: s_endpgm 347; 348; EG-LABEL: constant_load_v8i16: 349; EG: ; %bb.0: ; %entry 350; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 351; EG-NEXT: TEX 0 @6 352; EG-NEXT: ALU 1, @9, KC0[CB0:0-32], KC1[] 353; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T1.X, 1 354; EG-NEXT: CF_END 355; EG-NEXT: PAD 356; EG-NEXT: Fetch clause starting at 6: 357; EG-NEXT: VTX_READ_128 T0.XYZW, T0.X, 0, #1 358; EG-NEXT: ALU clause starting at 8: 359; EG-NEXT: MOV * T0.X, KC0[2].Z, 360; EG-NEXT: ALU clause starting at 9: 361; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 362; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 363entry: 364 %ld = load <8 x i16>, <8 x i16> addrspace(4)* %in 365 store <8 x i16> %ld, <8 x i16> addrspace(1)* %out 366 ret void 367} 368 369define amdgpu_kernel void @constant_load_v16i16(<16 x i16> addrspace(1)* %out, <16 x i16> addrspace(4)* %in) { 370; GCN-NOHSA-SI-LABEL: constant_load_v16i16: 371; GCN-NOHSA-SI: ; %bb.0: ; %entry 372; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[8:11], s[0:1], 0x9 373; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 374; GCN-NOHSA-SI-NEXT: s_load_dwordx8 s[0:7], s[10:11], 0x0 375; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, 0xf000 376; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, -1 377; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 378; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s4 379; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s5 380; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s6 381; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s7 382; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:16 383; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 384; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s0 385; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s1 386; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s2 387; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s3 388; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[8:11], 0 389; GCN-NOHSA-SI-NEXT: s_endpgm 390; 391; GCN-HSA-LABEL: constant_load_v16i16: 392; GCN-HSA: ; %bb.0: ; %entry 393; GCN-HSA-NEXT: s_load_dwordx4 s[8:11], s[4:5], 0x0 394; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 395; GCN-HSA-NEXT: s_load_dwordx8 s[0:7], s[10:11], 0x0 396; GCN-HSA-NEXT: s_add_u32 s10, s8, 16 397; GCN-HSA-NEXT: s_addc_u32 s11, s9, 0 398; GCN-HSA-NEXT: v_mov_b32_e32 v6, s10 399; GCN-HSA-NEXT: v_mov_b32_e32 v7, s11 400; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 401; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 402; GCN-HSA-NEXT: v_mov_b32_e32 v1, s5 403; GCN-HSA-NEXT: v_mov_b32_e32 v2, s6 404; GCN-HSA-NEXT: v_mov_b32_e32 v3, s7 405; GCN-HSA-NEXT: flat_store_dwordx4 v[6:7], v[0:3] 406; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 407; GCN-HSA-NEXT: v_mov_b32_e32 v0, s8 408; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 409; GCN-HSA-NEXT: v_mov_b32_e32 v6, s2 410; GCN-HSA-NEXT: v_mov_b32_e32 v7, s3 411; GCN-HSA-NEXT: v_mov_b32_e32 v1, s9 412; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[4:7] 413; GCN-HSA-NEXT: s_endpgm 414; 415; GCN-NOHSA-VI-LABEL: constant_load_v16i16: 416; GCN-NOHSA-VI: ; %bb.0: ; %entry 417; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 418; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, 0xf000 419; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, -1 420; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 421; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s0 422; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s1 423; GCN-NOHSA-VI-NEXT: s_load_dwordx8 s[0:7], s[2:3], 0x0 424; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 425; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s4 426; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s5 427; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s6 428; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s7 429; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v4, s0 430; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v5, s1 431; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v6, s2 432; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v7, s3 433; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:16 434; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[8:11], 0 435; GCN-NOHSA-VI-NEXT: s_endpgm 436; 437; EG-LABEL: constant_load_v16i16: 438; EG: ; %bb.0: ; %entry 439; EG-NEXT: ALU 0, @12, KC0[CB0:0-32], KC1[] 440; EG-NEXT: TEX 0 @8 441; EG-NEXT: ALU 3, @13, KC0[CB0:0-32], KC1[] 442; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0 443; EG-NEXT: ALU 1, @17, KC0[CB0:0-32], KC1[] 444; EG-NEXT: TEX 0 @10 445; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T1.X, 1 446; EG-NEXT: CF_END 447; EG-NEXT: Fetch clause starting at 8: 448; EG-NEXT: VTX_READ_128 T1.XYZW, T0.X, 16, #1 449; EG-NEXT: Fetch clause starting at 10: 450; EG-NEXT: VTX_READ_128 T0.XYZW, T0.X, 0, #1 451; EG-NEXT: ALU clause starting at 12: 452; EG-NEXT: MOV * T0.X, KC0[2].Z, 453; EG-NEXT: ALU clause starting at 13: 454; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 455; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 456; EG-NEXT: LSHR * T2.X, PV.W, literal.x, 457; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 458; EG-NEXT: ALU clause starting at 17: 459; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 460; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 461entry: 462 %ld = load <16 x i16>, <16 x i16> addrspace(4)* %in 463 store <16 x i16> %ld, <16 x i16> addrspace(1)* %out 464 ret void 465} 466 467define amdgpu_kernel void @constant_load_v16i16_align2(<16 x i16> addrspace(4)* %ptr0) #0 { 468; GCN-NOHSA-SI-LABEL: constant_load_v16i16_align2: 469; GCN-NOHSA-SI: ; %bb.0: ; %entry 470; GCN-NOHSA-SI-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x9 471; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 472; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 473; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 474; GCN-NOHSA-SI-NEXT: buffer_load_ushort v0, off, s[0:3], 0 475; GCN-NOHSA-SI-NEXT: buffer_load_ushort v1, off, s[0:3], 0 offset:2 476; GCN-NOHSA-SI-NEXT: buffer_load_ushort v4, off, s[0:3], 0 offset:4 477; GCN-NOHSA-SI-NEXT: buffer_load_ushort v2, off, s[0:3], 0 offset:6 478; GCN-NOHSA-SI-NEXT: buffer_load_ushort v5, off, s[0:3], 0 offset:8 479; GCN-NOHSA-SI-NEXT: buffer_load_ushort v3, off, s[0:3], 0 offset:10 480; GCN-NOHSA-SI-NEXT: buffer_load_ushort v6, off, s[0:3], 0 offset:12 481; GCN-NOHSA-SI-NEXT: buffer_load_ushort v7, off, s[0:3], 0 offset:14 482; GCN-NOHSA-SI-NEXT: buffer_load_ushort v8, off, s[0:3], 0 offset:16 483; GCN-NOHSA-SI-NEXT: buffer_load_ushort v9, off, s[0:3], 0 offset:18 484; GCN-NOHSA-SI-NEXT: buffer_load_ushort v10, off, s[0:3], 0 offset:20 485; GCN-NOHSA-SI-NEXT: buffer_load_ushort v11, off, s[0:3], 0 offset:22 486; GCN-NOHSA-SI-NEXT: buffer_load_ushort v12, off, s[0:3], 0 offset:24 487; GCN-NOHSA-SI-NEXT: buffer_load_ushort v13, off, s[0:3], 0 offset:26 488; GCN-NOHSA-SI-NEXT: buffer_load_ushort v14, off, s[0:3], 0 offset:28 489; GCN-NOHSA-SI-NEXT: buffer_load_ushort v15, off, s[0:3], 0 offset:30 490; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(8) 491; GCN-NOHSA-SI-NEXT: v_lshlrev_b32_e32 v7, 16, v7 492; GCN-NOHSA-SI-NEXT: v_lshlrev_b32_e32 v16, 16, v3 493; GCN-NOHSA-SI-NEXT: v_lshlrev_b32_e32 v17, 16, v2 494; GCN-NOHSA-SI-NEXT: v_lshlrev_b32_e32 v18, 16, v1 495; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 496; GCN-NOHSA-SI-NEXT: v_lshlrev_b32_e32 v15, 16, v15 497; GCN-NOHSA-SI-NEXT: v_lshlrev_b32_e32 v13, 16, v13 498; GCN-NOHSA-SI-NEXT: v_lshlrev_b32_e32 v11, 16, v11 499; GCN-NOHSA-SI-NEXT: v_lshlrev_b32_e32 v9, 16, v9 500; GCN-NOHSA-SI-NEXT: v_or_b32_e32 v3, v7, v6 501; GCN-NOHSA-SI-NEXT: v_or_b32_e32 v2, v16, v5 502; GCN-NOHSA-SI-NEXT: v_or_b32_e32 v1, v17, v4 503; GCN-NOHSA-SI-NEXT: v_or_b32_e32 v0, v18, v0 504; GCN-NOHSA-SI-NEXT: v_or_b32_e32 v7, v15, v14 505; GCN-NOHSA-SI-NEXT: v_or_b32_e32 v6, v13, v12 506; GCN-NOHSA-SI-NEXT: v_or_b32_e32 v5, v11, v10 507; GCN-NOHSA-SI-NEXT: v_or_b32_e32 v4, v9, v8 508; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 509; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 510; GCN-NOHSA-SI-NEXT: s_endpgm 511; 512; GCN-HSA-LABEL: constant_load_v16i16_align2: 513; GCN-HSA: ; %bb.0: ; %entry 514; GCN-HSA-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0 515; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 516; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 517; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 518; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 519; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 520; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 521; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 522; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 523; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5] 524; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 525; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[4:7] 526; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[0:3] 527; GCN-HSA-NEXT: s_endpgm 528; 529; GCN-NOHSA-VI-LABEL: constant_load_v16i16_align2: 530; GCN-NOHSA-VI: ; %bb.0: ; %entry 531; GCN-NOHSA-VI-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x24 532; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 533; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 534; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 535; GCN-NOHSA-VI-NEXT: buffer_load_ushort v0, off, s[0:3], 0 536; GCN-NOHSA-VI-NEXT: buffer_load_ushort v1, off, s[0:3], 0 offset:2 537; GCN-NOHSA-VI-NEXT: buffer_load_ushort v4, off, s[0:3], 0 offset:4 538; GCN-NOHSA-VI-NEXT: buffer_load_ushort v2, off, s[0:3], 0 offset:6 539; GCN-NOHSA-VI-NEXT: buffer_load_ushort v5, off, s[0:3], 0 offset:8 540; GCN-NOHSA-VI-NEXT: buffer_load_ushort v3, off, s[0:3], 0 offset:10 541; GCN-NOHSA-VI-NEXT: buffer_load_ushort v6, off, s[0:3], 0 offset:12 542; GCN-NOHSA-VI-NEXT: buffer_load_ushort v7, off, s[0:3], 0 offset:14 543; GCN-NOHSA-VI-NEXT: buffer_load_ushort v8, off, s[0:3], 0 offset:16 544; GCN-NOHSA-VI-NEXT: buffer_load_ushort v9, off, s[0:3], 0 offset:18 545; GCN-NOHSA-VI-NEXT: buffer_load_ushort v10, off, s[0:3], 0 offset:20 546; GCN-NOHSA-VI-NEXT: buffer_load_ushort v11, off, s[0:3], 0 offset:22 547; GCN-NOHSA-VI-NEXT: buffer_load_ushort v12, off, s[0:3], 0 offset:24 548; GCN-NOHSA-VI-NEXT: buffer_load_ushort v13, off, s[0:3], 0 offset:26 549; GCN-NOHSA-VI-NEXT: buffer_load_ushort v14, off, s[0:3], 0 offset:28 550; GCN-NOHSA-VI-NEXT: buffer_load_ushort v15, off, s[0:3], 0 offset:30 551; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(14) 552; GCN-NOHSA-VI-NEXT: v_lshlrev_b32_e32 v18, 16, v1 553; GCN-NOHSA-VI-NEXT: v_or_b32_e32 v0, v18, v0 554; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(12) 555; GCN-NOHSA-VI-NEXT: v_lshlrev_b32_e32 v17, 16, v2 556; GCN-NOHSA-VI-NEXT: v_or_b32_e32 v1, v17, v4 557; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(10) 558; GCN-NOHSA-VI-NEXT: v_lshlrev_b32_e32 v16, 16, v3 559; GCN-NOHSA-VI-NEXT: v_or_b32_e32 v2, v16, v5 560; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(8) 561; GCN-NOHSA-VI-NEXT: v_lshlrev_b32_e32 v7, 16, v7 562; GCN-NOHSA-VI-NEXT: v_or_b32_e32 v3, v7, v6 563; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(6) 564; GCN-NOHSA-VI-NEXT: v_lshlrev_b32_e32 v9, 16, v9 565; GCN-NOHSA-VI-NEXT: v_or_b32_e32 v4, v9, v8 566; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(4) 567; GCN-NOHSA-VI-NEXT: v_lshlrev_b32_e32 v11, 16, v11 568; GCN-NOHSA-VI-NEXT: v_or_b32_e32 v5, v11, v10 569; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(2) 570; GCN-NOHSA-VI-NEXT: v_lshlrev_b32_e32 v13, 16, v13 571; GCN-NOHSA-VI-NEXT: v_or_b32_e32 v6, v13, v12 572; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 573; GCN-NOHSA-VI-NEXT: v_lshlrev_b32_e32 v15, 16, v15 574; GCN-NOHSA-VI-NEXT: v_or_b32_e32 v7, v15, v14 575; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 576; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 577; GCN-NOHSA-VI-NEXT: s_endpgm 578; 579; EG-LABEL: constant_load_v16i16_align2: 580; EG: ; %bb.0: ; %entry 581; EG-NEXT: ALU 0, @12, KC0[CB0:0-32], KC1[] 582; EG-NEXT: TEX 0 @8 583; EG-NEXT: ALU 1, @13, KC0[], KC1[] 584; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0 585; EG-NEXT: TEX 0 @10 586; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T2.X, 1 587; EG-NEXT: CF_END 588; EG-NEXT: PAD 589; EG-NEXT: Fetch clause starting at 8: 590; EG-NEXT: VTX_READ_128 T1.XYZW, T0.X, 16, #1 591; EG-NEXT: Fetch clause starting at 10: 592; EG-NEXT: VTX_READ_128 T0.XYZW, T0.X, 0, #1 593; EG-NEXT: ALU clause starting at 12: 594; EG-NEXT: MOV * T0.X, KC0[2].Y, 595; EG-NEXT: ALU clause starting at 13: 596; EG-NEXT: MOV * T2.X, literal.x, 597; EG-NEXT: 0(0.000000e+00), 0(0.000000e+00) 598entry: 599 %ld = load <16 x i16>, <16 x i16> addrspace(4)* %ptr0, align 2 600 store <16 x i16> %ld, <16 x i16> addrspace(1)* undef, align 32 601 ret void 602} 603 604define amdgpu_kernel void @constant_zextload_i16_to_i32(i32 addrspace(1)* %out, i16 addrspace(4)* %in) #0 { 605; GCN-NOHSA-SI-LABEL: constant_zextload_i16_to_i32: 606; GCN-NOHSA-SI: ; %bb.0: 607; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 608; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 609; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 610; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 611; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 612; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 613; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 614; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 615; GCN-NOHSA-SI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 616; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 617; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 618; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 619; GCN-NOHSA-SI-NEXT: buffer_store_dword v0, off, s[4:7], 0 620; GCN-NOHSA-SI-NEXT: s_endpgm 621; 622; GCN-HSA-LABEL: constant_zextload_i16_to_i32: 623; GCN-HSA: ; %bb.0: 624; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 625; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 626; GCN-HSA-NEXT: v_mov_b32_e32 v2, s2 627; GCN-HSA-NEXT: v_mov_b32_e32 v3, s3 628; GCN-HSA-NEXT: flat_load_ushort v2, v[2:3] 629; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 630; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 631; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 632; GCN-HSA-NEXT: flat_store_dword v[0:1], v2 633; GCN-HSA-NEXT: s_endpgm 634; 635; GCN-NOHSA-VI-LABEL: constant_zextload_i16_to_i32: 636; GCN-NOHSA-VI: ; %bb.0: 637; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 638; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 639; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 640; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 641; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 642; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 643; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s6 644; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s7 645; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, s2 646; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, s3 647; GCN-NOHSA-VI-NEXT: buffer_load_ushort v0, off, s[4:7], 0 648; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 649; GCN-NOHSA-VI-NEXT: buffer_store_dword v0, off, s[0:3], 0 650; GCN-NOHSA-VI-NEXT: s_endpgm 651; 652; EG-LABEL: constant_zextload_i16_to_i32: 653; EG: ; %bb.0: 654; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 655; EG-NEXT: TEX 0 @6 656; EG-NEXT: ALU 1, @9, KC0[CB0:0-32], KC1[] 657; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1 658; EG-NEXT: CF_END 659; EG-NEXT: PAD 660; EG-NEXT: Fetch clause starting at 6: 661; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 662; EG-NEXT: ALU clause starting at 8: 663; EG-NEXT: MOV * T0.X, KC0[2].Z, 664; EG-NEXT: ALU clause starting at 9: 665; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 666; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 667 %a = load i16, i16 addrspace(4)* %in 668 %ext = zext i16 %a to i32 669 store i32 %ext, i32 addrspace(1)* %out 670 ret void 671} 672 673define amdgpu_kernel void @constant_sextload_i16_to_i32(i32 addrspace(1)* %out, i16 addrspace(4)* %in) #0 { 674; GCN-NOHSA-SI-LABEL: constant_sextload_i16_to_i32: 675; GCN-NOHSA-SI: ; %bb.0: 676; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 677; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 678; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 679; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 680; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 681; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 682; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 683; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 684; GCN-NOHSA-SI-NEXT: buffer_load_sshort v0, off, s[8:11], 0 685; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 686; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 687; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 688; GCN-NOHSA-SI-NEXT: buffer_store_dword v0, off, s[4:7], 0 689; GCN-NOHSA-SI-NEXT: s_endpgm 690; 691; GCN-HSA-LABEL: constant_sextload_i16_to_i32: 692; GCN-HSA: ; %bb.0: 693; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 694; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 695; GCN-HSA-NEXT: v_mov_b32_e32 v2, s2 696; GCN-HSA-NEXT: v_mov_b32_e32 v3, s3 697; GCN-HSA-NEXT: flat_load_sshort v2, v[2:3] 698; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 699; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 700; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 701; GCN-HSA-NEXT: flat_store_dword v[0:1], v2 702; GCN-HSA-NEXT: s_endpgm 703; 704; GCN-NOHSA-VI-LABEL: constant_sextload_i16_to_i32: 705; GCN-NOHSA-VI: ; %bb.0: 706; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 707; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 708; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 709; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 710; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 711; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 712; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s6 713; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s7 714; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, s2 715; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, s3 716; GCN-NOHSA-VI-NEXT: buffer_load_sshort v0, off, s[4:7], 0 717; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 718; GCN-NOHSA-VI-NEXT: buffer_store_dword v0, off, s[0:3], 0 719; GCN-NOHSA-VI-NEXT: s_endpgm 720; 721; EG-LABEL: constant_sextload_i16_to_i32: 722; EG: ; %bb.0: 723; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 724; EG-NEXT: TEX 0 @6 725; EG-NEXT: ALU 2, @9, KC0[CB0:0-32], KC1[] 726; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1 727; EG-NEXT: CF_END 728; EG-NEXT: PAD 729; EG-NEXT: Fetch clause starting at 6: 730; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 731; EG-NEXT: ALU clause starting at 8: 732; EG-NEXT: MOV * T0.X, KC0[2].Z, 733; EG-NEXT: ALU clause starting at 9: 734; EG-NEXT: BFE_INT T0.X, T0.X, 0.0, literal.x, 735; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.y, 736; EG-NEXT: 16(2.242078e-44), 2(2.802597e-45) 737 %a = load i16, i16 addrspace(4)* %in 738 %ext = sext i16 %a to i32 739 store i32 %ext, i32 addrspace(1)* %out 740 ret void 741} 742 743define amdgpu_kernel void @constant_zextload_v1i16_to_v1i32(<1 x i32> addrspace(1)* %out, <1 x i16> addrspace(4)* %in) #0 { 744; GCN-NOHSA-SI-LABEL: constant_zextload_v1i16_to_v1i32: 745; GCN-NOHSA-SI: ; %bb.0: 746; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 747; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 748; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 749; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 750; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 751; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 752; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 753; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 754; GCN-NOHSA-SI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 755; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 756; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 757; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 758; GCN-NOHSA-SI-NEXT: buffer_store_dword v0, off, s[4:7], 0 759; GCN-NOHSA-SI-NEXT: s_endpgm 760; 761; GCN-HSA-LABEL: constant_zextload_v1i16_to_v1i32: 762; GCN-HSA: ; %bb.0: 763; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 764; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 765; GCN-HSA-NEXT: v_mov_b32_e32 v2, s2 766; GCN-HSA-NEXT: v_mov_b32_e32 v3, s3 767; GCN-HSA-NEXT: flat_load_ushort v2, v[2:3] 768; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 769; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 770; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 771; GCN-HSA-NEXT: flat_store_dword v[0:1], v2 772; GCN-HSA-NEXT: s_endpgm 773; 774; GCN-NOHSA-VI-LABEL: constant_zextload_v1i16_to_v1i32: 775; GCN-NOHSA-VI: ; %bb.0: 776; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 777; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 778; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 779; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 780; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 781; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 782; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s6 783; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s7 784; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, s2 785; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, s3 786; GCN-NOHSA-VI-NEXT: buffer_load_ushort v0, off, s[4:7], 0 787; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 788; GCN-NOHSA-VI-NEXT: buffer_store_dword v0, off, s[0:3], 0 789; GCN-NOHSA-VI-NEXT: s_endpgm 790; 791; EG-LABEL: constant_zextload_v1i16_to_v1i32: 792; EG: ; %bb.0: 793; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 794; EG-NEXT: TEX 0 @6 795; EG-NEXT: ALU 1, @9, KC0[CB0:0-32], KC1[] 796; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1 797; EG-NEXT: CF_END 798; EG-NEXT: PAD 799; EG-NEXT: Fetch clause starting at 6: 800; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 801; EG-NEXT: ALU clause starting at 8: 802; EG-NEXT: MOV * T0.X, KC0[2].Z, 803; EG-NEXT: ALU clause starting at 9: 804; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 805; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 806 %load = load <1 x i16>, <1 x i16> addrspace(4)* %in 807 %ext = zext <1 x i16> %load to <1 x i32> 808 store <1 x i32> %ext, <1 x i32> addrspace(1)* %out 809 ret void 810} 811 812define amdgpu_kernel void @constant_sextload_v1i16_to_v1i32(<1 x i32> addrspace(1)* %out, <1 x i16> addrspace(4)* %in) #0 { 813; GCN-NOHSA-SI-LABEL: constant_sextload_v1i16_to_v1i32: 814; GCN-NOHSA-SI: ; %bb.0: 815; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 816; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 817; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 818; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 819; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 820; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 821; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 822; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 823; GCN-NOHSA-SI-NEXT: buffer_load_sshort v0, off, s[8:11], 0 824; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 825; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 826; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 827; GCN-NOHSA-SI-NEXT: buffer_store_dword v0, off, s[4:7], 0 828; GCN-NOHSA-SI-NEXT: s_endpgm 829; 830; GCN-HSA-LABEL: constant_sextload_v1i16_to_v1i32: 831; GCN-HSA: ; %bb.0: 832; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 833; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 834; GCN-HSA-NEXT: v_mov_b32_e32 v2, s2 835; GCN-HSA-NEXT: v_mov_b32_e32 v3, s3 836; GCN-HSA-NEXT: flat_load_sshort v2, v[2:3] 837; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 838; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 839; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 840; GCN-HSA-NEXT: flat_store_dword v[0:1], v2 841; GCN-HSA-NEXT: s_endpgm 842; 843; GCN-NOHSA-VI-LABEL: constant_sextload_v1i16_to_v1i32: 844; GCN-NOHSA-VI: ; %bb.0: 845; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 846; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 847; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 848; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 849; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 850; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 851; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s6 852; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s7 853; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, s2 854; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, s3 855; GCN-NOHSA-VI-NEXT: buffer_load_sshort v0, off, s[4:7], 0 856; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 857; GCN-NOHSA-VI-NEXT: buffer_store_dword v0, off, s[0:3], 0 858; GCN-NOHSA-VI-NEXT: s_endpgm 859; 860; EG-LABEL: constant_sextload_v1i16_to_v1i32: 861; EG: ; %bb.0: 862; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 863; EG-NEXT: TEX 0 @6 864; EG-NEXT: ALU 2, @9, KC0[CB0:0-32], KC1[] 865; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1 866; EG-NEXT: CF_END 867; EG-NEXT: PAD 868; EG-NEXT: Fetch clause starting at 6: 869; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 870; EG-NEXT: ALU clause starting at 8: 871; EG-NEXT: MOV * T0.X, KC0[2].Z, 872; EG-NEXT: ALU clause starting at 9: 873; EG-NEXT: BFE_INT T0.X, T0.X, 0.0, literal.x, 874; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.y, 875; EG-NEXT: 16(2.242078e-44), 2(2.802597e-45) 876 %load = load <1 x i16>, <1 x i16> addrspace(4)* %in 877 %ext = sext <1 x i16> %load to <1 x i32> 878 store <1 x i32> %ext, <1 x i32> addrspace(1)* %out 879 ret void 880} 881 882define amdgpu_kernel void @constant_zextload_v2i16_to_v2i32(<2 x i32> addrspace(1)* %out, <2 x i16> addrspace(4)* %in) #0 { 883; GCN-NOHSA-SI-LABEL: constant_zextload_v2i16_to_v2i32: 884; GCN-NOHSA-SI: ; %bb.0: 885; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 886; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 887; GCN-NOHSA-SI-NEXT: s_load_dword s2, s[2:3], 0x0 888; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 889; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 890; GCN-NOHSA-SI-NEXT: s_lshr_b32 s4, s2, 16 891; GCN-NOHSA-SI-NEXT: s_and_b32 s5, s2, 0xffff 892; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 893; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s5 894; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s4 895; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 0 896; GCN-NOHSA-SI-NEXT: s_endpgm 897; 898; GCN-HSA-LABEL: constant_zextload_v2i16_to_v2i32: 899; GCN-HSA: ; %bb.0: 900; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 901; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 902; GCN-HSA-NEXT: s_load_dword s2, s[2:3], 0x0 903; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 904; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 905; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 906; GCN-HSA-NEXT: s_lshr_b32 s0, s2, 16 907; GCN-HSA-NEXT: s_and_b32 s1, s2, 0xffff 908; GCN-HSA-NEXT: v_mov_b32_e32 v2, s1 909; GCN-HSA-NEXT: v_mov_b32_e32 v3, s0 910; GCN-HSA-NEXT: flat_store_dwordx2 v[0:1], v[2:3] 911; GCN-HSA-NEXT: s_endpgm 912; 913; GCN-NOHSA-VI-LABEL: constant_zextload_v2i16_to_v2i32: 914; GCN-NOHSA-VI: ; %bb.0: 915; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 916; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 917; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 918; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 919; GCN-NOHSA-VI-NEXT: s_load_dword s2, s[2:3], 0x0 920; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 921; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 922; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 923; GCN-NOHSA-VI-NEXT: s_lshr_b32 s0, s2, 16 924; GCN-NOHSA-VI-NEXT: s_and_b32 s1, s2, 0xffff 925; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s1 926; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s0 927; GCN-NOHSA-VI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 928; GCN-NOHSA-VI-NEXT: s_endpgm 929; 930; EG-LABEL: constant_zextload_v2i16_to_v2i32: 931; EG: ; %bb.0: 932; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 933; EG-NEXT: TEX 0 @6 934; EG-NEXT: ALU 4, @9, KC0[CB0:0-32], KC1[] 935; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T4.XY, T5.X, 1 936; EG-NEXT: CF_END 937; EG-NEXT: PAD 938; EG-NEXT: Fetch clause starting at 6: 939; EG-NEXT: VTX_READ_32 T4.X, T4.X, 0, #1 940; EG-NEXT: ALU clause starting at 8: 941; EG-NEXT: MOV * T4.X, KC0[2].Z, 942; EG-NEXT: ALU clause starting at 9: 943; EG-NEXT: LSHR * T4.Y, T4.X, literal.x, 944; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 945; EG-NEXT: AND_INT T4.X, T4.X, literal.x, 946; EG-NEXT: LSHR * T5.X, KC0[2].Y, literal.y, 947; EG-NEXT: 65535(9.183409e-41), 2(2.802597e-45) 948 %load = load <2 x i16>, <2 x i16> addrspace(4)* %in 949 %ext = zext <2 x i16> %load to <2 x i32> 950 store <2 x i32> %ext, <2 x i32> addrspace(1)* %out 951 ret void 952} 953 954; TODO: We should use ASHR instead of LSHR + BFE 955define amdgpu_kernel void @constant_sextload_v2i16_to_v2i32(<2 x i32> addrspace(1)* %out, <2 x i16> addrspace(4)* %in) #0 { 956; GCN-NOHSA-SI-LABEL: constant_sextload_v2i16_to_v2i32: 957; GCN-NOHSA-SI: ; %bb.0: 958; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 959; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 960; GCN-NOHSA-SI-NEXT: s_load_dword s2, s[2:3], 0x0 961; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 962; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 963; GCN-NOHSA-SI-NEXT: s_ashr_i32 s4, s2, 16 964; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s5, s2 965; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 966; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s5 967; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s4 968; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 0 969; GCN-NOHSA-SI-NEXT: s_endpgm 970; 971; GCN-HSA-LABEL: constant_sextload_v2i16_to_v2i32: 972; GCN-HSA: ; %bb.0: 973; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 974; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 975; GCN-HSA-NEXT: s_load_dword s2, s[2:3], 0x0 976; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 977; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 978; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 979; GCN-HSA-NEXT: s_ashr_i32 s0, s2, 16 980; GCN-HSA-NEXT: s_sext_i32_i16 s1, s2 981; GCN-HSA-NEXT: v_mov_b32_e32 v2, s1 982; GCN-HSA-NEXT: v_mov_b32_e32 v3, s0 983; GCN-HSA-NEXT: flat_store_dwordx2 v[0:1], v[2:3] 984; GCN-HSA-NEXT: s_endpgm 985; 986; GCN-NOHSA-VI-LABEL: constant_sextload_v2i16_to_v2i32: 987; GCN-NOHSA-VI: ; %bb.0: 988; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 989; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 990; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 991; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 992; GCN-NOHSA-VI-NEXT: s_load_dword s2, s[2:3], 0x0 993; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 994; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 995; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 996; GCN-NOHSA-VI-NEXT: s_ashr_i32 s0, s2, 16 997; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s1, s2 998; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s1 999; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s0 1000; GCN-NOHSA-VI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 1001; GCN-NOHSA-VI-NEXT: s_endpgm 1002; 1003; EG-LABEL: constant_sextload_v2i16_to_v2i32: 1004; EG: ; %bb.0: 1005; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1006; EG-NEXT: TEX 0 @6 1007; EG-NEXT: ALU 5, @9, KC0[CB0:0-32], KC1[] 1008; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T5.XY, T4.X, 1 1009; EG-NEXT: CF_END 1010; EG-NEXT: PAD 1011; EG-NEXT: Fetch clause starting at 6: 1012; EG-NEXT: VTX_READ_32 T4.X, T4.X, 0, #1 1013; EG-NEXT: ALU clause starting at 8: 1014; EG-NEXT: MOV * T4.X, KC0[2].Z, 1015; EG-NEXT: ALU clause starting at 9: 1016; EG-NEXT: BFE_INT T5.X, T4.X, 0.0, literal.x, 1017; EG-NEXT: LSHR T0.W, T4.X, literal.x, 1018; EG-NEXT: LSHR * T4.X, KC0[2].Y, literal.y, 1019; EG-NEXT: 16(2.242078e-44), 2(2.802597e-45) 1020; EG-NEXT: BFE_INT * T5.Y, PV.W, 0.0, literal.x, 1021; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1022 %load = load <2 x i16>, <2 x i16> addrspace(4)* %in 1023 %ext = sext <2 x i16> %load to <2 x i32> 1024 store <2 x i32> %ext, <2 x i32> addrspace(1)* %out 1025 ret void 1026} 1027 1028define amdgpu_kernel void @constant_zextload_v3i16_to_v3i32(<3 x i32> addrspace(1)* %out, <3 x i16> addrspace(4)* %in) { 1029; GCN-NOHSA-SI-LABEL: constant_zextload_v3i16_to_v3i32: 1030; GCN-NOHSA-SI: ; %bb.0: ; %entry 1031; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 1032; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1033; GCN-NOHSA-SI-NEXT: s_load_dwordx2 s[4:5], s[2:3], 0x0 1034; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 1035; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 1036; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, 0xffff 1037; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1038; GCN-NOHSA-SI-NEXT: s_lshr_b32 s7, s4, 16 1039; GCN-NOHSA-SI-NEXT: s_and_b32 s5, s5, s6 1040; GCN-NOHSA-SI-NEXT: s_and_b32 s4, s4, s6 1041; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s5 1042; GCN-NOHSA-SI-NEXT: buffer_store_dword v0, off, s[0:3], 0 offset:8 1043; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 1044; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s4 1045; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s7 1046; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 0 1047; GCN-NOHSA-SI-NEXT: s_endpgm 1048; 1049; GCN-HSA-LABEL: constant_zextload_v3i16_to_v3i32: 1050; GCN-HSA: ; %bb.0: ; %entry 1051; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 1052; GCN-HSA-NEXT: s_mov_b32 s6, 0xffff 1053; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1054; GCN-HSA-NEXT: v_mov_b32_e32 v3, s0 1055; GCN-HSA-NEXT: v_mov_b32_e32 v4, s1 1056; GCN-HSA-NEXT: s_load_dwordx2 s[0:1], s[2:3], 0x0 1057; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1058; GCN-HSA-NEXT: s_lshr_b32 s2, s0, 16 1059; GCN-HSA-NEXT: s_and_b32 s1, s1, s6 1060; GCN-HSA-NEXT: s_and_b32 s0, s0, s6 1061; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 1062; GCN-HSA-NEXT: v_mov_b32_e32 v1, s2 1063; GCN-HSA-NEXT: v_mov_b32_e32 v2, s1 1064; GCN-HSA-NEXT: flat_store_dwordx3 v[3:4], v[0:2] 1065; GCN-HSA-NEXT: s_endpgm 1066; 1067; GCN-NOHSA-VI-LABEL: constant_zextload_v3i16_to_v3i32: 1068; GCN-NOHSA-VI: ; %bb.0: ; %entry 1069; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 1070; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, 0xffff 1071; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 1072; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 1073; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1074; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 1075; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 1076; GCN-NOHSA-VI-NEXT: s_load_dwordx2 s[4:5], s[6:7], 0x0 1077; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1078; GCN-NOHSA-VI-NEXT: s_and_b32 s5, s5, s8 1079; GCN-NOHSA-VI-NEXT: s_lshr_b32 s6, s4, 16 1080; GCN-NOHSA-VI-NEXT: s_and_b32 s4, s4, s8 1081; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s4 1082; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s6 1083; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s5 1084; GCN-NOHSA-VI-NEXT: buffer_store_dwordx3 v[0:2], off, s[0:3], 0 1085; GCN-NOHSA-VI-NEXT: s_endpgm 1086; 1087; EG-LABEL: constant_zextload_v3i16_to_v3i32: 1088; EG: ; %bb.0: ; %entry 1089; EG-NEXT: ALU 4, @12, KC0[CB0:0-32], KC1[] 1090; EG-NEXT: TEX 2 @6 1091; EG-NEXT: ALU 2, @17, KC0[], KC1[] 1092; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T2.X, T4.X, 0 1093; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T3.XY, T0.X, 1 1094; EG-NEXT: CF_END 1095; EG-NEXT: Fetch clause starting at 6: 1096; EG-NEXT: VTX_READ_16 T2.X, T1.X, 4, #1 1097; EG-NEXT: VTX_READ_16 T3.X, T1.X, 0, #1 1098; EG-NEXT: VTX_READ_16 T1.X, T1.X, 2, #1 1099; EG-NEXT: ALU clause starting at 12: 1100; EG-NEXT: LSHR T0.X, KC0[2].Y, literal.x, 1101; EG-NEXT: MOV * T1.X, KC0[2].Z, 1102; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1103; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 1104; EG-NEXT: 8(1.121039e-44), 0(0.000000e+00) 1105; EG-NEXT: ALU clause starting at 17: 1106; EG-NEXT: LSHR T4.X, T0.W, literal.x, 1107; EG-NEXT: MOV * T3.Y, T1.X, 1108; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1109entry: 1110 %ld = load <3 x i16>, <3 x i16> addrspace(4)* %in 1111 %ext = zext <3 x i16> %ld to <3 x i32> 1112 store <3 x i32> %ext, <3 x i32> addrspace(1)* %out 1113 ret void 1114} 1115 1116define amdgpu_kernel void @constant_sextload_v3i16_to_v3i32(<3 x i32> addrspace(1)* %out, <3 x i16> addrspace(4)* %in) { 1117; GCN-NOHSA-SI-LABEL: constant_sextload_v3i16_to_v3i32: 1118; GCN-NOHSA-SI: ; %bb.0: ; %entry 1119; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 1120; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1121; GCN-NOHSA-SI-NEXT: s_load_dwordx2 s[4:5], s[2:3], 0x0 1122; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 1123; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 1124; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1125; GCN-NOHSA-SI-NEXT: s_ashr_i32 s6, s4, 16 1126; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s5, s5 1127; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s4, s4 1128; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s5 1129; GCN-NOHSA-SI-NEXT: buffer_store_dword v0, off, s[0:3], 0 offset:8 1130; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 1131; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s4 1132; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s6 1133; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 0 1134; GCN-NOHSA-SI-NEXT: s_endpgm 1135; 1136; GCN-HSA-LABEL: constant_sextload_v3i16_to_v3i32: 1137; GCN-HSA: ; %bb.0: ; %entry 1138; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 1139; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1140; GCN-HSA-NEXT: v_mov_b32_e32 v3, s0 1141; GCN-HSA-NEXT: v_mov_b32_e32 v4, s1 1142; GCN-HSA-NEXT: s_load_dwordx2 s[0:1], s[2:3], 0x0 1143; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1144; GCN-HSA-NEXT: s_ashr_i32 s2, s0, 16 1145; GCN-HSA-NEXT: s_sext_i32_i16 s1, s1 1146; GCN-HSA-NEXT: s_sext_i32_i16 s0, s0 1147; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 1148; GCN-HSA-NEXT: v_mov_b32_e32 v1, s2 1149; GCN-HSA-NEXT: v_mov_b32_e32 v2, s1 1150; GCN-HSA-NEXT: flat_store_dwordx3 v[3:4], v[0:2] 1151; GCN-HSA-NEXT: s_endpgm 1152; 1153; GCN-NOHSA-VI-LABEL: constant_sextload_v3i16_to_v3i32: 1154; GCN-NOHSA-VI: ; %bb.0: ; %entry 1155; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 1156; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 1157; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 1158; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1159; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 1160; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 1161; GCN-NOHSA-VI-NEXT: s_load_dwordx2 s[4:5], s[6:7], 0x0 1162; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1163; GCN-NOHSA-VI-NEXT: s_ashr_i32 s6, s4, 16 1164; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s5, s5 1165; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s4, s4 1166; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s4 1167; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s6 1168; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s5 1169; GCN-NOHSA-VI-NEXT: buffer_store_dwordx3 v[0:2], off, s[0:3], 0 1170; GCN-NOHSA-VI-NEXT: s_endpgm 1171; 1172; EG-LABEL: constant_sextload_v3i16_to_v3i32: 1173; EG: ; %bb.0: ; %entry 1174; EG-NEXT: ALU 0, @12, KC0[CB0:0-32], KC1[] 1175; EG-NEXT: TEX 2 @6 1176; EG-NEXT: ALU 9, @13, KC0[CB0:0-32], KC1[] 1177; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T2.X, T3.X, 0 1178; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1 1179; EG-NEXT: CF_END 1180; EG-NEXT: Fetch clause starting at 6: 1181; EG-NEXT: VTX_READ_16 T1.X, T0.X, 2, #1 1182; EG-NEXT: VTX_READ_16 T2.X, T0.X, 4, #1 1183; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 1184; EG-NEXT: ALU clause starting at 12: 1185; EG-NEXT: MOV * T0.X, KC0[2].Z, 1186; EG-NEXT: ALU clause starting at 13: 1187; EG-NEXT: BFE_INT * T0.Y, T1.X, 0.0, literal.x, 1188; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1189; EG-NEXT: BFE_INT T0.X, T0.X, 0.0, literal.x, 1190; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.y, 1191; EG-NEXT: 16(2.242078e-44), 2(2.802597e-45) 1192; EG-NEXT: BFE_INT T2.X, T2.X, 0.0, literal.x, 1193; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 1194; EG-NEXT: 16(2.242078e-44), 8(1.121039e-44) 1195; EG-NEXT: LSHR * T3.X, PV.W, literal.x, 1196; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1197entry: 1198 %ld = load <3 x i16>, <3 x i16> addrspace(4)* %in 1199 %ext = sext <3 x i16> %ld to <3 x i32> 1200 store <3 x i32> %ext, <3 x i32> addrspace(1)* %out 1201 ret void 1202} 1203 1204; v4i16 is naturally 8 byte aligned 1205; TODO: This should use LD, but for some there are redundant MOVs 1206define amdgpu_kernel void @constant_zextload_v4i16_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x i16> addrspace(4)* %in) #0 { 1207; GCN-NOHSA-SI-LABEL: constant_zextload_v4i16_to_v4i32: 1208; GCN-NOHSA-SI: ; %bb.0: 1209; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 1210; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1211; GCN-NOHSA-SI-NEXT: s_load_dwordx2 s[4:5], s[2:3], 0x0 1212; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 1213; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, 0xffff 1214; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1215; GCN-NOHSA-SI-NEXT: s_lshr_b32 s6, s5, 16 1216; GCN-NOHSA-SI-NEXT: s_lshr_b32 s7, s4, 16 1217; GCN-NOHSA-SI-NEXT: s_and_b32 s5, s5, s2 1218; GCN-NOHSA-SI-NEXT: s_and_b32 s4, s4, s2 1219; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 1220; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s4 1221; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s7 1222; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s5 1223; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s6 1224; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 1225; GCN-NOHSA-SI-NEXT: s_endpgm 1226; 1227; GCN-HSA-LABEL: constant_zextload_v4i16_to_v4i32: 1228; GCN-HSA: ; %bb.0: 1229; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 1230; GCN-HSA-NEXT: s_mov_b32 s6, 0xffff 1231; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1232; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 1233; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 1234; GCN-HSA-NEXT: s_load_dwordx2 s[0:1], s[2:3], 0x0 1235; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1236; GCN-HSA-NEXT: s_lshr_b32 s2, s1, 16 1237; GCN-HSA-NEXT: s_lshr_b32 s3, s0, 16 1238; GCN-HSA-NEXT: s_and_b32 s1, s1, s6 1239; GCN-HSA-NEXT: s_and_b32 s0, s0, s6 1240; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 1241; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 1242; GCN-HSA-NEXT: v_mov_b32_e32 v2, s1 1243; GCN-HSA-NEXT: v_mov_b32_e32 v3, s2 1244; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 1245; GCN-HSA-NEXT: s_endpgm 1246; 1247; GCN-NOHSA-VI-LABEL: constant_zextload_v4i16_to_v4i32: 1248; GCN-NOHSA-VI: ; %bb.0: 1249; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 1250; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, 0xffff 1251; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 1252; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 1253; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1254; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 1255; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 1256; GCN-NOHSA-VI-NEXT: s_load_dwordx2 s[4:5], s[6:7], 0x0 1257; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1258; GCN-NOHSA-VI-NEXT: s_lshr_b32 s6, s5, 16 1259; GCN-NOHSA-VI-NEXT: s_and_b32 s5, s5, s8 1260; GCN-NOHSA-VI-NEXT: s_lshr_b32 s7, s4, 16 1261; GCN-NOHSA-VI-NEXT: s_and_b32 s4, s4, s8 1262; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s4 1263; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s7 1264; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s5 1265; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s6 1266; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 1267; GCN-NOHSA-VI-NEXT: s_endpgm 1268; 1269; EG-LABEL: constant_zextload_v4i16_to_v4i32: 1270; EG: ; %bb.0: 1271; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1272; EG-NEXT: TEX 0 @6 1273; EG-NEXT: ALU 12, @9, KC0[CB0:0-32], KC1[] 1274; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T6.X, 1 1275; EG-NEXT: CF_END 1276; EG-NEXT: PAD 1277; EG-NEXT: Fetch clause starting at 6: 1278; EG-NEXT: VTX_READ_64 T5.XY, T5.X, 0, #1 1279; EG-NEXT: ALU clause starting at 8: 1280; EG-NEXT: MOV * T5.X, KC0[2].Z, 1281; EG-NEXT: ALU clause starting at 9: 1282; EG-NEXT: MOV T2.X, T5.X, 1283; EG-NEXT: MOV * T3.X, T5.Y, 1284; EG-NEXT: MOV T0.Y, PV.X, 1285; EG-NEXT: MOV * T0.Z, PS, 1286; EG-NEXT: LSHR * T5.W, PV.Z, literal.x, 1287; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1288; EG-NEXT: AND_INT * T5.Z, T0.Z, literal.x, 1289; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 1290; EG-NEXT: LSHR * T5.Y, T0.Y, literal.x, 1291; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1292; EG-NEXT: AND_INT T5.X, T0.Y, literal.x, 1293; EG-NEXT: LSHR * T6.X, KC0[2].Y, literal.y, 1294; EG-NEXT: 65535(9.183409e-41), 2(2.802597e-45) 1295 %load = load <4 x i16>, <4 x i16> addrspace(4)* %in 1296 %ext = zext <4 x i16> %load to <4 x i32> 1297 store <4 x i32> %ext, <4 x i32> addrspace(1)* %out 1298 ret void 1299} 1300 1301; v4i16 is naturally 8 byte aligned 1302; TODO: This should use LD, but for some there are redundant MOVs 1303; TODO: We should use ASHR instead of LSHR + BFE 1304define amdgpu_kernel void @constant_sextload_v4i16_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x i16> addrspace(4)* %in) #0 { 1305; GCN-NOHSA-SI-LABEL: constant_sextload_v4i16_to_v4i32: 1306; GCN-NOHSA-SI: ; %bb.0: 1307; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 1308; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1309; GCN-NOHSA-SI-NEXT: s_load_dwordx2 s[4:5], s[2:3], 0x0 1310; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 1311; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1312; GCN-NOHSA-SI-NEXT: s_ashr_i32 s8, s4, 16 1313; GCN-NOHSA-SI-NEXT: s_ashr_i64 s[6:7], s[4:5], 48 1314; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s5, s5 1315; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s4, s4 1316; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 1317; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s4 1318; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s8 1319; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s5 1320; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s6 1321; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 1322; GCN-NOHSA-SI-NEXT: s_endpgm 1323; 1324; GCN-HSA-LABEL: constant_sextload_v4i16_to_v4i32: 1325; GCN-HSA: ; %bb.0: 1326; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 1327; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1328; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 1329; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 1330; GCN-HSA-NEXT: s_load_dwordx2 s[0:1], s[2:3], 0x0 1331; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1332; GCN-HSA-NEXT: s_ashr_i32 s4, s0, 16 1333; GCN-HSA-NEXT: s_ashr_i64 s[2:3], s[0:1], 48 1334; GCN-HSA-NEXT: s_sext_i32_i16 s1, s1 1335; GCN-HSA-NEXT: s_sext_i32_i16 s0, s0 1336; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 1337; GCN-HSA-NEXT: v_mov_b32_e32 v1, s4 1338; GCN-HSA-NEXT: v_mov_b32_e32 v2, s1 1339; GCN-HSA-NEXT: v_mov_b32_e32 v3, s2 1340; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 1341; GCN-HSA-NEXT: s_endpgm 1342; 1343; GCN-NOHSA-VI-LABEL: constant_sextload_v4i16_to_v4i32: 1344; GCN-NOHSA-VI: ; %bb.0: 1345; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 1346; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 1347; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 1348; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1349; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 1350; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 1351; GCN-NOHSA-VI-NEXT: s_load_dwordx2 s[4:5], s[6:7], 0x0 1352; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1353; GCN-NOHSA-VI-NEXT: s_ashr_i32 s6, s5, 16 1354; GCN-NOHSA-VI-NEXT: s_ashr_i32 s7, s4, 16 1355; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s5, s5 1356; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s4, s4 1357; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s4 1358; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s7 1359; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s5 1360; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s6 1361; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 1362; GCN-NOHSA-VI-NEXT: s_endpgm 1363; 1364; EG-LABEL: constant_sextload_v4i16_to_v4i32: 1365; EG: ; %bb.0: 1366; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1367; EG-NEXT: TEX 0 @6 1368; EG-NEXT: ALU 14, @9, KC0[CB0:0-32], KC1[] 1369; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T6.X, 1 1370; EG-NEXT: CF_END 1371; EG-NEXT: PAD 1372; EG-NEXT: Fetch clause starting at 6: 1373; EG-NEXT: VTX_READ_64 T5.XY, T5.X, 0, #1 1374; EG-NEXT: ALU clause starting at 8: 1375; EG-NEXT: MOV * T5.X, KC0[2].Z, 1376; EG-NEXT: ALU clause starting at 9: 1377; EG-NEXT: MOV T2.X, T5.X, 1378; EG-NEXT: MOV * T3.X, T5.Y, 1379; EG-NEXT: MOV T0.Y, PV.X, 1380; EG-NEXT: MOV * T0.Z, PS, 1381; EG-NEXT: BFE_INT * T5.Z, PV.Z, 0.0, literal.x, 1382; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1383; EG-NEXT: BFE_INT T5.X, T0.Y, 0.0, literal.x, 1384; EG-NEXT: LSHR * T0.W, T0.Z, literal.x, 1385; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1386; EG-NEXT: BFE_INT T5.W, PV.W, 0.0, literal.x, 1387; EG-NEXT: LSHR * T0.W, T0.Y, literal.x, 1388; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1389; EG-NEXT: LSHR T6.X, KC0[2].Y, literal.x, 1390; EG-NEXT: BFE_INT * T5.Y, PS, 0.0, literal.y, 1391; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 1392 %load = load <4 x i16>, <4 x i16> addrspace(4)* %in 1393 %ext = sext <4 x i16> %load to <4 x i32> 1394 store <4 x i32> %ext, <4 x i32> addrspace(1)* %out 1395 ret void 1396} 1397 1398; v8i16 is naturally 16 byte aligned 1399; TODO: These should use LSHR instead of BFE_UINT 1400; TODO: This should use DST, but for some there are redundant MOVs 1401define amdgpu_kernel void @constant_zextload_v8i16_to_v8i32(<8 x i32> addrspace(1)* %out, <8 x i16> addrspace(4)* %in) #0 { 1402; GCN-NOHSA-SI-LABEL: constant_zextload_v8i16_to_v8i32: 1403; GCN-NOHSA-SI: ; %bb.0: 1404; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 1405; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1406; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[2:3], 0x0 1407; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 1408; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 1409; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, 0xffff 1410; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1411; GCN-NOHSA-SI-NEXT: s_lshr_b32 s9, s5, 16 1412; GCN-NOHSA-SI-NEXT: s_lshr_b32 s10, s4, 16 1413; GCN-NOHSA-SI-NEXT: s_lshr_b32 s11, s7, 16 1414; GCN-NOHSA-SI-NEXT: s_lshr_b32 s12, s6, 16 1415; GCN-NOHSA-SI-NEXT: s_and_b32 s5, s5, s8 1416; GCN-NOHSA-SI-NEXT: s_and_b32 s7, s7, s8 1417; GCN-NOHSA-SI-NEXT: s_and_b32 s6, s6, s8 1418; GCN-NOHSA-SI-NEXT: s_and_b32 s4, s4, s8 1419; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s6 1420; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s12 1421; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s7 1422; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s11 1423; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 1424; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 1425; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s4 1426; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s10 1427; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s5 1428; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s9 1429; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 1430; GCN-NOHSA-SI-NEXT: s_endpgm 1431; 1432; GCN-HSA-LABEL: constant_zextload_v8i16_to_v8i32: 1433; GCN-HSA: ; %bb.0: 1434; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 1435; GCN-HSA-NEXT: s_mov_b32 s8, 0xffff 1436; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1437; GCN-HSA-NEXT: s_load_dwordx4 s[4:7], s[2:3], 0x0 1438; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1439; GCN-HSA-NEXT: s_lshr_b32 s9, s5, 16 1440; GCN-HSA-NEXT: s_lshr_b32 s10, s4, 16 1441; GCN-HSA-NEXT: s_lshr_b32 s2, s7, 16 1442; GCN-HSA-NEXT: s_lshr_b32 s3, s6, 16 1443; GCN-HSA-NEXT: s_and_b32 s5, s5, s8 1444; GCN-HSA-NEXT: s_and_b32 s4, s4, s8 1445; GCN-HSA-NEXT: s_and_b32 s7, s7, s8 1446; GCN-HSA-NEXT: s_and_b32 s6, s6, s8 1447; GCN-HSA-NEXT: v_mov_b32_e32 v3, s2 1448; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 1449; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 1450; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 1451; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 1452; GCN-HSA-NEXT: v_mov_b32_e32 v0, s6 1453; GCN-HSA-NEXT: v_mov_b32_e32 v2, s7 1454; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 1455; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 1456; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 1457; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 1458; GCN-HSA-NEXT: v_mov_b32_e32 v1, s10 1459; GCN-HSA-NEXT: v_mov_b32_e32 v2, s5 1460; GCN-HSA-NEXT: v_mov_b32_e32 v3, s9 1461; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 1462; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 1463; GCN-HSA-NEXT: s_endpgm 1464; 1465; GCN-NOHSA-VI-LABEL: constant_zextload_v8i16_to_v8i32: 1466; GCN-NOHSA-VI: ; %bb.0: 1467; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 1468; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, 0xffff 1469; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 1470; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 1471; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1472; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 1473; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 1474; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[6:7], 0x0 1475; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1476; GCN-NOHSA-VI-NEXT: s_lshr_b32 s11, s7, 16 1477; GCN-NOHSA-VI-NEXT: s_and_b32 s7, s7, s8 1478; GCN-NOHSA-VI-NEXT: s_lshr_b32 s12, s6, 16 1479; GCN-NOHSA-VI-NEXT: s_and_b32 s6, s6, s8 1480; GCN-NOHSA-VI-NEXT: s_lshr_b32 s9, s5, 16 1481; GCN-NOHSA-VI-NEXT: s_and_b32 s5, s5, s8 1482; GCN-NOHSA-VI-NEXT: s_lshr_b32 s10, s4, 16 1483; GCN-NOHSA-VI-NEXT: s_and_b32 s4, s4, s8 1484; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s6 1485; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s12 1486; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s7 1487; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s11 1488; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 1489; GCN-NOHSA-VI-NEXT: s_nop 0 1490; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s4 1491; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s10 1492; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s5 1493; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s9 1494; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 1495; GCN-NOHSA-VI-NEXT: s_endpgm 1496; 1497; EG-LABEL: constant_zextload_v8i16_to_v8i32: 1498; EG: ; %bb.0: 1499; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1500; EG-NEXT: TEX 0 @6 1501; EG-NEXT: ALU 17, @9, KC0[CB0:0-32], KC1[] 1502; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T10.X, 0 1503; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T7.X, 1 1504; EG-NEXT: CF_END 1505; EG-NEXT: Fetch clause starting at 6: 1506; EG-NEXT: VTX_READ_128 T7.XYZW, T7.X, 0, #1 1507; EG-NEXT: ALU clause starting at 8: 1508; EG-NEXT: MOV * T7.X, KC0[2].Z, 1509; EG-NEXT: ALU clause starting at 9: 1510; EG-NEXT: LSHR * T8.W, T7.Y, literal.x, 1511; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1512; EG-NEXT: AND_INT * T8.Z, T7.Y, literal.x, 1513; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 1514; EG-NEXT: LSHR T8.Y, T7.X, literal.x, 1515; EG-NEXT: LSHR * T9.W, T7.W, literal.x, 1516; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1517; EG-NEXT: AND_INT T8.X, T7.X, literal.x, 1518; EG-NEXT: AND_INT T9.Z, T7.W, literal.x, 1519; EG-NEXT: LSHR * T7.X, KC0[2].Y, literal.y, 1520; EG-NEXT: 65535(9.183409e-41), 2(2.802597e-45) 1521; EG-NEXT: LSHR * T9.Y, T7.Z, literal.x, 1522; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1523; EG-NEXT: AND_INT T9.X, T7.Z, literal.x, 1524; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 1525; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 1526; EG-NEXT: LSHR * T10.X, PV.W, literal.x, 1527; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1528 %load = load <8 x i16>, <8 x i16> addrspace(4)* %in 1529 %ext = zext <8 x i16> %load to <8 x i32> 1530 store <8 x i32> %ext, <8 x i32> addrspace(1)* %out 1531 ret void 1532} 1533 1534; v8i16 is naturally 16 byte aligned 1535; TODO: 4 of these should use ASHR instead of LSHR + BFE_INT 1536; TODO: This should use DST, but for some there are redundant MOVs 1537define amdgpu_kernel void @constant_sextload_v8i16_to_v8i32(<8 x i32> addrspace(1)* %out, <8 x i16> addrspace(4)* %in) #0 { 1538; GCN-NOHSA-SI-LABEL: constant_sextload_v8i16_to_v8i32: 1539; GCN-NOHSA-SI: ; %bb.0: 1540; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 1541; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1542; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[2:3], 0x0 1543; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 1544; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 1545; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1546; GCN-NOHSA-SI-NEXT: s_ashr_i32 s8, s5, 16 1547; GCN-NOHSA-SI-NEXT: s_ashr_i32 s9, s4, 16 1548; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s5, s5 1549; GCN-NOHSA-SI-NEXT: s_ashr_i32 s10, s7, 16 1550; GCN-NOHSA-SI-NEXT: s_ashr_i32 s11, s6, 16 1551; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s7, s7 1552; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s6, s6 1553; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s4, s4 1554; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s6 1555; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s11 1556; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s7 1557; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s10 1558; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 1559; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 1560; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s4 1561; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s9 1562; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s5 1563; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s8 1564; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 1565; GCN-NOHSA-SI-NEXT: s_endpgm 1566; 1567; GCN-HSA-LABEL: constant_sextload_v8i16_to_v8i32: 1568; GCN-HSA: ; %bb.0: 1569; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 1570; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1571; GCN-HSA-NEXT: s_load_dwordx4 s[4:7], s[2:3], 0x0 1572; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1573; GCN-HSA-NEXT: s_ashr_i32 s8, s5, 16 1574; GCN-HSA-NEXT: s_ashr_i32 s9, s4, 16 1575; GCN-HSA-NEXT: s_ashr_i32 s2, s7, 16 1576; GCN-HSA-NEXT: s_ashr_i32 s3, s6, 16 1577; GCN-HSA-NEXT: v_mov_b32_e32 v3, s2 1578; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 1579; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 1580; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 1581; GCN-HSA-NEXT: s_sext_i32_i16 s7, s7 1582; GCN-HSA-NEXT: s_sext_i32_i16 s6, s6 1583; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 1584; GCN-HSA-NEXT: v_mov_b32_e32 v0, s6 1585; GCN-HSA-NEXT: v_mov_b32_e32 v2, s7 1586; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 1587; GCN-HSA-NEXT: s_sext_i32_i16 s5, s5 1588; GCN-HSA-NEXT: s_sext_i32_i16 s4, s4 1589; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 1590; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 1591; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 1592; GCN-HSA-NEXT: v_mov_b32_e32 v1, s9 1593; GCN-HSA-NEXT: v_mov_b32_e32 v2, s5 1594; GCN-HSA-NEXT: v_mov_b32_e32 v3, s8 1595; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 1596; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 1597; GCN-HSA-NEXT: s_endpgm 1598; 1599; GCN-NOHSA-VI-LABEL: constant_sextload_v8i16_to_v8i32: 1600; GCN-NOHSA-VI: ; %bb.0: 1601; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 1602; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 1603; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 1604; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1605; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 1606; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 1607; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[6:7], 0x0 1608; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1609; GCN-NOHSA-VI-NEXT: s_ashr_i32 s10, s7, 16 1610; GCN-NOHSA-VI-NEXT: s_ashr_i32 s11, s6, 16 1611; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s7, s7 1612; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s6, s6 1613; GCN-NOHSA-VI-NEXT: s_ashr_i32 s8, s5, 16 1614; GCN-NOHSA-VI-NEXT: s_ashr_i32 s9, s4, 16 1615; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s5, s5 1616; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s4, s4 1617; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s6 1618; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s11 1619; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s7 1620; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s10 1621; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 1622; GCN-NOHSA-VI-NEXT: s_nop 0 1623; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s4 1624; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s9 1625; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s5 1626; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s8 1627; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 1628; GCN-NOHSA-VI-NEXT: s_endpgm 1629; 1630; EG-LABEL: constant_sextload_v8i16_to_v8i32: 1631; EG: ; %bb.0: 1632; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1633; EG-NEXT: TEX 0 @6 1634; EG-NEXT: ALU 19, @9, KC0[CB0:0-32], KC1[] 1635; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T10.X, 0 1636; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T7.X, 1 1637; EG-NEXT: CF_END 1638; EG-NEXT: Fetch clause starting at 6: 1639; EG-NEXT: VTX_READ_128 T7.XYZW, T7.X, 0, #1 1640; EG-NEXT: ALU clause starting at 8: 1641; EG-NEXT: MOV * T7.X, KC0[2].Z, 1642; EG-NEXT: ALU clause starting at 9: 1643; EG-NEXT: BFE_INT * T8.Z, T7.Y, 0.0, literal.x, 1644; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1645; EG-NEXT: BFE_INT T8.X, T7.X, 0.0, literal.x, 1646; EG-NEXT: BFE_INT T9.Z, T7.W, 0.0, literal.x, 1647; EG-NEXT: LSHR * T0.W, T7.Y, literal.x, 1648; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1649; EG-NEXT: BFE_INT T9.X, T7.Z, 0.0, literal.x, 1650; EG-NEXT: LSHR T0.Z, T7.W, literal.x, 1651; EG-NEXT: BFE_INT T8.W, PV.W, 0.0, literal.x, 1652; EG-NEXT: LSHR * T0.W, T7.X, literal.x, 1653; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1654; EG-NEXT: LSHR T7.X, KC0[2].Y, literal.x, 1655; EG-NEXT: BFE_INT T8.Y, PS, 0.0, literal.y, 1656; EG-NEXT: LSHR T1.Z, T7.Z, literal.y, 1657; EG-NEXT: BFE_INT T9.W, PV.Z, 0.0, literal.y, 1658; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 1659; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 1660; EG-NEXT: LSHR T10.X, PS, literal.x, 1661; EG-NEXT: BFE_INT * T9.Y, PV.Z, 0.0, literal.y, 1662; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 1663 %load = load <8 x i16>, <8 x i16> addrspace(4)* %in 1664 %ext = sext <8 x i16> %load to <8 x i32> 1665 store <8 x i32> %ext, <8 x i32> addrspace(1)* %out 1666 ret void 1667} 1668 1669define amdgpu_kernel void @constant_zextload_v16i16_to_v16i32(<16 x i32> addrspace(1)* %out, <16 x i16> addrspace(4)* %in) #0 { 1670; GCN-NOHSA-SI-LABEL: constant_zextload_v16i16_to_v16i32: 1671; GCN-NOHSA-SI: ; %bb.0: 1672; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 1673; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1674; GCN-NOHSA-SI-NEXT: s_load_dwordx8 s[4:11], s[2:3], 0x0 1675; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 1676; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 1677; GCN-NOHSA-SI-NEXT: s_mov_b32 s12, 0xffff 1678; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1679; GCN-NOHSA-SI-NEXT: s_lshr_b32 s13, s5, 16 1680; GCN-NOHSA-SI-NEXT: s_lshr_b32 s14, s4, 16 1681; GCN-NOHSA-SI-NEXT: s_lshr_b32 s15, s7, 16 1682; GCN-NOHSA-SI-NEXT: s_lshr_b32 s16, s6, 16 1683; GCN-NOHSA-SI-NEXT: s_lshr_b32 s17, s9, 16 1684; GCN-NOHSA-SI-NEXT: s_lshr_b32 s18, s8, 16 1685; GCN-NOHSA-SI-NEXT: s_lshr_b32 s19, s11, 16 1686; GCN-NOHSA-SI-NEXT: s_lshr_b32 s20, s10, 16 1687; GCN-NOHSA-SI-NEXT: s_and_b32 s5, s5, s12 1688; GCN-NOHSA-SI-NEXT: s_and_b32 s4, s4, s12 1689; GCN-NOHSA-SI-NEXT: s_and_b32 s7, s7, s12 1690; GCN-NOHSA-SI-NEXT: s_and_b32 s6, s6, s12 1691; GCN-NOHSA-SI-NEXT: s_and_b32 s9, s9, s12 1692; GCN-NOHSA-SI-NEXT: s_and_b32 s11, s11, s12 1693; GCN-NOHSA-SI-NEXT: s_and_b32 s10, s10, s12 1694; GCN-NOHSA-SI-NEXT: s_and_b32 s8, s8, s12 1695; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s10 1696; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s20 1697; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s11 1698; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s19 1699; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 1700; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 1701; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s8 1702; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s18 1703; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s9 1704; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s17 1705; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 1706; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 1707; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s6 1708; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s16 1709; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s7 1710; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s15 1711; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 1712; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 1713; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s4 1714; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s14 1715; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s5 1716; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s13 1717; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 1718; GCN-NOHSA-SI-NEXT: s_endpgm 1719; 1720; GCN-HSA-LABEL: constant_zextload_v16i16_to_v16i32: 1721; GCN-HSA: ; %bb.0: 1722; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 1723; GCN-HSA-NEXT: s_mov_b32 s12, 0xffff 1724; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1725; GCN-HSA-NEXT: s_load_dwordx8 s[4:11], s[2:3], 0x0 1726; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1727; GCN-HSA-NEXT: s_lshr_b32 s13, s5, 16 1728; GCN-HSA-NEXT: s_lshr_b32 s14, s4, 16 1729; GCN-HSA-NEXT: s_lshr_b32 s15, s7, 16 1730; GCN-HSA-NEXT: s_lshr_b32 s16, s6, 16 1731; GCN-HSA-NEXT: s_lshr_b32 s17, s9, 16 1732; GCN-HSA-NEXT: s_lshr_b32 s18, s8, 16 1733; GCN-HSA-NEXT: s_lshr_b32 s2, s11, 16 1734; GCN-HSA-NEXT: s_lshr_b32 s3, s10, 16 1735; GCN-HSA-NEXT: s_and_b32 s5, s5, s12 1736; GCN-HSA-NEXT: s_and_b32 s4, s4, s12 1737; GCN-HSA-NEXT: s_and_b32 s7, s7, s12 1738; GCN-HSA-NEXT: s_and_b32 s6, s6, s12 1739; GCN-HSA-NEXT: s_and_b32 s9, s9, s12 1740; GCN-HSA-NEXT: s_and_b32 s8, s8, s12 1741; GCN-HSA-NEXT: s_and_b32 s11, s11, s12 1742; GCN-HSA-NEXT: s_and_b32 s10, s10, s12 1743; GCN-HSA-NEXT: v_mov_b32_e32 v3, s2 1744; GCN-HSA-NEXT: s_add_u32 s2, s0, 48 1745; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 1746; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 1747; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 1748; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 1749; GCN-HSA-NEXT: s_add_u32 s2, s0, 32 1750; GCN-HSA-NEXT: v_mov_b32_e32 v0, s10 1751; GCN-HSA-NEXT: v_mov_b32_e32 v2, s11 1752; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 1753; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 1754; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 1755; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 1756; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 1757; GCN-HSA-NEXT: v_mov_b32_e32 v0, s8 1758; GCN-HSA-NEXT: v_mov_b32_e32 v1, s18 1759; GCN-HSA-NEXT: v_mov_b32_e32 v2, s9 1760; GCN-HSA-NEXT: v_mov_b32_e32 v3, s17 1761; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 1762; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 1763; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 1764; GCN-HSA-NEXT: v_mov_b32_e32 v0, s6 1765; GCN-HSA-NEXT: v_mov_b32_e32 v1, s16 1766; GCN-HSA-NEXT: v_mov_b32_e32 v2, s7 1767; GCN-HSA-NEXT: v_mov_b32_e32 v3, s15 1768; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 1769; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 1770; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 1771; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 1772; GCN-HSA-NEXT: v_mov_b32_e32 v1, s14 1773; GCN-HSA-NEXT: v_mov_b32_e32 v2, s5 1774; GCN-HSA-NEXT: v_mov_b32_e32 v3, s13 1775; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 1776; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 1777; GCN-HSA-NEXT: s_endpgm 1778; 1779; GCN-NOHSA-VI-LABEL: constant_zextload_v16i16_to_v16i32: 1780; GCN-NOHSA-VI: ; %bb.0: 1781; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 1782; GCN-NOHSA-VI-NEXT: s_mov_b32 s12, 0xffff 1783; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 1784; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 1785; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1786; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 1787; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 1788; GCN-NOHSA-VI-NEXT: s_load_dwordx8 s[4:11], s[6:7], 0x0 1789; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1790; GCN-NOHSA-VI-NEXT: s_lshr_b32 s19, s11, 16 1791; GCN-NOHSA-VI-NEXT: s_and_b32 s11, s11, s12 1792; GCN-NOHSA-VI-NEXT: s_lshr_b32 s20, s10, 16 1793; GCN-NOHSA-VI-NEXT: s_and_b32 s10, s10, s12 1794; GCN-NOHSA-VI-NEXT: s_lshr_b32 s17, s9, 16 1795; GCN-NOHSA-VI-NEXT: s_and_b32 s9, s9, s12 1796; GCN-NOHSA-VI-NEXT: s_lshr_b32 s18, s8, 16 1797; GCN-NOHSA-VI-NEXT: s_and_b32 s8, s8, s12 1798; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s10 1799; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s20 1800; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s11 1801; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s19 1802; GCN-NOHSA-VI-NEXT: s_lshr_b32 s15, s7, 16 1803; GCN-NOHSA-VI-NEXT: s_and_b32 s7, s7, s12 1804; GCN-NOHSA-VI-NEXT: s_lshr_b32 s16, s6, 16 1805; GCN-NOHSA-VI-NEXT: s_and_b32 s6, s6, s12 1806; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 1807; GCN-NOHSA-VI-NEXT: s_lshr_b32 s13, s5, 16 1808; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s8 1809; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s18 1810; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s9 1811; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s17 1812; GCN-NOHSA-VI-NEXT: s_and_b32 s5, s5, s12 1813; GCN-NOHSA-VI-NEXT: s_lshr_b32 s14, s4, 16 1814; GCN-NOHSA-VI-NEXT: s_and_b32 s4, s4, s12 1815; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 1816; GCN-NOHSA-VI-NEXT: s_nop 0 1817; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s6 1818; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s16 1819; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s7 1820; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s15 1821; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 1822; GCN-NOHSA-VI-NEXT: s_nop 0 1823; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s4 1824; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s14 1825; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s5 1826; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s13 1827; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 1828; GCN-NOHSA-VI-NEXT: s_endpgm 1829; 1830; EG-LABEL: constant_zextload_v16i16_to_v16i32: 1831; EG: ; %bb.0: 1832; EG-NEXT: ALU 0, @12, KC0[CB0:0-32], KC1[] 1833; EG-NEXT: TEX 1 @8 1834; EG-NEXT: ALU 35, @13, KC0[CB0:0-32], KC1[] 1835; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T18.X, 0 1836; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T15.XYZW, T11.X, 0 1837; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T16.X, 0 1838; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T12.X, 1 1839; EG-NEXT: CF_END 1840; EG-NEXT: Fetch clause starting at 8: 1841; EG-NEXT: VTX_READ_128 T12.XYZW, T11.X, 0, #1 1842; EG-NEXT: VTX_READ_128 T11.XYZW, T11.X, 16, #1 1843; EG-NEXT: ALU clause starting at 12: 1844; EG-NEXT: MOV * T11.X, KC0[2].Z, 1845; EG-NEXT: ALU clause starting at 13: 1846; EG-NEXT: LSHR * T13.W, T12.Y, literal.x, 1847; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1848; EG-NEXT: AND_INT * T13.Z, T12.Y, literal.x, 1849; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 1850; EG-NEXT: LSHR T13.Y, T12.X, literal.x, 1851; EG-NEXT: LSHR * T14.W, T12.W, literal.x, 1852; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1853; EG-NEXT: AND_INT T13.X, T12.X, literal.x, 1854; EG-NEXT: AND_INT T14.Z, T12.W, literal.x, 1855; EG-NEXT: LSHR * T12.X, KC0[2].Y, literal.y, 1856; EG-NEXT: 65535(9.183409e-41), 2(2.802597e-45) 1857; EG-NEXT: LSHR T14.Y, T12.Z, literal.x, 1858; EG-NEXT: LSHR * T15.W, T11.Y, literal.x, 1859; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1860; EG-NEXT: AND_INT T14.X, T12.Z, literal.x, 1861; EG-NEXT: AND_INT T15.Z, T11.Y, literal.x, 1862; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 1863; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 1864; EG-NEXT: LSHR T16.X, PV.W, literal.x, 1865; EG-NEXT: LSHR T15.Y, T11.X, literal.y, 1866; EG-NEXT: LSHR T17.W, T11.W, literal.y, 1867; EG-NEXT: AND_INT * T15.X, T11.X, literal.z, 1868; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 1869; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 1870; EG-NEXT: AND_INT T17.Z, T11.W, literal.x, 1871; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 1872; EG-NEXT: 65535(9.183409e-41), 32(4.484155e-44) 1873; EG-NEXT: LSHR T11.X, PV.W, literal.x, 1874; EG-NEXT: LSHR T17.Y, T11.Z, literal.y, 1875; EG-NEXT: AND_INT * T17.X, T11.Z, literal.z, 1876; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 1877; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 1878; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 1879; EG-NEXT: 48(6.726233e-44), 0(0.000000e+00) 1880; EG-NEXT: LSHR * T18.X, PV.W, literal.x, 1881; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1882 %load = load <16 x i16>, <16 x i16> addrspace(4)* %in 1883 %ext = zext <16 x i16> %load to <16 x i32> 1884 store <16 x i32> %ext, <16 x i32> addrspace(1)* %out 1885 ret void 1886} 1887 1888define amdgpu_kernel void @constant_sextload_v16i16_to_v16i32(<16 x i32> addrspace(1)* %out, <16 x i16> addrspace(4)* %in) #0 { 1889; GCN-NOHSA-SI-LABEL: constant_sextload_v16i16_to_v16i32: 1890; GCN-NOHSA-SI: ; %bb.0: 1891; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 1892; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1893; GCN-NOHSA-SI-NEXT: s_load_dwordx8 s[4:11], s[2:3], 0x0 1894; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 1895; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 1896; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1897; GCN-NOHSA-SI-NEXT: s_ashr_i32 s12, s5, 16 1898; GCN-NOHSA-SI-NEXT: s_ashr_i32 s13, s4, 16 1899; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s5, s5 1900; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s4, s4 1901; GCN-NOHSA-SI-NEXT: s_ashr_i32 s14, s7, 16 1902; GCN-NOHSA-SI-NEXT: s_ashr_i32 s15, s6, 16 1903; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s7, s7 1904; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s6, s6 1905; GCN-NOHSA-SI-NEXT: s_ashr_i32 s16, s9, 16 1906; GCN-NOHSA-SI-NEXT: s_ashr_i32 s17, s8, 16 1907; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s9, s9 1908; GCN-NOHSA-SI-NEXT: s_ashr_i32 s18, s11, 16 1909; GCN-NOHSA-SI-NEXT: s_ashr_i32 s19, s10, 16 1910; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s11, s11 1911; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s10, s10 1912; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s8, s8 1913; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s10 1914; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s19 1915; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s11 1916; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s18 1917; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 1918; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 1919; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s8 1920; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s17 1921; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s9 1922; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s16 1923; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 1924; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 1925; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s6 1926; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s15 1927; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s7 1928; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s14 1929; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 1930; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 1931; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s4 1932; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s13 1933; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s5 1934; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s12 1935; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 1936; GCN-NOHSA-SI-NEXT: s_endpgm 1937; 1938; GCN-HSA-LABEL: constant_sextload_v16i16_to_v16i32: 1939; GCN-HSA: ; %bb.0: 1940; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 1941; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1942; GCN-HSA-NEXT: s_load_dwordx8 s[4:11], s[2:3], 0x0 1943; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1944; GCN-HSA-NEXT: s_ashr_i32 s12, s5, 16 1945; GCN-HSA-NEXT: s_ashr_i32 s13, s4, 16 1946; GCN-HSA-NEXT: s_ashr_i32 s14, s7, 16 1947; GCN-HSA-NEXT: s_ashr_i32 s15, s6, 16 1948; GCN-HSA-NEXT: s_ashr_i32 s16, s9, 16 1949; GCN-HSA-NEXT: s_ashr_i32 s17, s8, 16 1950; GCN-HSA-NEXT: s_ashr_i32 s2, s11, 16 1951; GCN-HSA-NEXT: s_ashr_i32 s3, s10, 16 1952; GCN-HSA-NEXT: v_mov_b32_e32 v3, s2 1953; GCN-HSA-NEXT: s_add_u32 s2, s0, 48 1954; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 1955; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 1956; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 1957; GCN-HSA-NEXT: s_sext_i32_i16 s11, s11 1958; GCN-HSA-NEXT: s_sext_i32_i16 s10, s10 1959; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 1960; GCN-HSA-NEXT: s_add_u32 s2, s0, 32 1961; GCN-HSA-NEXT: v_mov_b32_e32 v0, s10 1962; GCN-HSA-NEXT: v_mov_b32_e32 v2, s11 1963; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 1964; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 1965; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 1966; GCN-HSA-NEXT: s_sext_i32_i16 s9, s9 1967; GCN-HSA-NEXT: s_sext_i32_i16 s8, s8 1968; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 1969; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 1970; GCN-HSA-NEXT: v_mov_b32_e32 v0, s8 1971; GCN-HSA-NEXT: v_mov_b32_e32 v1, s17 1972; GCN-HSA-NEXT: v_mov_b32_e32 v2, s9 1973; GCN-HSA-NEXT: v_mov_b32_e32 v3, s16 1974; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 1975; GCN-HSA-NEXT: s_sext_i32_i16 s7, s7 1976; GCN-HSA-NEXT: s_sext_i32_i16 s6, s6 1977; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 1978; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 1979; GCN-HSA-NEXT: v_mov_b32_e32 v0, s6 1980; GCN-HSA-NEXT: v_mov_b32_e32 v1, s15 1981; GCN-HSA-NEXT: v_mov_b32_e32 v2, s7 1982; GCN-HSA-NEXT: v_mov_b32_e32 v3, s14 1983; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 1984; GCN-HSA-NEXT: s_sext_i32_i16 s5, s5 1985; GCN-HSA-NEXT: s_sext_i32_i16 s4, s4 1986; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 1987; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 1988; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 1989; GCN-HSA-NEXT: v_mov_b32_e32 v1, s13 1990; GCN-HSA-NEXT: v_mov_b32_e32 v2, s5 1991; GCN-HSA-NEXT: v_mov_b32_e32 v3, s12 1992; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 1993; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 1994; GCN-HSA-NEXT: s_endpgm 1995; 1996; GCN-NOHSA-VI-LABEL: constant_sextload_v16i16_to_v16i32: 1997; GCN-NOHSA-VI: ; %bb.0: 1998; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 1999; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 2000; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 2001; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 2002; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 2003; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 2004; GCN-NOHSA-VI-NEXT: s_load_dwordx8 s[4:11], s[6:7], 0x0 2005; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 2006; GCN-NOHSA-VI-NEXT: s_ashr_i32 s18, s11, 16 2007; GCN-NOHSA-VI-NEXT: s_ashr_i32 s19, s10, 16 2008; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s11, s11 2009; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s10, s10 2010; GCN-NOHSA-VI-NEXT: s_ashr_i32 s16, s9, 16 2011; GCN-NOHSA-VI-NEXT: s_ashr_i32 s17, s8, 16 2012; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s9, s9 2013; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s8, s8 2014; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s10 2015; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s19 2016; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s11 2017; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s18 2018; GCN-NOHSA-VI-NEXT: s_ashr_i32 s14, s7, 16 2019; GCN-NOHSA-VI-NEXT: s_ashr_i32 s15, s6, 16 2020; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s7, s7 2021; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s6, s6 2022; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 2023; GCN-NOHSA-VI-NEXT: s_ashr_i32 s12, s5, 16 2024; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s8 2025; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s17 2026; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s9 2027; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s16 2028; GCN-NOHSA-VI-NEXT: s_ashr_i32 s13, s4, 16 2029; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s5, s5 2030; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s4, s4 2031; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 2032; GCN-NOHSA-VI-NEXT: s_nop 0 2033; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s6 2034; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s15 2035; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s7 2036; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s14 2037; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 2038; GCN-NOHSA-VI-NEXT: s_nop 0 2039; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s4 2040; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s13 2041; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s5 2042; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s12 2043; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 2044; GCN-NOHSA-VI-NEXT: s_endpgm 2045; 2046; EG-LABEL: constant_sextload_v16i16_to_v16i32: 2047; EG: ; %bb.0: 2048; EG-NEXT: ALU 0, @12, KC0[CB0:0-32], KC1[] 2049; EG-NEXT: TEX 1 @8 2050; EG-NEXT: ALU 39, @13, KC0[CB0:0-32], KC1[] 2051; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T18.XYZW, T12.X, 0 2052; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T11.X, 0 2053; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T16.XYZW, T14.X, 0 2054; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T15.XYZW, T13.X, 1 2055; EG-NEXT: CF_END 2056; EG-NEXT: Fetch clause starting at 8: 2057; EG-NEXT: VTX_READ_128 T12.XYZW, T11.X, 16, #1 2058; EG-NEXT: VTX_READ_128 T11.XYZW, T11.X, 0, #1 2059; EG-NEXT: ALU clause starting at 12: 2060; EG-NEXT: MOV * T11.X, KC0[2].Z, 2061; EG-NEXT: ALU clause starting at 13: 2062; EG-NEXT: LSHR T13.X, KC0[2].Y, literal.x, 2063; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2064; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2065; EG-NEXT: LSHR T14.X, PV.W, literal.x, 2066; EG-NEXT: BFE_INT * T15.Z, T11.Y, 0.0, literal.y, 2067; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2068; EG-NEXT: BFE_INT T15.X, T11.X, 0.0, literal.x, 2069; EG-NEXT: LSHR T0.Y, T12.W, literal.x, 2070; EG-NEXT: BFE_INT T16.Z, T11.W, 0.0, literal.x, BS:VEC_120/SCL_212 2071; EG-NEXT: LSHR T0.W, T12.Y, literal.x, 2072; EG-NEXT: LSHR * T1.W, T11.Y, literal.x, 2073; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2074; EG-NEXT: BFE_INT T16.X, T11.Z, 0.0, literal.x, 2075; EG-NEXT: LSHR T1.Y, T11.W, literal.x, 2076; EG-NEXT: BFE_INT T17.Z, T12.Y, 0.0, literal.x, 2077; EG-NEXT: BFE_INT T15.W, PS, 0.0, literal.x, 2078; EG-NEXT: LSHR * T1.W, T11.X, literal.x, 2079; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2080; EG-NEXT: BFE_INT T17.X, T12.X, 0.0, literal.x, 2081; EG-NEXT: BFE_INT T15.Y, PS, 0.0, literal.x, 2082; EG-NEXT: BFE_INT T18.Z, T12.W, 0.0, literal.x, 2083; EG-NEXT: BFE_INT T16.W, PV.Y, 0.0, literal.x, 2084; EG-NEXT: LSHR * T1.W, T11.Z, literal.x, 2085; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2086; EG-NEXT: BFE_INT T18.X, T12.Z, 0.0, literal.x, 2087; EG-NEXT: BFE_INT T16.Y, PS, 0.0, literal.x, 2088; EG-NEXT: LSHR T0.Z, T12.X, literal.x, 2089; EG-NEXT: BFE_INT T17.W, T0.W, 0.0, literal.x, 2090; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2091; EG-NEXT: 16(2.242078e-44), 32(4.484155e-44) 2092; EG-NEXT: LSHR T11.X, PS, literal.x, 2093; EG-NEXT: BFE_INT T17.Y, PV.Z, 0.0, literal.y, 2094; EG-NEXT: LSHR T0.Z, T12.Z, literal.y, 2095; EG-NEXT: BFE_INT T18.W, T0.Y, 0.0, literal.y, 2096; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 2097; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2098; EG-NEXT: 48(6.726233e-44), 0(0.000000e+00) 2099; EG-NEXT: LSHR T12.X, PS, literal.x, 2100; EG-NEXT: BFE_INT * T18.Y, PV.Z, 0.0, literal.y, 2101; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2102 %load = load <16 x i16>, <16 x i16> addrspace(4)* %in 2103 %ext = sext <16 x i16> %load to <16 x i32> 2104 store <16 x i32> %ext, <16 x i32> addrspace(1)* %out 2105 ret void 2106} 2107 2108define amdgpu_kernel void @constant_zextload_v32i16_to_v32i32(<32 x i32> addrspace(1)* %out, <32 x i16> addrspace(4)* %in) #0 { 2109; GCN-NOHSA-SI-LABEL: constant_zextload_v32i16_to_v32i32: 2110; GCN-NOHSA-SI: ; %bb.0: 2111; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[16:19], s[0:1], 0x9 2112; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 2113; GCN-NOHSA-SI-NEXT: s_load_dwordx16 s[0:15], s[18:19], 0x0 2114; GCN-NOHSA-SI-NEXT: s_mov_b32 s18, 0xffff 2115; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 2116; GCN-NOHSA-SI-NEXT: s_lshr_b32 s19, s1, 16 2117; GCN-NOHSA-SI-NEXT: s_lshr_b32 s20, s0, 16 2118; GCN-NOHSA-SI-NEXT: s_lshr_b32 s21, s3, 16 2119; GCN-NOHSA-SI-NEXT: s_lshr_b32 s22, s2, 16 2120; GCN-NOHSA-SI-NEXT: s_lshr_b32 s23, s5, 16 2121; GCN-NOHSA-SI-NEXT: s_lshr_b32 s24, s4, 16 2122; GCN-NOHSA-SI-NEXT: s_lshr_b32 s25, s7, 16 2123; GCN-NOHSA-SI-NEXT: s_lshr_b32 s26, s6, 16 2124; GCN-NOHSA-SI-NEXT: s_and_b32 s27, s1, s18 2125; GCN-NOHSA-SI-NEXT: s_and_b32 s28, s0, s18 2126; GCN-NOHSA-SI-NEXT: s_and_b32 s29, s3, s18 2127; GCN-NOHSA-SI-NEXT: s_and_b32 s30, s2, s18 2128; GCN-NOHSA-SI-NEXT: s_and_b32 s5, s5, s18 2129; GCN-NOHSA-SI-NEXT: s_and_b32 s4, s4, s18 2130; GCN-NOHSA-SI-NEXT: s_and_b32 s7, s7, s18 2131; GCN-NOHSA-SI-NEXT: s_and_b32 s6, s6, s18 2132; GCN-NOHSA-SI-NEXT: s_and_b32 s31, s9, s18 2133; GCN-NOHSA-SI-NEXT: s_and_b32 s33, s8, s18 2134; GCN-NOHSA-SI-NEXT: s_and_b32 s34, s11, s18 2135; GCN-NOHSA-SI-NEXT: s_and_b32 s35, s10, s18 2136; GCN-NOHSA-SI-NEXT: s_and_b32 s36, s13, s18 2137; GCN-NOHSA-SI-NEXT: s_and_b32 s37, s12, s18 2138; GCN-NOHSA-SI-NEXT: s_and_b32 s38, s15, s18 2139; GCN-NOHSA-SI-NEXT: s_and_b32 s18, s14, s18 2140; GCN-NOHSA-SI-NEXT: s_lshr_b32 s9, s9, 16 2141; GCN-NOHSA-SI-NEXT: s_lshr_b32 s8, s8, 16 2142; GCN-NOHSA-SI-NEXT: s_lshr_b32 s11, s11, 16 2143; GCN-NOHSA-SI-NEXT: s_lshr_b32 s10, s10, 16 2144; GCN-NOHSA-SI-NEXT: s_lshr_b32 s13, s13, 16 2145; GCN-NOHSA-SI-NEXT: s_lshr_b32 s12, s12, 16 2146; GCN-NOHSA-SI-NEXT: s_lshr_b32 s15, s15, 16 2147; GCN-NOHSA-SI-NEXT: s_lshr_b32 s14, s14, 16 2148; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 2149; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 2150; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s16 2151; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s17 2152; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s18 2153; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s14 2154; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s38 2155; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s15 2156; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112 2157; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 2158; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s37 2159; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s12 2160; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s36 2161; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s13 2162; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96 2163; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 2164; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s35 2165; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s10 2166; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s34 2167; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s11 2168; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80 2169; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 2170; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s33 2171; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s8 2172; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s31 2173; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s9 2174; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64 2175; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 2176; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s6 2177; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s26 2178; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s7 2179; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s25 2180; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 2181; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 2182; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s4 2183; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s24 2184; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s5 2185; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s23 2186; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 2187; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 2188; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s30 2189; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s22 2190; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s29 2191; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s21 2192; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 2193; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 2194; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s28 2195; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s20 2196; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s27 2197; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s19 2198; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 2199; GCN-NOHSA-SI-NEXT: s_endpgm 2200; 2201; GCN-HSA-LABEL: constant_zextload_v32i16_to_v32i32: 2202; GCN-HSA: ; %bb.0: 2203; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 2204; GCN-HSA-NEXT: s_mov_b32 s20, 0xffff 2205; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 2206; GCN-HSA-NEXT: s_load_dwordx16 s[4:19], s[2:3], 0x0 2207; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 2208; GCN-HSA-NEXT: s_and_b32 s21, s5, s20 2209; GCN-HSA-NEXT: s_and_b32 s22, s4, s20 2210; GCN-HSA-NEXT: s_and_b32 s23, s7, s20 2211; GCN-HSA-NEXT: s_and_b32 s24, s6, s20 2212; GCN-HSA-NEXT: s_and_b32 s25, s9, s20 2213; GCN-HSA-NEXT: s_and_b32 s26, s8, s20 2214; GCN-HSA-NEXT: s_and_b32 s27, s11, s20 2215; GCN-HSA-NEXT: s_and_b32 s28, s10, s20 2216; GCN-HSA-NEXT: s_and_b32 s29, s13, s20 2217; GCN-HSA-NEXT: s_and_b32 s30, s12, s20 2218; GCN-HSA-NEXT: s_and_b32 s31, s15, s20 2219; GCN-HSA-NEXT: s_and_b32 s33, s14, s20 2220; GCN-HSA-NEXT: s_and_b32 s34, s17, s20 2221; GCN-HSA-NEXT: s_and_b32 s35, s16, s20 2222; GCN-HSA-NEXT: s_and_b32 s36, s19, s20 2223; GCN-HSA-NEXT: s_and_b32 s20, s18, s20 2224; GCN-HSA-NEXT: s_lshr_b32 s5, s5, 16 2225; GCN-HSA-NEXT: s_lshr_b32 s4, s4, 16 2226; GCN-HSA-NEXT: s_lshr_b32 s7, s7, 16 2227; GCN-HSA-NEXT: s_lshr_b32 s6, s6, 16 2228; GCN-HSA-NEXT: s_lshr_b32 s9, s9, 16 2229; GCN-HSA-NEXT: s_lshr_b32 s8, s8, 16 2230; GCN-HSA-NEXT: s_lshr_b32 s11, s11, 16 2231; GCN-HSA-NEXT: s_lshr_b32 s10, s10, 16 2232; GCN-HSA-NEXT: s_lshr_b32 s13, s13, 16 2233; GCN-HSA-NEXT: s_lshr_b32 s12, s12, 16 2234; GCN-HSA-NEXT: s_lshr_b32 s15, s15, 16 2235; GCN-HSA-NEXT: s_lshr_b32 s14, s14, 16 2236; GCN-HSA-NEXT: s_lshr_b32 s17, s17, 16 2237; GCN-HSA-NEXT: s_lshr_b32 s16, s16, 16 2238; GCN-HSA-NEXT: s_lshr_b32 s19, s19, 16 2239; GCN-HSA-NEXT: s_lshr_b32 s18, s18, 16 2240; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x70 2241; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2242; GCN-HSA-NEXT: v_mov_b32_e32 v9, s3 2243; GCN-HSA-NEXT: v_mov_b32_e32 v8, s2 2244; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x60 2245; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2246; GCN-HSA-NEXT: v_mov_b32_e32 v11, s3 2247; GCN-HSA-NEXT: v_mov_b32_e32 v10, s2 2248; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x50 2249; GCN-HSA-NEXT: v_mov_b32_e32 v0, s20 2250; GCN-HSA-NEXT: v_mov_b32_e32 v1, s18 2251; GCN-HSA-NEXT: v_mov_b32_e32 v2, s36 2252; GCN-HSA-NEXT: v_mov_b32_e32 v3, s19 2253; GCN-HSA-NEXT: v_mov_b32_e32 v4, s35 2254; GCN-HSA-NEXT: v_mov_b32_e32 v5, s16 2255; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2256; GCN-HSA-NEXT: v_mov_b32_e32 v6, s34 2257; GCN-HSA-NEXT: v_mov_b32_e32 v7, s17 2258; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[0:3] 2259; GCN-HSA-NEXT: flat_store_dwordx4 v[10:11], v[4:7] 2260; GCN-HSA-NEXT: v_mov_b32_e32 v0, s33 2261; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 2262; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 2263; GCN-HSA-NEXT: s_add_u32 s2, s0, 64 2264; GCN-HSA-NEXT: v_mov_b32_e32 v1, s14 2265; GCN-HSA-NEXT: v_mov_b32_e32 v2, s31 2266; GCN-HSA-NEXT: v_mov_b32_e32 v3, s15 2267; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2268; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 2269; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 2270; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 2271; GCN-HSA-NEXT: s_add_u32 s2, s0, 48 2272; GCN-HSA-NEXT: v_mov_b32_e32 v0, s30 2273; GCN-HSA-NEXT: v_mov_b32_e32 v1, s12 2274; GCN-HSA-NEXT: v_mov_b32_e32 v2, s29 2275; GCN-HSA-NEXT: v_mov_b32_e32 v3, s13 2276; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2277; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 2278; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 2279; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 2280; GCN-HSA-NEXT: s_add_u32 s2, s0, 32 2281; GCN-HSA-NEXT: v_mov_b32_e32 v0, s28 2282; GCN-HSA-NEXT: v_mov_b32_e32 v1, s10 2283; GCN-HSA-NEXT: v_mov_b32_e32 v2, s27 2284; GCN-HSA-NEXT: v_mov_b32_e32 v3, s11 2285; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2286; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 2287; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 2288; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 2289; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 2290; GCN-HSA-NEXT: v_mov_b32_e32 v0, s26 2291; GCN-HSA-NEXT: v_mov_b32_e32 v1, s8 2292; GCN-HSA-NEXT: v_mov_b32_e32 v2, s25 2293; GCN-HSA-NEXT: v_mov_b32_e32 v3, s9 2294; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2295; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 2296; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 2297; GCN-HSA-NEXT: v_mov_b32_e32 v0, s24 2298; GCN-HSA-NEXT: v_mov_b32_e32 v1, s6 2299; GCN-HSA-NEXT: v_mov_b32_e32 v2, s23 2300; GCN-HSA-NEXT: v_mov_b32_e32 v3, s7 2301; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 2302; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 2303; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 2304; GCN-HSA-NEXT: v_mov_b32_e32 v0, s22 2305; GCN-HSA-NEXT: v_mov_b32_e32 v1, s4 2306; GCN-HSA-NEXT: v_mov_b32_e32 v2, s21 2307; GCN-HSA-NEXT: v_mov_b32_e32 v3, s5 2308; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 2309; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 2310; GCN-HSA-NEXT: s_endpgm 2311; 2312; GCN-NOHSA-VI-LABEL: constant_zextload_v32i16_to_v32i32: 2313; GCN-NOHSA-VI: ; %bb.0: 2314; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 2315; GCN-NOHSA-VI-NEXT: s_mov_b32 s20, 0xffff 2316; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 2317; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 2318; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 2319; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 2320; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 2321; GCN-NOHSA-VI-NEXT: s_load_dwordx16 s[4:19], s[6:7], 0x0 2322; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 2323; GCN-NOHSA-VI-NEXT: s_lshr_b32 s36, s19, 16 2324; GCN-NOHSA-VI-NEXT: s_and_b32 s19, s19, s20 2325; GCN-NOHSA-VI-NEXT: s_lshr_b32 s37, s18, 16 2326; GCN-NOHSA-VI-NEXT: s_and_b32 s18, s18, s20 2327; GCN-NOHSA-VI-NEXT: s_lshr_b32 s34, s17, 16 2328; GCN-NOHSA-VI-NEXT: s_and_b32 s17, s17, s20 2329; GCN-NOHSA-VI-NEXT: s_lshr_b32 s35, s16, 16 2330; GCN-NOHSA-VI-NEXT: s_and_b32 s16, s16, s20 2331; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s18 2332; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s37 2333; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s19 2334; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s36 2335; GCN-NOHSA-VI-NEXT: s_lshr_b32 s31, s15, 16 2336; GCN-NOHSA-VI-NEXT: s_and_b32 s15, s15, s20 2337; GCN-NOHSA-VI-NEXT: s_lshr_b32 s33, s14, 16 2338; GCN-NOHSA-VI-NEXT: s_and_b32 s14, s14, s20 2339; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112 2340; GCN-NOHSA-VI-NEXT: s_lshr_b32 s29, s13, 16 2341; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s16 2342; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s35 2343; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s17 2344; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s34 2345; GCN-NOHSA-VI-NEXT: s_and_b32 s13, s13, s20 2346; GCN-NOHSA-VI-NEXT: s_lshr_b32 s30, s12, 16 2347; GCN-NOHSA-VI-NEXT: s_and_b32 s12, s12, s20 2348; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96 2349; GCN-NOHSA-VI-NEXT: s_lshr_b32 s27, s11, 16 2350; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s14 2351; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s33 2352; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s15 2353; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s31 2354; GCN-NOHSA-VI-NEXT: s_and_b32 s11, s11, s20 2355; GCN-NOHSA-VI-NEXT: s_lshr_b32 s28, s10, 16 2356; GCN-NOHSA-VI-NEXT: s_and_b32 s10, s10, s20 2357; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80 2358; GCN-NOHSA-VI-NEXT: s_lshr_b32 s25, s9, 16 2359; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s12 2360; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s30 2361; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s13 2362; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s29 2363; GCN-NOHSA-VI-NEXT: s_and_b32 s9, s9, s20 2364; GCN-NOHSA-VI-NEXT: s_lshr_b32 s26, s8, 16 2365; GCN-NOHSA-VI-NEXT: s_and_b32 s8, s8, s20 2366; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64 2367; GCN-NOHSA-VI-NEXT: s_lshr_b32 s23, s7, 16 2368; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s10 2369; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s28 2370; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s11 2371; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s27 2372; GCN-NOHSA-VI-NEXT: s_and_b32 s7, s7, s20 2373; GCN-NOHSA-VI-NEXT: s_lshr_b32 s24, s6, 16 2374; GCN-NOHSA-VI-NEXT: s_and_b32 s6, s6, s20 2375; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 2376; GCN-NOHSA-VI-NEXT: s_lshr_b32 s21, s5, 16 2377; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s8 2378; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s26 2379; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s9 2380; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s25 2381; GCN-NOHSA-VI-NEXT: s_and_b32 s5, s5, s20 2382; GCN-NOHSA-VI-NEXT: s_lshr_b32 s22, s4, 16 2383; GCN-NOHSA-VI-NEXT: s_and_b32 s4, s4, s20 2384; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 2385; GCN-NOHSA-VI-NEXT: s_nop 0 2386; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s6 2387; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s24 2388; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s7 2389; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s23 2390; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 2391; GCN-NOHSA-VI-NEXT: s_nop 0 2392; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s4 2393; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s22 2394; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s5 2395; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s21 2396; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 2397; GCN-NOHSA-VI-NEXT: s_endpgm 2398; 2399; EG-LABEL: constant_zextload_v32i16_to_v32i32: 2400; EG: ; %bb.0: 2401; EG-NEXT: ALU 0, @20, KC0[CB0:0-32], KC1[] 2402; EG-NEXT: TEX 3 @12 2403; EG-NEXT: ALU 71, @21, KC0[CB0:0-32], KC1[] 2404; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T33.XYZW, T34.X, 0 2405; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T31.XYZW, T21.X, 0 2406; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T30.XYZW, T32.X, 0 2407; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T28.XYZW, T22.X, 0 2408; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T27.XYZW, T29.X, 0 2409; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T19.X, 0 2410; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T26.X, 0 2411; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T20.X, 1 2412; EG-NEXT: CF_END 2413; EG-NEXT: Fetch clause starting at 12: 2414; EG-NEXT: VTX_READ_128 T20.XYZW, T19.X, 0, #1 2415; EG-NEXT: VTX_READ_128 T21.XYZW, T19.X, 48, #1 2416; EG-NEXT: VTX_READ_128 T22.XYZW, T19.X, 32, #1 2417; EG-NEXT: VTX_READ_128 T19.XYZW, T19.X, 16, #1 2418; EG-NEXT: ALU clause starting at 20: 2419; EG-NEXT: MOV * T19.X, KC0[2].Z, 2420; EG-NEXT: ALU clause starting at 21: 2421; EG-NEXT: LSHR * T23.W, T20.Y, literal.x, 2422; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2423; EG-NEXT: AND_INT * T23.Z, T20.Y, literal.x, 2424; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2425; EG-NEXT: LSHR T23.Y, T20.X, literal.x, 2426; EG-NEXT: LSHR * T24.W, T20.W, literal.x, 2427; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2428; EG-NEXT: AND_INT T23.X, T20.X, literal.x, 2429; EG-NEXT: AND_INT T24.Z, T20.W, literal.x, 2430; EG-NEXT: LSHR * T20.X, KC0[2].Y, literal.y, 2431; EG-NEXT: 65535(9.183409e-41), 2(2.802597e-45) 2432; EG-NEXT: LSHR T24.Y, T20.Z, literal.x, 2433; EG-NEXT: LSHR * T25.W, T19.Y, literal.x, 2434; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2435; EG-NEXT: AND_INT T24.X, T20.Z, literal.x, 2436; EG-NEXT: AND_INT T25.Z, T19.Y, literal.x, 2437; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2438; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 2439; EG-NEXT: LSHR T26.X, PV.W, literal.x, 2440; EG-NEXT: LSHR T25.Y, T19.X, literal.y, 2441; EG-NEXT: LSHR T27.W, T19.W, literal.y, 2442; EG-NEXT: AND_INT * T25.X, T19.X, literal.z, 2443; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2444; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2445; EG-NEXT: AND_INT T27.Z, T19.W, literal.x, 2446; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2447; EG-NEXT: 65535(9.183409e-41), 32(4.484155e-44) 2448; EG-NEXT: LSHR T19.X, PV.W, literal.x, 2449; EG-NEXT: LSHR T27.Y, T19.Z, literal.y, 2450; EG-NEXT: LSHR T28.W, T22.Y, literal.y, 2451; EG-NEXT: AND_INT * T27.X, T19.Z, literal.z, 2452; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2453; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2454; EG-NEXT: AND_INT T28.Z, T22.Y, literal.x, 2455; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2456; EG-NEXT: 65535(9.183409e-41), 48(6.726233e-44) 2457; EG-NEXT: LSHR T29.X, PV.W, literal.x, 2458; EG-NEXT: LSHR T28.Y, T22.X, literal.y, 2459; EG-NEXT: LSHR T30.W, T22.W, literal.y, 2460; EG-NEXT: AND_INT * T28.X, T22.X, literal.z, 2461; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2462; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2463; EG-NEXT: AND_INT T30.Z, T22.W, literal.x, 2464; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2465; EG-NEXT: 65535(9.183409e-41), 64(8.968310e-44) 2466; EG-NEXT: LSHR T22.X, PV.W, literal.x, 2467; EG-NEXT: LSHR T30.Y, T22.Z, literal.y, 2468; EG-NEXT: LSHR T31.W, T21.Y, literal.y, 2469; EG-NEXT: AND_INT * T30.X, T22.Z, literal.z, 2470; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2471; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2472; EG-NEXT: AND_INT T31.Z, T21.Y, literal.x, 2473; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2474; EG-NEXT: 65535(9.183409e-41), 80(1.121039e-43) 2475; EG-NEXT: LSHR T32.X, PV.W, literal.x, 2476; EG-NEXT: LSHR T31.Y, T21.X, literal.y, 2477; EG-NEXT: LSHR T33.W, T21.W, literal.y, 2478; EG-NEXT: AND_INT * T31.X, T21.X, literal.z, 2479; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2480; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2481; EG-NEXT: AND_INT T33.Z, T21.W, literal.x, 2482; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2483; EG-NEXT: 65535(9.183409e-41), 96(1.345247e-43) 2484; EG-NEXT: LSHR T21.X, PV.W, literal.x, 2485; EG-NEXT: LSHR T33.Y, T21.Z, literal.y, 2486; EG-NEXT: AND_INT * T33.X, T21.Z, literal.z, 2487; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2488; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2489; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 2490; EG-NEXT: 112(1.569454e-43), 0(0.000000e+00) 2491; EG-NEXT: LSHR * T34.X, PV.W, literal.x, 2492; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 2493 %load = load <32 x i16>, <32 x i16> addrspace(4)* %in 2494 %ext = zext <32 x i16> %load to <32 x i32> 2495 store <32 x i32> %ext, <32 x i32> addrspace(1)* %out 2496 ret void 2497} 2498 2499define amdgpu_kernel void @constant_sextload_v32i16_to_v32i32(<32 x i32> addrspace(1)* %out, <32 x i16> addrspace(4)* %in) #0 { 2500; GCN-NOHSA-SI-LABEL: constant_sextload_v32i16_to_v32i32: 2501; GCN-NOHSA-SI: ; %bb.0: 2502; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[16:19], s[0:1], 0x9 2503; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 2504; GCN-NOHSA-SI-NEXT: s_load_dwordx16 s[0:15], s[18:19], 0x0 2505; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 2506; GCN-NOHSA-SI-NEXT: s_ashr_i32 s18, s1, 16 2507; GCN-NOHSA-SI-NEXT: s_ashr_i32 s19, s0, 16 2508; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s20, s1 2509; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s21, s0 2510; GCN-NOHSA-SI-NEXT: s_ashr_i32 s22, s3, 16 2511; GCN-NOHSA-SI-NEXT: s_ashr_i32 s23, s2, 16 2512; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s24, s3 2513; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s25, s2 2514; GCN-NOHSA-SI-NEXT: s_ashr_i32 s26, s5, 16 2515; GCN-NOHSA-SI-NEXT: s_ashr_i32 s27, s4, 16 2516; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s5, s5 2517; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s4, s4 2518; GCN-NOHSA-SI-NEXT: s_ashr_i32 s28, s7, 16 2519; GCN-NOHSA-SI-NEXT: s_ashr_i32 s29, s6, 16 2520; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s7, s7 2521; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s6, s6 2522; GCN-NOHSA-SI-NEXT: s_ashr_i32 s30, s9, 16 2523; GCN-NOHSA-SI-NEXT: s_ashr_i32 s31, s8, 16 2524; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s9, s9 2525; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s8, s8 2526; GCN-NOHSA-SI-NEXT: s_ashr_i32 s33, s11, 16 2527; GCN-NOHSA-SI-NEXT: s_ashr_i32 s34, s10, 16 2528; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s11, s11 2529; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s10, s10 2530; GCN-NOHSA-SI-NEXT: s_ashr_i32 s35, s13, 16 2531; GCN-NOHSA-SI-NEXT: s_ashr_i32 s36, s12, 16 2532; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s13, s13 2533; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s12, s12 2534; GCN-NOHSA-SI-NEXT: s_ashr_i32 s37, s15, 16 2535; GCN-NOHSA-SI-NEXT: s_ashr_i32 s38, s14, 16 2536; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s15, s15 2537; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s14, s14 2538; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 2539; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 2540; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s16 2541; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s17 2542; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s14 2543; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s38 2544; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s15 2545; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s37 2546; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112 2547; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 2548; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s12 2549; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s36 2550; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s13 2551; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s35 2552; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96 2553; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 2554; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s10 2555; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s34 2556; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s11 2557; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s33 2558; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80 2559; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 2560; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s8 2561; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s31 2562; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s9 2563; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s30 2564; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64 2565; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 2566; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s6 2567; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s29 2568; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s7 2569; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s28 2570; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 2571; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 2572; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s4 2573; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s27 2574; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s5 2575; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s26 2576; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 2577; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 2578; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s25 2579; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s23 2580; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s24 2581; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s22 2582; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 2583; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 2584; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s21 2585; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s19 2586; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s20 2587; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s18 2588; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 2589; GCN-NOHSA-SI-NEXT: s_endpgm 2590; 2591; GCN-HSA-LABEL: constant_sextload_v32i16_to_v32i32: 2592; GCN-HSA: ; %bb.0: 2593; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 2594; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 2595; GCN-HSA-NEXT: s_load_dwordx16 s[4:19], s[2:3], 0x0 2596; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 2597; GCN-HSA-NEXT: s_ashr_i32 s20, s5, 16 2598; GCN-HSA-NEXT: s_ashr_i32 s21, s4, 16 2599; GCN-HSA-NEXT: s_ashr_i32 s22, s7, 16 2600; GCN-HSA-NEXT: s_ashr_i32 s23, s6, 16 2601; GCN-HSA-NEXT: s_ashr_i32 s24, s9, 16 2602; GCN-HSA-NEXT: s_ashr_i32 s25, s8, 16 2603; GCN-HSA-NEXT: s_ashr_i32 s26, s11, 16 2604; GCN-HSA-NEXT: s_ashr_i32 s27, s10, 16 2605; GCN-HSA-NEXT: s_ashr_i32 s28, s13, 16 2606; GCN-HSA-NEXT: s_ashr_i32 s29, s12, 16 2607; GCN-HSA-NEXT: s_ashr_i32 s30, s15, 16 2608; GCN-HSA-NEXT: s_ashr_i32 s31, s14, 16 2609; GCN-HSA-NEXT: s_ashr_i32 s33, s17, 16 2610; GCN-HSA-NEXT: s_ashr_i32 s34, s16, 16 2611; GCN-HSA-NEXT: s_ashr_i32 s35, s19, 16 2612; GCN-HSA-NEXT: s_ashr_i32 s36, s18, 16 2613; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x70 2614; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2615; GCN-HSA-NEXT: v_mov_b32_e32 v9, s3 2616; GCN-HSA-NEXT: v_mov_b32_e32 v8, s2 2617; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x60 2618; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2619; GCN-HSA-NEXT: v_mov_b32_e32 v11, s3 2620; GCN-HSA-NEXT: s_sext_i32_i16 s16, s16 2621; GCN-HSA-NEXT: s_sext_i32_i16 s19, s19 2622; GCN-HSA-NEXT: s_sext_i32_i16 s18, s18 2623; GCN-HSA-NEXT: v_mov_b32_e32 v10, s2 2624; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x50 2625; GCN-HSA-NEXT: s_sext_i32_i16 s17, s17 2626; GCN-HSA-NEXT: v_mov_b32_e32 v0, s18 2627; GCN-HSA-NEXT: v_mov_b32_e32 v1, s36 2628; GCN-HSA-NEXT: v_mov_b32_e32 v2, s19 2629; GCN-HSA-NEXT: v_mov_b32_e32 v3, s35 2630; GCN-HSA-NEXT: v_mov_b32_e32 v4, s16 2631; GCN-HSA-NEXT: v_mov_b32_e32 v5, s34 2632; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2633; GCN-HSA-NEXT: v_mov_b32_e32 v6, s17 2634; GCN-HSA-NEXT: v_mov_b32_e32 v7, s33 2635; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[0:3] 2636; GCN-HSA-NEXT: flat_store_dwordx4 v[10:11], v[4:7] 2637; GCN-HSA-NEXT: s_sext_i32_i16 s15, s15 2638; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 2639; GCN-HSA-NEXT: s_sext_i32_i16 s14, s14 2640; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 2641; GCN-HSA-NEXT: s_add_u32 s2, s0, 64 2642; GCN-HSA-NEXT: v_mov_b32_e32 v0, s14 2643; GCN-HSA-NEXT: v_mov_b32_e32 v1, s31 2644; GCN-HSA-NEXT: v_mov_b32_e32 v2, s15 2645; GCN-HSA-NEXT: v_mov_b32_e32 v3, s30 2646; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2647; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 2648; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 2649; GCN-HSA-NEXT: s_sext_i32_i16 s13, s13 2650; GCN-HSA-NEXT: s_sext_i32_i16 s12, s12 2651; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 2652; GCN-HSA-NEXT: s_add_u32 s2, s0, 48 2653; GCN-HSA-NEXT: v_mov_b32_e32 v0, s12 2654; GCN-HSA-NEXT: v_mov_b32_e32 v1, s29 2655; GCN-HSA-NEXT: v_mov_b32_e32 v2, s13 2656; GCN-HSA-NEXT: v_mov_b32_e32 v3, s28 2657; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2658; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 2659; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 2660; GCN-HSA-NEXT: s_sext_i32_i16 s11, s11 2661; GCN-HSA-NEXT: s_sext_i32_i16 s10, s10 2662; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 2663; GCN-HSA-NEXT: s_add_u32 s2, s0, 32 2664; GCN-HSA-NEXT: v_mov_b32_e32 v0, s10 2665; GCN-HSA-NEXT: v_mov_b32_e32 v1, s27 2666; GCN-HSA-NEXT: v_mov_b32_e32 v2, s11 2667; GCN-HSA-NEXT: v_mov_b32_e32 v3, s26 2668; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2669; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 2670; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 2671; GCN-HSA-NEXT: s_sext_i32_i16 s9, s9 2672; GCN-HSA-NEXT: s_sext_i32_i16 s8, s8 2673; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 2674; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 2675; GCN-HSA-NEXT: v_mov_b32_e32 v0, s8 2676; GCN-HSA-NEXT: v_mov_b32_e32 v1, s25 2677; GCN-HSA-NEXT: v_mov_b32_e32 v2, s9 2678; GCN-HSA-NEXT: v_mov_b32_e32 v3, s24 2679; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2680; GCN-HSA-NEXT: s_sext_i32_i16 s7, s7 2681; GCN-HSA-NEXT: s_sext_i32_i16 s6, s6 2682; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 2683; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 2684; GCN-HSA-NEXT: v_mov_b32_e32 v0, s6 2685; GCN-HSA-NEXT: v_mov_b32_e32 v1, s23 2686; GCN-HSA-NEXT: v_mov_b32_e32 v2, s7 2687; GCN-HSA-NEXT: v_mov_b32_e32 v3, s22 2688; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 2689; GCN-HSA-NEXT: s_sext_i32_i16 s5, s5 2690; GCN-HSA-NEXT: s_sext_i32_i16 s4, s4 2691; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 2692; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 2693; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 2694; GCN-HSA-NEXT: v_mov_b32_e32 v1, s21 2695; GCN-HSA-NEXT: v_mov_b32_e32 v2, s5 2696; GCN-HSA-NEXT: v_mov_b32_e32 v3, s20 2697; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 2698; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 2699; GCN-HSA-NEXT: s_endpgm 2700; 2701; GCN-NOHSA-VI-LABEL: constant_sextload_v32i16_to_v32i32: 2702; GCN-NOHSA-VI: ; %bb.0: 2703; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 2704; GCN-NOHSA-VI-NEXT: s_mov_b32 s19, 0xf000 2705; GCN-NOHSA-VI-NEXT: s_mov_b32 s18, -1 2706; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 2707; GCN-NOHSA-VI-NEXT: s_mov_b32 s16, s0 2708; GCN-NOHSA-VI-NEXT: s_mov_b32 s17, s1 2709; GCN-NOHSA-VI-NEXT: s_load_dwordx16 s[0:15], s[2:3], 0x0 2710; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 2711; GCN-NOHSA-VI-NEXT: s_ashr_i32 s35, s15, 16 2712; GCN-NOHSA-VI-NEXT: s_ashr_i32 s36, s14, 16 2713; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s15, s15 2714; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s14, s14 2715; GCN-NOHSA-VI-NEXT: s_ashr_i32 s33, s13, 16 2716; GCN-NOHSA-VI-NEXT: s_ashr_i32 s34, s12, 16 2717; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s13, s13 2718; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s12, s12 2719; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s14 2720; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s36 2721; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s15 2722; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s35 2723; GCN-NOHSA-VI-NEXT: s_ashr_i32 s30, s11, 16 2724; GCN-NOHSA-VI-NEXT: s_ashr_i32 s31, s10, 16 2725; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s11, s11 2726; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s10, s10 2727; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:112 2728; GCN-NOHSA-VI-NEXT: s_ashr_i32 s28, s9, 16 2729; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s12 2730; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s34 2731; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s13 2732; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s33 2733; GCN-NOHSA-VI-NEXT: s_ashr_i32 s29, s8, 16 2734; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s9, s9 2735; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s8, s8 2736; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:96 2737; GCN-NOHSA-VI-NEXT: s_ashr_i32 s26, s7, 16 2738; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s10 2739; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s31 2740; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s11 2741; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s30 2742; GCN-NOHSA-VI-NEXT: s_ashr_i32 s27, s6, 16 2743; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s7, s7 2744; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s6, s6 2745; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:80 2746; GCN-NOHSA-VI-NEXT: s_ashr_i32 s24, s5, 16 2747; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s8 2748; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s29 2749; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s9 2750; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s28 2751; GCN-NOHSA-VI-NEXT: s_ashr_i32 s25, s4, 16 2752; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s5, s5 2753; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s4, s4 2754; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:64 2755; GCN-NOHSA-VI-NEXT: s_ashr_i32 s22, s3, 16 2756; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s6 2757; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s27 2758; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s7 2759; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s26 2760; GCN-NOHSA-VI-NEXT: s_ashr_i32 s23, s2, 16 2761; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s3, s3 2762; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s2, s2 2763; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:48 2764; GCN-NOHSA-VI-NEXT: s_ashr_i32 s20, s1, 16 2765; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s4 2766; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s25 2767; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s5 2768; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s24 2769; GCN-NOHSA-VI-NEXT: s_ashr_i32 s21, s0, 16 2770; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s1, s1 2771; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s0, s0 2772; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:32 2773; GCN-NOHSA-VI-NEXT: s_nop 0 2774; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s2 2775; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s23 2776; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s3 2777; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s22 2778; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:16 2779; GCN-NOHSA-VI-NEXT: s_nop 0 2780; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s0 2781; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s21 2782; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s1 2783; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s20 2784; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[16:19], 0 2785; GCN-NOHSA-VI-NEXT: s_endpgm 2786; 2787; EG-LABEL: constant_sextload_v32i16_to_v32i32: 2788; EG: ; %bb.0: 2789; EG-NEXT: ALU 8, @20, KC0[CB0:0-32], KC1[] 2790; EG-NEXT: TEX 3 @12 2791; EG-NEXT: ALU 73, @29, KC0[CB0:0-32], KC1[] 2792; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T34.XYZW, T24.X, 0 2793; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T22.X, 0 2794; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T33.XYZW, T28.X, 0 2795; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T27.X, 0 2796; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T32.XYZW, T26.X, 0 2797; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T31.XYZW, T21.X, 0 2798; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T30.XYZW, T20.X, 0 2799; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T29.XYZW, T19.X, 1 2800; EG-NEXT: CF_END 2801; EG-NEXT: Fetch clause starting at 12: 2802; EG-NEXT: VTX_READ_128 T23.XYZW, T22.X, 16, #1 2803; EG-NEXT: VTX_READ_128 T24.XYZW, T22.X, 32, #1 2804; EG-NEXT: VTX_READ_128 T25.XYZW, T22.X, 0, #1 2805; EG-NEXT: VTX_READ_128 T22.XYZW, T22.X, 48, #1 2806; EG-NEXT: ALU clause starting at 20: 2807; EG-NEXT: LSHR T19.X, KC0[2].Y, literal.x, 2808; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2809; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2810; EG-NEXT: LSHR T20.X, PV.W, literal.x, 2811; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2812; EG-NEXT: 2(2.802597e-45), 32(4.484155e-44) 2813; EG-NEXT: LSHR T21.X, PV.W, literal.x, 2814; EG-NEXT: MOV * T22.X, KC0[2].Z, 2815; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 2816; EG-NEXT: ALU clause starting at 29: 2817; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 2818; EG-NEXT: 48(6.726233e-44), 0(0.000000e+00) 2819; EG-NEXT: LSHR T26.X, PV.W, literal.x, 2820; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2821; EG-NEXT: 2(2.802597e-45), 64(8.968310e-44) 2822; EG-NEXT: LSHR T27.X, PV.W, literal.x, 2823; EG-NEXT: LSHR T0.W, T22.W, literal.y, 2824; EG-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 2825; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2826; EG-NEXT: 80(1.121039e-43), 0(0.000000e+00) 2827; EG-NEXT: LSHR T28.X, PS, literal.x, 2828; EG-NEXT: LSHR T0.Y, T22.Y, literal.y, 2829; EG-NEXT: BFE_INT T29.Z, T25.Y, 0.0, literal.y, BS:VEC_120/SCL_212 2830; EG-NEXT: LSHR T1.W, T24.W, literal.y, 2831; EG-NEXT: LSHR * T2.W, T24.Y, literal.y, 2832; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2833; EG-NEXT: BFE_INT T29.X, T25.X, 0.0, literal.x, 2834; EG-NEXT: LSHR T1.Y, T23.W, literal.x, 2835; EG-NEXT: BFE_INT T30.Z, T25.W, 0.0, literal.x, BS:VEC_120/SCL_212 2836; EG-NEXT: LSHR T3.W, T23.Y, literal.x, 2837; EG-NEXT: LSHR * T4.W, T25.Y, literal.x, 2838; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2839; EG-NEXT: BFE_INT T30.X, T25.Z, 0.0, literal.x, 2840; EG-NEXT: LSHR T2.Y, T25.W, literal.x, 2841; EG-NEXT: BFE_INT T31.Z, T23.Y, 0.0, literal.x, 2842; EG-NEXT: BFE_INT T29.W, PS, 0.0, literal.x, 2843; EG-NEXT: LSHR * T4.W, T25.X, literal.x, 2844; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2845; EG-NEXT: BFE_INT T31.X, T23.X, 0.0, literal.x, 2846; EG-NEXT: BFE_INT T29.Y, PS, 0.0, literal.x, 2847; EG-NEXT: BFE_INT T32.Z, T23.W, 0.0, literal.x, 2848; EG-NEXT: BFE_INT T30.W, PV.Y, 0.0, literal.x, 2849; EG-NEXT: LSHR * T4.W, T25.Z, literal.x, 2850; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2851; EG-NEXT: BFE_INT T32.X, T23.Z, 0.0, literal.x, 2852; EG-NEXT: BFE_INT T30.Y, PS, 0.0, literal.x, 2853; EG-NEXT: BFE_INT T25.Z, T24.Y, 0.0, literal.x, 2854; EG-NEXT: BFE_INT T31.W, T3.W, 0.0, literal.x, 2855; EG-NEXT: LSHR * T3.W, T23.X, literal.x, 2856; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2857; EG-NEXT: BFE_INT T25.X, T24.X, 0.0, literal.x, 2858; EG-NEXT: BFE_INT T31.Y, PS, 0.0, literal.x, 2859; EG-NEXT: BFE_INT T33.Z, T24.W, 0.0, literal.x, 2860; EG-NEXT: BFE_INT T32.W, T1.Y, 0.0, literal.x, 2861; EG-NEXT: LSHR * T3.W, T23.Z, literal.x, 2862; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2863; EG-NEXT: BFE_INT T33.X, T24.Z, 0.0, literal.x, 2864; EG-NEXT: BFE_INT T32.Y, PS, 0.0, literal.x, 2865; EG-NEXT: BFE_INT T23.Z, T22.Y, 0.0, literal.x, 2866; EG-NEXT: BFE_INT T25.W, T2.W, 0.0, literal.x, 2867; EG-NEXT: LSHR * T2.W, T24.X, literal.x, 2868; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2869; EG-NEXT: BFE_INT T23.X, T22.X, 0.0, literal.x, 2870; EG-NEXT: BFE_INT T25.Y, PS, 0.0, literal.x, 2871; EG-NEXT: BFE_INT T34.Z, T22.W, 0.0, literal.x, 2872; EG-NEXT: BFE_INT T33.W, T1.W, 0.0, literal.x, BS:VEC_120/SCL_212 2873; EG-NEXT: LSHR * T1.W, T24.Z, literal.x, 2874; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2875; EG-NEXT: BFE_INT T34.X, T22.Z, 0.0, literal.x, 2876; EG-NEXT: BFE_INT T33.Y, PS, 0.0, literal.x, 2877; EG-NEXT: LSHR T0.Z, T22.X, literal.x, 2878; EG-NEXT: BFE_INT T23.W, T0.Y, 0.0, literal.x, 2879; EG-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.y, 2880; EG-NEXT: 16(2.242078e-44), 96(1.345247e-43) 2881; EG-NEXT: LSHR T22.X, PS, literal.x, 2882; EG-NEXT: BFE_INT T23.Y, PV.Z, 0.0, literal.y, 2883; EG-NEXT: LSHR T0.Z, T22.Z, literal.y, 2884; EG-NEXT: BFE_INT T34.W, T0.W, 0.0, literal.y, 2885; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 2886; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2887; EG-NEXT: 112(1.569454e-43), 0(0.000000e+00) 2888; EG-NEXT: LSHR T24.X, PS, literal.x, 2889; EG-NEXT: BFE_INT * T34.Y, PV.Z, 0.0, literal.y, 2890; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2891 %load = load <32 x i16>, <32 x i16> addrspace(4)* %in 2892 %ext = sext <32 x i16> %load to <32 x i32> 2893 store <32 x i32> %ext, <32 x i32> addrspace(1)* %out 2894 ret void 2895} 2896 2897define amdgpu_kernel void @constant_zextload_v64i16_to_v64i32(<64 x i32> addrspace(1)* %out, <64 x i16> addrspace(4)* %in) #0 { 2898; GCN-NOHSA-SI-LABEL: constant_zextload_v64i16_to_v64i32: 2899; GCN-NOHSA-SI: ; %bb.0: 2900; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[16:19], s[0:1], 0x9 2901; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 2902; GCN-NOHSA-SI-NEXT: s_load_dwordx16 s[0:15], s[18:19], 0x0 2903; GCN-NOHSA-SI-NEXT: s_mov_b32 s20, 0xffff 2904; GCN-NOHSA-SI-NEXT: s_load_dwordx16 s[36:51], s[18:19], 0x10 2905; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 2906; GCN-NOHSA-SI-NEXT: s_lshr_b32 s18, s1, 16 2907; GCN-NOHSA-SI-NEXT: s_lshr_b32 s19, s0, 16 2908; GCN-NOHSA-SI-NEXT: s_lshr_b32 s21, s3, 16 2909; GCN-NOHSA-SI-NEXT: s_lshr_b32 s22, s2, 16 2910; GCN-NOHSA-SI-NEXT: s_lshr_b32 s23, s5, 16 2911; GCN-NOHSA-SI-NEXT: s_lshr_b32 s24, s4, 16 2912; GCN-NOHSA-SI-NEXT: s_lshr_b32 s25, s7, 16 2913; GCN-NOHSA-SI-NEXT: s_lshr_b32 s26, s6, 16 2914; GCN-NOHSA-SI-NEXT: s_lshr_b32 s27, s9, 16 2915; GCN-NOHSA-SI-NEXT: s_lshr_b32 s28, s8, 16 2916; GCN-NOHSA-SI-NEXT: s_lshr_b32 s29, s11, 16 2917; GCN-NOHSA-SI-NEXT: s_lshr_b32 s30, s10, 16 2918; GCN-NOHSA-SI-NEXT: s_lshr_b32 s31, s13, 16 2919; GCN-NOHSA-SI-NEXT: s_lshr_b32 s33, s12, 16 2920; GCN-NOHSA-SI-NEXT: s_lshr_b32 s34, s15, 16 2921; GCN-NOHSA-SI-NEXT: s_lshr_b32 s35, s14, 16 2922; GCN-NOHSA-SI-NEXT: s_and_b32 s52, s1, s20 2923; GCN-NOHSA-SI-NEXT: s_and_b32 s53, s0, s20 2924; GCN-NOHSA-SI-NEXT: s_and_b32 s54, s3, s20 2925; GCN-NOHSA-SI-NEXT: s_and_b32 s55, s2, s20 2926; GCN-NOHSA-SI-NEXT: s_and_b32 s5, s5, s20 2927; GCN-NOHSA-SI-NEXT: s_and_b32 s4, s4, s20 2928; GCN-NOHSA-SI-NEXT: s_and_b32 s7, s7, s20 2929; GCN-NOHSA-SI-NEXT: s_and_b32 s6, s6, s20 2930; GCN-NOHSA-SI-NEXT: s_and_b32 s9, s9, s20 2931; GCN-NOHSA-SI-NEXT: s_and_b32 s8, s8, s20 2932; GCN-NOHSA-SI-NEXT: s_and_b32 s11, s11, s20 2933; GCN-NOHSA-SI-NEXT: s_and_b32 s10, s10, s20 2934; GCN-NOHSA-SI-NEXT: s_and_b32 s13, s13, s20 2935; GCN-NOHSA-SI-NEXT: s_and_b32 s12, s12, s20 2936; GCN-NOHSA-SI-NEXT: s_and_b32 s15, s15, s20 2937; GCN-NOHSA-SI-NEXT: s_and_b32 s14, s14, s20 2938; GCN-NOHSA-SI-NEXT: s_and_b32 s56, s37, s20 2939; GCN-NOHSA-SI-NEXT: s_and_b32 s57, s36, s20 2940; GCN-NOHSA-SI-NEXT: s_and_b32 s58, s39, s20 2941; GCN-NOHSA-SI-NEXT: s_and_b32 s59, s38, s20 2942; GCN-NOHSA-SI-NEXT: s_and_b32 s60, s41, s20 2943; GCN-NOHSA-SI-NEXT: s_and_b32 s61, s40, s20 2944; GCN-NOHSA-SI-NEXT: s_and_b32 s62, s43, s20 2945; GCN-NOHSA-SI-NEXT: s_and_b32 s63, s42, s20 2946; GCN-NOHSA-SI-NEXT: s_and_b32 s64, s45, s20 2947; GCN-NOHSA-SI-NEXT: s_and_b32 s65, s44, s20 2948; GCN-NOHSA-SI-NEXT: s_and_b32 s66, s47, s20 2949; GCN-NOHSA-SI-NEXT: s_and_b32 s67, s46, s20 2950; GCN-NOHSA-SI-NEXT: s_and_b32 s68, s49, s20 2951; GCN-NOHSA-SI-NEXT: s_and_b32 s69, s48, s20 2952; GCN-NOHSA-SI-NEXT: s_and_b32 s70, s51, s20 2953; GCN-NOHSA-SI-NEXT: s_and_b32 s20, s50, s20 2954; GCN-NOHSA-SI-NEXT: s_lshr_b32 s37, s37, 16 2955; GCN-NOHSA-SI-NEXT: s_lshr_b32 s36, s36, 16 2956; GCN-NOHSA-SI-NEXT: s_lshr_b32 s39, s39, 16 2957; GCN-NOHSA-SI-NEXT: s_lshr_b32 s38, s38, 16 2958; GCN-NOHSA-SI-NEXT: s_lshr_b32 s41, s41, 16 2959; GCN-NOHSA-SI-NEXT: s_lshr_b32 s40, s40, 16 2960; GCN-NOHSA-SI-NEXT: s_lshr_b32 s42, s42, 16 2961; GCN-NOHSA-SI-NEXT: s_lshr_b32 s45, s45, 16 2962; GCN-NOHSA-SI-NEXT: s_lshr_b32 s44, s44, 16 2963; GCN-NOHSA-SI-NEXT: s_lshr_b32 s47, s47, 16 2964; GCN-NOHSA-SI-NEXT: s_lshr_b32 s46, s46, 16 2965; GCN-NOHSA-SI-NEXT: s_lshr_b32 s49, s49, 16 2966; GCN-NOHSA-SI-NEXT: s_lshr_b32 s48, s48, 16 2967; GCN-NOHSA-SI-NEXT: s_lshr_b32 s51, s51, 16 2968; GCN-NOHSA-SI-NEXT: s_lshr_b32 s50, s50, 16 2969; GCN-NOHSA-SI-NEXT: s_lshr_b32 s43, s43, 16 2970; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s16 2971; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s17 2972; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 2973; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 2974; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s20 2975; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s50 2976; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s70 2977; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s51 2978; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v4, s69 2979; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v5, s48 2980; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v6, s68 2981; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v7, s49 2982; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v8, s67 2983; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v9, s46 2984; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v10, s66 2985; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v11, s47 2986; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v12, s65 2987; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v13, s44 2988; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v14, s64 2989; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v15, s45 2990; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v16, s63 2991; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v17, s42 2992; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v18, s62 2993; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v20, s61 2994; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v19, s43 2995; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v21, s40 2996; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v22, s60 2997; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v23, s41 2998; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240 2999; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:224 3000; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:208 3001; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:192 3002; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:176 3003; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[20:23], off, s[0:3], 0 offset:160 3004; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(5) 3005; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s59 3006; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s38 3007; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s58 3008; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s39 3009; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:144 3010; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3011; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s57 3012; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s36 3013; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s56 3014; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s37 3015; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:128 3016; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3017; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s14 3018; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s35 3019; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s15 3020; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s34 3021; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112 3022; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3023; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s12 3024; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s33 3025; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s13 3026; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s31 3027; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96 3028; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3029; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s10 3030; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s30 3031; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s11 3032; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s29 3033; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80 3034; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3035; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s8 3036; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s28 3037; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s9 3038; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s27 3039; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64 3040; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3041; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s6 3042; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s26 3043; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s7 3044; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s25 3045; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 3046; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3047; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s4 3048; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s24 3049; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s5 3050; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s23 3051; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 3052; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3053; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s55 3054; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s22 3055; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s54 3056; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s21 3057; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 3058; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3059; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s53 3060; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s19 3061; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s52 3062; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s18 3063; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 3064; GCN-NOHSA-SI-NEXT: s_endpgm 3065; 3066; GCN-HSA-LABEL: constant_zextload_v64i16_to_v64i32: 3067; GCN-HSA: ; %bb.0: 3068; GCN-HSA-NEXT: s_load_dwordx4 s[16:19], s[4:5], 0x0 3069; GCN-HSA-NEXT: s_mov_b32 s53, 0xffff 3070; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 3071; GCN-HSA-NEXT: s_load_dwordx16 s[0:15], s[18:19], 0x0 3072; GCN-HSA-NEXT: s_load_dwordx16 s[36:51], s[18:19], 0x10 3073; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 3074; GCN-HSA-NEXT: s_lshr_b32 s20, s1, 16 3075; GCN-HSA-NEXT: s_lshr_b32 s21, s0, 16 3076; GCN-HSA-NEXT: s_lshr_b32 s22, s3, 16 3077; GCN-HSA-NEXT: s_lshr_b32 s23, s2, 16 3078; GCN-HSA-NEXT: s_lshr_b32 s24, s5, 16 3079; GCN-HSA-NEXT: s_lshr_b32 s25, s4, 16 3080; GCN-HSA-NEXT: s_lshr_b32 s26, s7, 16 3081; GCN-HSA-NEXT: s_lshr_b32 s27, s6, 16 3082; GCN-HSA-NEXT: s_lshr_b32 s28, s9, 16 3083; GCN-HSA-NEXT: s_lshr_b32 s29, s8, 16 3084; GCN-HSA-NEXT: s_lshr_b32 s30, s11, 16 3085; GCN-HSA-NEXT: s_lshr_b32 s31, s10, 16 3086; GCN-HSA-NEXT: s_lshr_b32 s33, s13, 16 3087; GCN-HSA-NEXT: s_lshr_b32 s34, s12, 16 3088; GCN-HSA-NEXT: s_lshr_b32 s35, s15, 16 3089; GCN-HSA-NEXT: s_lshr_b32 s52, s14, 16 3090; GCN-HSA-NEXT: s_and_b32 s1, s1, s53 3091; GCN-HSA-NEXT: s_and_b32 s0, s0, s53 3092; GCN-HSA-NEXT: s_and_b32 s3, s3, s53 3093; GCN-HSA-NEXT: s_and_b32 s2, s2, s53 3094; GCN-HSA-NEXT: s_and_b32 s5, s5, s53 3095; GCN-HSA-NEXT: s_and_b32 s4, s4, s53 3096; GCN-HSA-NEXT: s_and_b32 s54, s7, s53 3097; GCN-HSA-NEXT: s_and_b32 s55, s6, s53 3098; GCN-HSA-NEXT: s_and_b32 s9, s9, s53 3099; GCN-HSA-NEXT: s_and_b32 s8, s8, s53 3100; GCN-HSA-NEXT: s_and_b32 s11, s11, s53 3101; GCN-HSA-NEXT: s_and_b32 s10, s10, s53 3102; GCN-HSA-NEXT: s_and_b32 s13, s13, s53 3103; GCN-HSA-NEXT: s_and_b32 s12, s12, s53 3104; GCN-HSA-NEXT: s_and_b32 s15, s15, s53 3105; GCN-HSA-NEXT: s_and_b32 s14, s14, s53 3106; GCN-HSA-NEXT: s_and_b32 s18, s37, s53 3107; GCN-HSA-NEXT: s_and_b32 s19, s36, s53 3108; GCN-HSA-NEXT: s_and_b32 s56, s39, s53 3109; GCN-HSA-NEXT: s_and_b32 s57, s38, s53 3110; GCN-HSA-NEXT: s_and_b32 s58, s41, s53 3111; GCN-HSA-NEXT: s_and_b32 s59, s40, s53 3112; GCN-HSA-NEXT: s_and_b32 s60, s43, s53 3113; GCN-HSA-NEXT: s_and_b32 s61, s42, s53 3114; GCN-HSA-NEXT: s_and_b32 s62, s45, s53 3115; GCN-HSA-NEXT: s_and_b32 s63, s44, s53 3116; GCN-HSA-NEXT: s_and_b32 s64, s47, s53 3117; GCN-HSA-NEXT: s_and_b32 s65, s46, s53 3118; GCN-HSA-NEXT: s_and_b32 s66, s49, s53 3119; GCN-HSA-NEXT: s_and_b32 s67, s48, s53 3120; GCN-HSA-NEXT: s_and_b32 s68, s51, s53 3121; GCN-HSA-NEXT: s_and_b32 s53, s50, s53 3122; GCN-HSA-NEXT: s_lshr_b32 s37, s37, 16 3123; GCN-HSA-NEXT: s_lshr_b32 s36, s36, 16 3124; GCN-HSA-NEXT: s_lshr_b32 s39, s39, 16 3125; GCN-HSA-NEXT: s_lshr_b32 s38, s38, 16 3126; GCN-HSA-NEXT: s_lshr_b32 s41, s41, 16 3127; GCN-HSA-NEXT: s_lshr_b32 s40, s40, 16 3128; GCN-HSA-NEXT: s_lshr_b32 s43, s43, 16 3129; GCN-HSA-NEXT: s_lshr_b32 s42, s42, 16 3130; GCN-HSA-NEXT: s_lshr_b32 s45, s45, 16 3131; GCN-HSA-NEXT: s_lshr_b32 s44, s44, 16 3132; GCN-HSA-NEXT: s_lshr_b32 s47, s47, 16 3133; GCN-HSA-NEXT: s_lshr_b32 s46, s46, 16 3134; GCN-HSA-NEXT: s_lshr_b32 s49, s49, 16 3135; GCN-HSA-NEXT: s_lshr_b32 s48, s48, 16 3136; GCN-HSA-NEXT: s_lshr_b32 s51, s51, 16 3137; GCN-HSA-NEXT: s_lshr_b32 s50, s50, 16 3138; GCN-HSA-NEXT: s_add_u32 s6, s16, 0xf0 3139; GCN-HSA-NEXT: s_addc_u32 s7, s17, 0 3140; GCN-HSA-NEXT: v_mov_b32_e32 v22, s7 3141; GCN-HSA-NEXT: v_mov_b32_e32 v21, s6 3142; GCN-HSA-NEXT: s_add_u32 s6, s16, 0xe0 3143; GCN-HSA-NEXT: s_addc_u32 s7, s17, 0 3144; GCN-HSA-NEXT: v_mov_b32_e32 v25, s7 3145; GCN-HSA-NEXT: v_mov_b32_e32 v24, s6 3146; GCN-HSA-NEXT: s_add_u32 s6, s16, 0xd0 3147; GCN-HSA-NEXT: s_addc_u32 s7, s17, 0 3148; GCN-HSA-NEXT: v_mov_b32_e32 v27, s7 3149; GCN-HSA-NEXT: v_mov_b32_e32 v26, s6 3150; GCN-HSA-NEXT: s_add_u32 s6, s16, 0xc0 3151; GCN-HSA-NEXT: s_addc_u32 s7, s17, 0 3152; GCN-HSA-NEXT: v_mov_b32_e32 v29, s7 3153; GCN-HSA-NEXT: v_mov_b32_e32 v28, s6 3154; GCN-HSA-NEXT: s_add_u32 s6, s16, 0xb0 3155; GCN-HSA-NEXT: s_addc_u32 s7, s17, 0 3156; GCN-HSA-NEXT: v_mov_b32_e32 v31, s7 3157; GCN-HSA-NEXT: v_mov_b32_e32 v30, s6 3158; GCN-HSA-NEXT: s_add_u32 s6, s16, 0xa0 3159; GCN-HSA-NEXT: s_addc_u32 s7, s17, 0 3160; GCN-HSA-NEXT: v_mov_b32_e32 v33, s7 3161; GCN-HSA-NEXT: v_mov_b32_e32 v32, s6 3162; GCN-HSA-NEXT: s_add_u32 s6, s16, 0x90 3163; GCN-HSA-NEXT: v_mov_b32_e32 v4, s67 3164; GCN-HSA-NEXT: v_mov_b32_e32 v5, s48 3165; GCN-HSA-NEXT: v_mov_b32_e32 v6, s66 3166; GCN-HSA-NEXT: v_mov_b32_e32 v7, s49 3167; GCN-HSA-NEXT: s_addc_u32 s7, s17, 0 3168; GCN-HSA-NEXT: flat_store_dwordx4 v[24:25], v[4:7] 3169; GCN-HSA-NEXT: v_mov_b32_e32 v25, s7 3170; GCN-HSA-NEXT: v_mov_b32_e32 v24, s6 3171; GCN-HSA-NEXT: s_add_u32 s6, s16, 0x80 3172; GCN-HSA-NEXT: s_addc_u32 s7, s17, 0 3173; GCN-HSA-NEXT: v_mov_b32_e32 v35, s7 3174; GCN-HSA-NEXT: v_mov_b32_e32 v34, s6 3175; GCN-HSA-NEXT: s_add_u32 s6, s16, 0x70 3176; GCN-HSA-NEXT: v_mov_b32_e32 v16, s61 3177; GCN-HSA-NEXT: v_mov_b32_e32 v17, s42 3178; GCN-HSA-NEXT: v_mov_b32_e32 v18, s60 3179; GCN-HSA-NEXT: v_mov_b32_e32 v19, s43 3180; GCN-HSA-NEXT: s_addc_u32 s7, s17, 0 3181; GCN-HSA-NEXT: flat_store_dwordx4 v[30:31], v[16:19] 3182; GCN-HSA-NEXT: v_mov_b32_e32 v0, s53 3183; GCN-HSA-NEXT: v_mov_b32_e32 v17, s7 3184; GCN-HSA-NEXT: v_mov_b32_e32 v16, s6 3185; GCN-HSA-NEXT: s_add_u32 s6, s16, 0x60 3186; GCN-HSA-NEXT: s_addc_u32 s7, s17, 0 3187; GCN-HSA-NEXT: v_mov_b32_e32 v1, s50 3188; GCN-HSA-NEXT: v_mov_b32_e32 v2, s68 3189; GCN-HSA-NEXT: v_mov_b32_e32 v3, s51 3190; GCN-HSA-NEXT: v_mov_b32_e32 v19, s7 3191; GCN-HSA-NEXT: v_mov_b32_e32 v8, s65 3192; GCN-HSA-NEXT: v_mov_b32_e32 v9, s46 3193; GCN-HSA-NEXT: v_mov_b32_e32 v10, s64 3194; GCN-HSA-NEXT: v_mov_b32_e32 v11, s47 3195; GCN-HSA-NEXT: v_mov_b32_e32 v12, s63 3196; GCN-HSA-NEXT: v_mov_b32_e32 v13, s44 3197; GCN-HSA-NEXT: v_mov_b32_e32 v14, s62 3198; GCN-HSA-NEXT: v_mov_b32_e32 v15, s45 3199; GCN-HSA-NEXT: v_mov_b32_e32 v20, s59 3200; GCN-HSA-NEXT: flat_store_dwordx4 v[21:22], v[0:3] 3201; GCN-HSA-NEXT: v_mov_b32_e32 v21, s40 3202; GCN-HSA-NEXT: v_mov_b32_e32 v0, s57 3203; GCN-HSA-NEXT: v_mov_b32_e32 v22, s58 3204; GCN-HSA-NEXT: v_mov_b32_e32 v23, s41 3205; GCN-HSA-NEXT: v_mov_b32_e32 v1, s38 3206; GCN-HSA-NEXT: v_mov_b32_e32 v2, s56 3207; GCN-HSA-NEXT: v_mov_b32_e32 v4, s19 3208; GCN-HSA-NEXT: v_mov_b32_e32 v3, s39 3209; GCN-HSA-NEXT: v_mov_b32_e32 v5, s36 3210; GCN-HSA-NEXT: v_mov_b32_e32 v18, s6 3211; GCN-HSA-NEXT: s_add_u32 s6, s16, 0x50 3212; GCN-HSA-NEXT: flat_store_dwordx4 v[26:27], v[8:11] 3213; GCN-HSA-NEXT: v_mov_b32_e32 v6, s18 3214; GCN-HSA-NEXT: v_mov_b32_e32 v8, s14 3215; GCN-HSA-NEXT: flat_store_dwordx4 v[28:29], v[12:15] 3216; GCN-HSA-NEXT: v_mov_b32_e32 v7, s37 3217; GCN-HSA-NEXT: v_mov_b32_e32 v12, s12 3218; GCN-HSA-NEXT: v_mov_b32_e32 v9, s52 3219; GCN-HSA-NEXT: v_mov_b32_e32 v10, s15 3220; GCN-HSA-NEXT: v_mov_b32_e32 v11, s35 3221; GCN-HSA-NEXT: v_mov_b32_e32 v13, s34 3222; GCN-HSA-NEXT: flat_store_dwordx4 v[32:33], v[20:23] 3223; GCN-HSA-NEXT: v_mov_b32_e32 v14, s13 3224; GCN-HSA-NEXT: v_mov_b32_e32 v15, s33 3225; GCN-HSA-NEXT: flat_store_dwordx4 v[24:25], v[0:3] 3226; GCN-HSA-NEXT: flat_store_dwordx4 v[34:35], v[4:7] 3227; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[8:11] 3228; GCN-HSA-NEXT: flat_store_dwordx4 v[18:19], v[12:15] 3229; GCN-HSA-NEXT: s_addc_u32 s7, s17, 0 3230; GCN-HSA-NEXT: v_mov_b32_e32 v4, s6 3231; GCN-HSA-NEXT: v_mov_b32_e32 v0, s10 3232; GCN-HSA-NEXT: v_mov_b32_e32 v1, s31 3233; GCN-HSA-NEXT: v_mov_b32_e32 v2, s11 3234; GCN-HSA-NEXT: v_mov_b32_e32 v3, s30 3235; GCN-HSA-NEXT: v_mov_b32_e32 v5, s7 3236; GCN-HSA-NEXT: s_add_u32 s6, s16, 64 3237; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 3238; GCN-HSA-NEXT: s_addc_u32 s7, s17, 0 3239; GCN-HSA-NEXT: v_mov_b32_e32 v4, s6 3240; GCN-HSA-NEXT: v_mov_b32_e32 v0, s8 3241; GCN-HSA-NEXT: v_mov_b32_e32 v1, s29 3242; GCN-HSA-NEXT: v_mov_b32_e32 v2, s9 3243; GCN-HSA-NEXT: v_mov_b32_e32 v3, s28 3244; GCN-HSA-NEXT: v_mov_b32_e32 v5, s7 3245; GCN-HSA-NEXT: s_add_u32 s6, s16, 48 3246; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 3247; GCN-HSA-NEXT: s_addc_u32 s7, s17, 0 3248; GCN-HSA-NEXT: v_mov_b32_e32 v4, s6 3249; GCN-HSA-NEXT: v_mov_b32_e32 v0, s55 3250; GCN-HSA-NEXT: v_mov_b32_e32 v1, s27 3251; GCN-HSA-NEXT: v_mov_b32_e32 v2, s54 3252; GCN-HSA-NEXT: v_mov_b32_e32 v3, s26 3253; GCN-HSA-NEXT: v_mov_b32_e32 v5, s7 3254; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 3255; GCN-HSA-NEXT: s_nop 0 3256; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 3257; GCN-HSA-NEXT: s_add_u32 s4, s16, 32 3258; GCN-HSA-NEXT: v_mov_b32_e32 v2, s5 3259; GCN-HSA-NEXT: s_addc_u32 s5, s17, 0 3260; GCN-HSA-NEXT: v_mov_b32_e32 v4, s4 3261; GCN-HSA-NEXT: v_mov_b32_e32 v1, s25 3262; GCN-HSA-NEXT: v_mov_b32_e32 v3, s24 3263; GCN-HSA-NEXT: v_mov_b32_e32 v5, s5 3264; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 3265; GCN-HSA-NEXT: s_nop 0 3266; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 3267; GCN-HSA-NEXT: s_add_u32 s2, s16, 16 3268; GCN-HSA-NEXT: v_mov_b32_e32 v2, s3 3269; GCN-HSA-NEXT: s_addc_u32 s3, s17, 0 3270; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 3271; GCN-HSA-NEXT: v_mov_b32_e32 v1, s23 3272; GCN-HSA-NEXT: v_mov_b32_e32 v3, s22 3273; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 3274; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 3275; GCN-HSA-NEXT: v_mov_b32_e32 v4, s16 3276; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 3277; GCN-HSA-NEXT: v_mov_b32_e32 v1, s21 3278; GCN-HSA-NEXT: v_mov_b32_e32 v2, s1 3279; GCN-HSA-NEXT: v_mov_b32_e32 v3, s20 3280; GCN-HSA-NEXT: v_mov_b32_e32 v5, s17 3281; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 3282; GCN-HSA-NEXT: s_endpgm 3283; 3284; GCN-NOHSA-VI-LABEL: constant_zextload_v64i16_to_v64i32: 3285; GCN-NOHSA-VI: ; %bb.0: 3286; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[16:19], s[0:1], 0x24 3287; GCN-NOHSA-VI-NEXT: s_mov_b32 s26, 0xffff 3288; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 3289; GCN-NOHSA-VI-NEXT: s_load_dwordx16 s[0:15], s[18:19], 0x40 3290; GCN-NOHSA-VI-NEXT: s_load_dwordx16 s[36:51], s[18:19], 0x0 3291; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 3292; GCN-NOHSA-VI-NEXT: s_and_b32 s53, s1, s26 3293; GCN-NOHSA-VI-NEXT: s_lshr_b32 s18, s37, 16 3294; GCN-NOHSA-VI-NEXT: s_and_b32 s19, s37, s26 3295; GCN-NOHSA-VI-NEXT: s_lshr_b32 s20, s36, 16 3296; GCN-NOHSA-VI-NEXT: s_and_b32 s21, s36, s26 3297; GCN-NOHSA-VI-NEXT: s_lshr_b32 s22, s39, 16 3298; GCN-NOHSA-VI-NEXT: s_and_b32 s23, s39, s26 3299; GCN-NOHSA-VI-NEXT: s_lshr_b32 s24, s38, 16 3300; GCN-NOHSA-VI-NEXT: s_and_b32 s25, s38, s26 3301; GCN-NOHSA-VI-NEXT: s_lshr_b32 s27, s41, 16 3302; GCN-NOHSA-VI-NEXT: s_and_b32 s28, s41, s26 3303; GCN-NOHSA-VI-NEXT: s_lshr_b32 s29, s40, 16 3304; GCN-NOHSA-VI-NEXT: s_and_b32 s30, s40, s26 3305; GCN-NOHSA-VI-NEXT: s_lshr_b32 s31, s43, 16 3306; GCN-NOHSA-VI-NEXT: s_and_b32 s33, s43, s26 3307; GCN-NOHSA-VI-NEXT: s_lshr_b32 s34, s42, 16 3308; GCN-NOHSA-VI-NEXT: s_and_b32 s35, s42, s26 3309; GCN-NOHSA-VI-NEXT: s_lshr_b32 s36, s45, 16 3310; GCN-NOHSA-VI-NEXT: s_and_b32 s37, s45, s26 3311; GCN-NOHSA-VI-NEXT: s_lshr_b32 s38, s44, 16 3312; GCN-NOHSA-VI-NEXT: s_and_b32 s39, s44, s26 3313; GCN-NOHSA-VI-NEXT: s_lshr_b32 s40, s47, 16 3314; GCN-NOHSA-VI-NEXT: s_and_b32 s41, s47, s26 3315; GCN-NOHSA-VI-NEXT: s_lshr_b32 s42, s46, 16 3316; GCN-NOHSA-VI-NEXT: s_and_b32 s43, s46, s26 3317; GCN-NOHSA-VI-NEXT: s_lshr_b32 s44, s49, 16 3318; GCN-NOHSA-VI-NEXT: s_and_b32 s45, s49, s26 3319; GCN-NOHSA-VI-NEXT: s_lshr_b32 s46, s48, 16 3320; GCN-NOHSA-VI-NEXT: s_and_b32 s47, s48, s26 3321; GCN-NOHSA-VI-NEXT: s_lshr_b32 s48, s51, 16 3322; GCN-NOHSA-VI-NEXT: s_and_b32 s49, s51, s26 3323; GCN-NOHSA-VI-NEXT: s_lshr_b32 s51, s50, 16 3324; GCN-NOHSA-VI-NEXT: s_and_b32 s50, s50, s26 3325; GCN-NOHSA-VI-NEXT: s_and_b32 s55, s0, s26 3326; GCN-NOHSA-VI-NEXT: s_and_b32 s57, s3, s26 3327; GCN-NOHSA-VI-NEXT: s_and_b32 s59, s2, s26 3328; GCN-NOHSA-VI-NEXT: s_lshr_b32 s60, s5, 16 3329; GCN-NOHSA-VI-NEXT: s_and_b32 s5, s5, s26 3330; GCN-NOHSA-VI-NEXT: s_lshr_b32 s61, s4, 16 3331; GCN-NOHSA-VI-NEXT: s_and_b32 s4, s4, s26 3332; GCN-NOHSA-VI-NEXT: s_lshr_b32 s62, s7, 16 3333; GCN-NOHSA-VI-NEXT: s_and_b32 s7, s7, s26 3334; GCN-NOHSA-VI-NEXT: s_lshr_b32 s63, s6, 16 3335; GCN-NOHSA-VI-NEXT: s_and_b32 s6, s6, s26 3336; GCN-NOHSA-VI-NEXT: s_and_b32 s64, s9, s26 3337; GCN-NOHSA-VI-NEXT: s_and_b32 s65, s8, s26 3338; GCN-NOHSA-VI-NEXT: s_and_b32 s66, s11, s26 3339; GCN-NOHSA-VI-NEXT: s_and_b32 s67, s10, s26 3340; GCN-NOHSA-VI-NEXT: s_and_b32 s68, s13, s26 3341; GCN-NOHSA-VI-NEXT: s_and_b32 s69, s12, s26 3342; GCN-NOHSA-VI-NEXT: s_and_b32 s70, s15, s26 3343; GCN-NOHSA-VI-NEXT: s_and_b32 s26, s14, s26 3344; GCN-NOHSA-VI-NEXT: s_lshr_b32 s15, s15, 16 3345; GCN-NOHSA-VI-NEXT: s_lshr_b32 s14, s14, 16 3346; GCN-NOHSA-VI-NEXT: s_lshr_b32 s52, s1, 16 3347; GCN-NOHSA-VI-NEXT: s_lshr_b32 s54, s0, 16 3348; GCN-NOHSA-VI-NEXT: s_lshr_b32 s56, s3, 16 3349; GCN-NOHSA-VI-NEXT: s_lshr_b32 s58, s2, 16 3350; GCN-NOHSA-VI-NEXT: s_lshr_b32 s13, s13, 16 3351; GCN-NOHSA-VI-NEXT: s_lshr_b32 s12, s12, 16 3352; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 3353; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 3354; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s16 3355; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s17 3356; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s26 3357; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s14 3358; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s70 3359; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s15 3360; GCN-NOHSA-VI-NEXT: s_lshr_b32 s11, s11, 16 3361; GCN-NOHSA-VI-NEXT: s_lshr_b32 s10, s10, 16 3362; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240 3363; GCN-NOHSA-VI-NEXT: s_lshr_b32 s9, s9, 16 3364; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s69 3365; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s12 3366; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s68 3367; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s13 3368; GCN-NOHSA-VI-NEXT: s_lshr_b32 s8, s8, 16 3369; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:224 3370; GCN-NOHSA-VI-NEXT: s_nop 0 3371; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s67 3372; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s10 3373; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s66 3374; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s11 3375; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:208 3376; GCN-NOHSA-VI-NEXT: s_nop 0 3377; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s65 3378; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s8 3379; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s64 3380; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s9 3381; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:192 3382; GCN-NOHSA-VI-NEXT: s_nop 0 3383; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s6 3384; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s63 3385; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s7 3386; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s62 3387; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:176 3388; GCN-NOHSA-VI-NEXT: s_nop 0 3389; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s4 3390; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s61 3391; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s5 3392; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s60 3393; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:160 3394; GCN-NOHSA-VI-NEXT: s_nop 0 3395; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s59 3396; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s58 3397; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s57 3398; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s56 3399; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:144 3400; GCN-NOHSA-VI-NEXT: s_nop 0 3401; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s55 3402; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s54 3403; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s53 3404; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s52 3405; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:128 3406; GCN-NOHSA-VI-NEXT: s_nop 0 3407; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s50 3408; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s51 3409; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s49 3410; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s48 3411; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112 3412; GCN-NOHSA-VI-NEXT: s_nop 0 3413; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s47 3414; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s46 3415; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s45 3416; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s44 3417; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96 3418; GCN-NOHSA-VI-NEXT: s_nop 0 3419; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s43 3420; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s42 3421; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s41 3422; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s40 3423; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80 3424; GCN-NOHSA-VI-NEXT: s_nop 0 3425; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s39 3426; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s38 3427; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s37 3428; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s36 3429; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64 3430; GCN-NOHSA-VI-NEXT: s_nop 0 3431; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s35 3432; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s34 3433; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s33 3434; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s31 3435; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 3436; GCN-NOHSA-VI-NEXT: s_nop 0 3437; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s30 3438; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s29 3439; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s28 3440; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s27 3441; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 3442; GCN-NOHSA-VI-NEXT: s_nop 0 3443; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s25 3444; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s24 3445; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s23 3446; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s22 3447; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 3448; GCN-NOHSA-VI-NEXT: s_nop 0 3449; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s21 3450; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s20 3451; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s19 3452; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s18 3453; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 3454; GCN-NOHSA-VI-NEXT: s_endpgm 3455; 3456; EG-LABEL: constant_zextload_v64i16_to_v64i32: 3457; EG: ; %bb.0: 3458; EG-NEXT: ALU 0, @38, KC0[CB0:0-32], KC1[] 3459; EG-NEXT: TEX 3 @22 3460; EG-NEXT: ALU 55, @39, KC0[CB0:0-32], KC1[] 3461; EG-NEXT: TEX 3 @30 3462; EG-NEXT: ALU 87, @95, KC0[CB0:0-32], KC1[] 3463; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T65.XYZW, T66.X, 0 3464; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T63.XYZW, T49.X, 0 3465; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T62.XYZW, T64.X, 0 3466; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T60.XYZW, T50.X, 0 3467; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T59.XYZW, T61.X, 0 3468; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T57.XYZW, T51.X, 0 3469; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T56.XYZW, T58.X, 0 3470; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T54.XYZW, T52.X, 0 3471; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T53.XYZW, T55.X, 0 3472; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T35.XYZW, T39.X, 0 3473; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T47.XYZW, T48.X, 0 3474; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T45.XYZW, T40.X, 0 3475; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T44.XYZW, T46.X, 0 3476; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T42.XYZW, T41.X, 0 3477; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T38.XYZW, T43.X, 0 3478; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T37.XYZW, T36.X, 1 3479; EG-NEXT: CF_END 3480; EG-NEXT: Fetch clause starting at 22: 3481; EG-NEXT: VTX_READ_128 T36.XYZW, T35.X, 0, #1 3482; EG-NEXT: VTX_READ_128 T39.XYZW, T35.X, 48, #1 3483; EG-NEXT: VTX_READ_128 T40.XYZW, T35.X, 32, #1 3484; EG-NEXT: VTX_READ_128 T41.XYZW, T35.X, 16, #1 3485; EG-NEXT: Fetch clause starting at 30: 3486; EG-NEXT: VTX_READ_128 T49.XYZW, T35.X, 112, #1 3487; EG-NEXT: VTX_READ_128 T50.XYZW, T35.X, 96, #1 3488; EG-NEXT: VTX_READ_128 T51.XYZW, T35.X, 80, #1 3489; EG-NEXT: VTX_READ_128 T52.XYZW, T35.X, 64, #1 3490; EG-NEXT: ALU clause starting at 38: 3491; EG-NEXT: MOV * T35.X, KC0[2].Z, 3492; EG-NEXT: ALU clause starting at 39: 3493; EG-NEXT: LSHR * T37.W, T36.Y, literal.x, 3494; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3495; EG-NEXT: AND_INT * T37.Z, T36.Y, literal.x, 3496; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3497; EG-NEXT: LSHR T37.Y, T36.X, literal.x, 3498; EG-NEXT: LSHR * T38.W, T36.W, literal.x, 3499; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3500; EG-NEXT: AND_INT T37.X, T36.X, literal.x, 3501; EG-NEXT: AND_INT T38.Z, T36.W, literal.x, 3502; EG-NEXT: LSHR * T36.X, KC0[2].Y, literal.y, 3503; EG-NEXT: 65535(9.183409e-41), 2(2.802597e-45) 3504; EG-NEXT: LSHR T38.Y, T36.Z, literal.x, 3505; EG-NEXT: LSHR * T42.W, T41.Y, literal.x, 3506; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3507; EG-NEXT: AND_INT T38.X, T36.Z, literal.x, 3508; EG-NEXT: AND_INT T42.Z, T41.Y, literal.x, 3509; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3510; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 3511; EG-NEXT: LSHR T43.X, PV.W, literal.x, 3512; EG-NEXT: LSHR T42.Y, T41.X, literal.y, 3513; EG-NEXT: LSHR T44.W, T41.W, literal.y, 3514; EG-NEXT: AND_INT * T42.X, T41.X, literal.z, 3515; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3516; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3517; EG-NEXT: AND_INT T44.Z, T41.W, literal.x, 3518; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3519; EG-NEXT: 65535(9.183409e-41), 32(4.484155e-44) 3520; EG-NEXT: LSHR T41.X, PV.W, literal.x, 3521; EG-NEXT: LSHR T44.Y, T41.Z, literal.y, 3522; EG-NEXT: LSHR T45.W, T40.Y, literal.y, 3523; EG-NEXT: AND_INT * T44.X, T41.Z, literal.z, 3524; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3525; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3526; EG-NEXT: AND_INT T45.Z, T40.Y, literal.x, 3527; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3528; EG-NEXT: 65535(9.183409e-41), 48(6.726233e-44) 3529; EG-NEXT: LSHR T46.X, PV.W, literal.x, 3530; EG-NEXT: LSHR T45.Y, T40.X, literal.y, 3531; EG-NEXT: LSHR T47.W, T40.W, literal.y, 3532; EG-NEXT: AND_INT * T45.X, T40.X, literal.z, 3533; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3534; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3535; EG-NEXT: AND_INT T47.Z, T40.W, literal.x, 3536; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3537; EG-NEXT: 65535(9.183409e-41), 64(8.968310e-44) 3538; EG-NEXT: LSHR T40.X, PV.W, literal.x, 3539; EG-NEXT: LSHR T47.Y, T40.Z, literal.y, 3540; EG-NEXT: AND_INT * T47.X, T40.Z, literal.z, 3541; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3542; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3543; EG-NEXT: ADD_INT T0.W, KC0[2].Y, literal.x, 3544; EG-NEXT: LSHR * T35.W, T39.Y, literal.y, 3545; EG-NEXT: 80(1.121039e-43), 16(2.242078e-44) 3546; EG-NEXT: LSHR T48.X, PV.W, literal.x, 3547; EG-NEXT: AND_INT * T35.Z, T39.Y, literal.y, 3548; EG-NEXT: 2(2.802597e-45), 65535(9.183409e-41) 3549; EG-NEXT: ALU clause starting at 95: 3550; EG-NEXT: LSHR T35.Y, T39.X, literal.x, 3551; EG-NEXT: LSHR * T53.W, T39.W, literal.x, 3552; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3553; EG-NEXT: AND_INT T35.X, T39.X, literal.x, 3554; EG-NEXT: AND_INT T53.Z, T39.W, literal.x, 3555; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3556; EG-NEXT: 65535(9.183409e-41), 96(1.345247e-43) 3557; EG-NEXT: LSHR T39.X, PV.W, literal.x, 3558; EG-NEXT: LSHR T53.Y, T39.Z, literal.y, 3559; EG-NEXT: LSHR T54.W, T52.Y, literal.y, 3560; EG-NEXT: AND_INT * T53.X, T39.Z, literal.z, 3561; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3562; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3563; EG-NEXT: AND_INT T54.Z, T52.Y, literal.x, 3564; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3565; EG-NEXT: 65535(9.183409e-41), 112(1.569454e-43) 3566; EG-NEXT: LSHR T55.X, PV.W, literal.x, 3567; EG-NEXT: LSHR T54.Y, T52.X, literal.y, 3568; EG-NEXT: LSHR T56.W, T52.W, literal.y, 3569; EG-NEXT: AND_INT * T54.X, T52.X, literal.z, 3570; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3571; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3572; EG-NEXT: AND_INT T56.Z, T52.W, literal.x, 3573; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3574; EG-NEXT: 65535(9.183409e-41), 128(1.793662e-43) 3575; EG-NEXT: LSHR T52.X, PV.W, literal.x, 3576; EG-NEXT: LSHR T56.Y, T52.Z, literal.y, 3577; EG-NEXT: LSHR T57.W, T51.Y, literal.y, 3578; EG-NEXT: AND_INT * T56.X, T52.Z, literal.z, 3579; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3580; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3581; EG-NEXT: AND_INT T57.Z, T51.Y, literal.x, 3582; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3583; EG-NEXT: 65535(9.183409e-41), 144(2.017870e-43) 3584; EG-NEXT: LSHR T58.X, PV.W, literal.x, 3585; EG-NEXT: LSHR T57.Y, T51.X, literal.y, 3586; EG-NEXT: LSHR T59.W, T51.W, literal.y, 3587; EG-NEXT: AND_INT * T57.X, T51.X, literal.z, 3588; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3589; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3590; EG-NEXT: AND_INT T59.Z, T51.W, literal.x, 3591; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3592; EG-NEXT: 65535(9.183409e-41), 160(2.242078e-43) 3593; EG-NEXT: LSHR T51.X, PV.W, literal.x, 3594; EG-NEXT: LSHR T59.Y, T51.Z, literal.y, 3595; EG-NEXT: LSHR T60.W, T50.Y, literal.y, 3596; EG-NEXT: AND_INT * T59.X, T51.Z, literal.z, 3597; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3598; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3599; EG-NEXT: AND_INT T60.Z, T50.Y, literal.x, 3600; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3601; EG-NEXT: 65535(9.183409e-41), 176(2.466285e-43) 3602; EG-NEXT: LSHR T61.X, PV.W, literal.x, 3603; EG-NEXT: LSHR T60.Y, T50.X, literal.y, 3604; EG-NEXT: LSHR T62.W, T50.W, literal.y, 3605; EG-NEXT: AND_INT * T60.X, T50.X, literal.z, 3606; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3607; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3608; EG-NEXT: AND_INT T62.Z, T50.W, literal.x, 3609; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3610; EG-NEXT: 65535(9.183409e-41), 192(2.690493e-43) 3611; EG-NEXT: LSHR T50.X, PV.W, literal.x, 3612; EG-NEXT: LSHR T62.Y, T50.Z, literal.y, 3613; EG-NEXT: LSHR T63.W, T49.Y, literal.y, 3614; EG-NEXT: AND_INT * T62.X, T50.Z, literal.z, 3615; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3616; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3617; EG-NEXT: AND_INT T63.Z, T49.Y, literal.x, 3618; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3619; EG-NEXT: 65535(9.183409e-41), 208(2.914701e-43) 3620; EG-NEXT: LSHR T64.X, PV.W, literal.x, 3621; EG-NEXT: LSHR T63.Y, T49.X, literal.y, 3622; EG-NEXT: LSHR T65.W, T49.W, literal.y, 3623; EG-NEXT: AND_INT * T63.X, T49.X, literal.z, 3624; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3625; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3626; EG-NEXT: AND_INT T65.Z, T49.W, literal.x, 3627; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3628; EG-NEXT: 65535(9.183409e-41), 224(3.138909e-43) 3629; EG-NEXT: LSHR T49.X, PV.W, literal.x, 3630; EG-NEXT: LSHR T65.Y, T49.Z, literal.y, 3631; EG-NEXT: AND_INT * T65.X, T49.Z, literal.z, 3632; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3633; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3634; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 3635; EG-NEXT: 240(3.363116e-43), 0(0.000000e+00) 3636; EG-NEXT: LSHR * T66.X, PV.W, literal.x, 3637; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 3638 %load = load <64 x i16>, <64 x i16> addrspace(4)* %in 3639 %ext = zext <64 x i16> %load to <64 x i32> 3640 store <64 x i32> %ext, <64 x i32> addrspace(1)* %out 3641 ret void 3642} 3643 3644define amdgpu_kernel void @constant_sextload_v64i16_to_v64i32(<64 x i32> addrspace(1)* %out, <64 x i16> addrspace(4)* %in) #0 { 3645; GCN-NOHSA-SI-LABEL: constant_sextload_v64i16_to_v64i32: 3646; GCN-NOHSA-SI: ; %bb.0: 3647; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[36:39], s[0:1], 0x9 3648; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 3649; GCN-NOHSA-SI-NEXT: s_load_dwordx16 s[0:15], s[38:39], 0x0 3650; GCN-NOHSA-SI-NEXT: s_load_dwordx16 s[16:31], s[38:39], 0x10 3651; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 3652; GCN-NOHSA-SI-NEXT: s_ashr_i32 s33, s1, 16 3653; GCN-NOHSA-SI-NEXT: s_ashr_i32 s34, s0, 16 3654; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s35, s1 3655; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s38, s0 3656; GCN-NOHSA-SI-NEXT: s_ashr_i32 s39, s3, 16 3657; GCN-NOHSA-SI-NEXT: s_ashr_i32 s40, s2, 16 3658; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s41, s3 3659; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s42, s2 3660; GCN-NOHSA-SI-NEXT: s_ashr_i32 s43, s5, 16 3661; GCN-NOHSA-SI-NEXT: s_ashr_i32 s44, s4, 16 3662; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s5, s5 3663; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s4, s4 3664; GCN-NOHSA-SI-NEXT: s_ashr_i32 s45, s7, 16 3665; GCN-NOHSA-SI-NEXT: s_ashr_i32 s46, s6, 16 3666; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s7, s7 3667; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s6, s6 3668; GCN-NOHSA-SI-NEXT: s_ashr_i32 s47, s9, 16 3669; GCN-NOHSA-SI-NEXT: s_ashr_i32 s48, s8, 16 3670; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s9, s9 3671; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s8, s8 3672; GCN-NOHSA-SI-NEXT: s_ashr_i32 s49, s11, 16 3673; GCN-NOHSA-SI-NEXT: s_ashr_i32 s50, s10, 16 3674; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s11, s11 3675; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s10, s10 3676; GCN-NOHSA-SI-NEXT: s_ashr_i32 s51, s13, 16 3677; GCN-NOHSA-SI-NEXT: s_ashr_i32 s52, s12, 16 3678; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s13, s13 3679; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s12, s12 3680; GCN-NOHSA-SI-NEXT: s_ashr_i32 s53, s15, 16 3681; GCN-NOHSA-SI-NEXT: s_ashr_i32 s54, s14, 16 3682; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s15, s15 3683; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s14, s14 3684; GCN-NOHSA-SI-NEXT: s_ashr_i32 s55, s17, 16 3685; GCN-NOHSA-SI-NEXT: s_ashr_i32 s56, s16, 16 3686; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s17, s17 3687; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s16, s16 3688; GCN-NOHSA-SI-NEXT: s_ashr_i32 s57, s19, 16 3689; GCN-NOHSA-SI-NEXT: s_ashr_i32 s58, s18, 16 3690; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s19, s19 3691; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s18, s18 3692; GCN-NOHSA-SI-NEXT: s_ashr_i32 s59, s21, 16 3693; GCN-NOHSA-SI-NEXT: s_ashr_i32 s60, s20, 16 3694; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s21, s21 3695; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s20, s20 3696; GCN-NOHSA-SI-NEXT: s_ashr_i32 s61, s22, 16 3697; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s62, s23 3698; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s22, s22 3699; GCN-NOHSA-SI-NEXT: s_ashr_i32 s63, s25, 16 3700; GCN-NOHSA-SI-NEXT: s_ashr_i32 s64, s24, 16 3701; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s25, s25 3702; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s24, s24 3703; GCN-NOHSA-SI-NEXT: s_ashr_i32 s65, s27, 16 3704; GCN-NOHSA-SI-NEXT: s_ashr_i32 s66, s26, 16 3705; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s27, s27 3706; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s26, s26 3707; GCN-NOHSA-SI-NEXT: s_ashr_i32 s67, s29, 16 3708; GCN-NOHSA-SI-NEXT: s_ashr_i32 s68, s28, 16 3709; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s29, s29 3710; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s28, s28 3711; GCN-NOHSA-SI-NEXT: s_ashr_i32 s69, s31, 16 3712; GCN-NOHSA-SI-NEXT: s_ashr_i32 s70, s30, 16 3713; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s31, s31 3714; GCN-NOHSA-SI-NEXT: s_sext_i32_i16 s30, s30 3715; GCN-NOHSA-SI-NEXT: s_ashr_i32 s23, s23, 16 3716; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s36 3717; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s37 3718; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 3719; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 3720; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s30 3721; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s70 3722; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s31 3723; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s69 3724; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v4, s28 3725; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v5, s68 3726; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v6, s29 3727; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v7, s67 3728; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v8, s26 3729; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v9, s66 3730; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v10, s27 3731; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v11, s65 3732; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v12, s24 3733; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v13, s64 3734; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v14, s25 3735; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v15, s63 3736; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v16, s22 3737; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v17, s61 3738; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v18, s62 3739; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v20, s20 3740; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v19, s23 3741; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v21, s60 3742; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v22, s21 3743; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v23, s59 3744; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240 3745; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:224 3746; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:208 3747; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:192 3748; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:176 3749; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[20:23], off, s[0:3], 0 offset:160 3750; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(5) 3751; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s18 3752; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s58 3753; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s19 3754; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s57 3755; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:144 3756; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3757; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s16 3758; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s56 3759; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s17 3760; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s55 3761; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:128 3762; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3763; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s14 3764; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s54 3765; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s15 3766; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s53 3767; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112 3768; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3769; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s12 3770; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s52 3771; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s13 3772; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s51 3773; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96 3774; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3775; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s10 3776; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s50 3777; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s11 3778; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s49 3779; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80 3780; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3781; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s8 3782; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s48 3783; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s9 3784; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s47 3785; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64 3786; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3787; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s6 3788; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s46 3789; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s7 3790; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s45 3791; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 3792; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3793; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s4 3794; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s44 3795; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s5 3796; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s43 3797; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 3798; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3799; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s42 3800; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s40 3801; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s41 3802; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s39 3803; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 3804; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3805; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s38 3806; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s34 3807; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s35 3808; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s33 3809; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 3810; GCN-NOHSA-SI-NEXT: s_endpgm 3811; 3812; GCN-HSA-LABEL: constant_sextload_v64i16_to_v64i32: 3813; GCN-HSA: ; %bb.0: 3814; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 3815; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 3816; GCN-HSA-NEXT: s_load_dwordx16 s[16:31], s[2:3], 0x0 3817; GCN-HSA-NEXT: s_load_dwordx16 s[36:51], s[2:3], 0x10 3818; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 3819; GCN-HSA-NEXT: s_ashr_i32 s4, s17, 16 3820; GCN-HSA-NEXT: s_ashr_i32 s5, s16, 16 3821; GCN-HSA-NEXT: s_sext_i32_i16 s6, s17 3822; GCN-HSA-NEXT: s_sext_i32_i16 s7, s16 3823; GCN-HSA-NEXT: s_ashr_i32 s8, s19, 16 3824; GCN-HSA-NEXT: s_ashr_i32 s9, s18, 16 3825; GCN-HSA-NEXT: s_sext_i32_i16 s10, s19 3826; GCN-HSA-NEXT: s_sext_i32_i16 s11, s18 3827; GCN-HSA-NEXT: s_ashr_i32 s12, s21, 16 3828; GCN-HSA-NEXT: s_ashr_i32 s13, s20, 16 3829; GCN-HSA-NEXT: s_sext_i32_i16 s14, s21 3830; GCN-HSA-NEXT: s_sext_i32_i16 s15, s20 3831; GCN-HSA-NEXT: s_ashr_i32 s16, s23, 16 3832; GCN-HSA-NEXT: s_ashr_i32 s17, s22, 16 3833; GCN-HSA-NEXT: s_sext_i32_i16 s18, s23 3834; GCN-HSA-NEXT: s_sext_i32_i16 s19, s22 3835; GCN-HSA-NEXT: s_ashr_i32 s20, s25, 16 3836; GCN-HSA-NEXT: s_ashr_i32 s21, s24, 16 3837; GCN-HSA-NEXT: s_sext_i32_i16 s22, s25 3838; GCN-HSA-NEXT: s_sext_i32_i16 s23, s24 3839; GCN-HSA-NEXT: s_ashr_i32 s24, s27, 16 3840; GCN-HSA-NEXT: s_ashr_i32 s25, s26, 16 3841; GCN-HSA-NEXT: s_ashr_i32 s33, s29, 16 3842; GCN-HSA-NEXT: s_ashr_i32 s34, s28, 16 3843; GCN-HSA-NEXT: s_ashr_i32 s35, s31, 16 3844; GCN-HSA-NEXT: s_ashr_i32 s52, s30, 16 3845; GCN-HSA-NEXT: s_ashr_i32 s53, s37, 16 3846; GCN-HSA-NEXT: s_ashr_i32 s54, s36, 16 3847; GCN-HSA-NEXT: s_ashr_i32 s55, s39, 16 3848; GCN-HSA-NEXT: s_ashr_i32 s56, s38, 16 3849; GCN-HSA-NEXT: s_ashr_i32 s57, s41, 16 3850; GCN-HSA-NEXT: s_ashr_i32 s58, s40, 16 3851; GCN-HSA-NEXT: s_ashr_i32 s59, s43, 16 3852; GCN-HSA-NEXT: s_ashr_i32 s60, s42, 16 3853; GCN-HSA-NEXT: s_ashr_i32 s61, s45, 16 3854; GCN-HSA-NEXT: s_ashr_i32 s62, s44, 16 3855; GCN-HSA-NEXT: s_ashr_i32 s63, s47, 16 3856; GCN-HSA-NEXT: s_ashr_i32 s64, s46, 16 3857; GCN-HSA-NEXT: s_ashr_i32 s65, s49, 16 3858; GCN-HSA-NEXT: s_ashr_i32 s66, s48, 16 3859; GCN-HSA-NEXT: s_ashr_i32 s67, s51, 16 3860; GCN-HSA-NEXT: s_ashr_i32 s68, s50, 16 3861; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xf0 3862; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3863; GCN-HSA-NEXT: v_mov_b32_e32 v22, s3 3864; GCN-HSA-NEXT: v_mov_b32_e32 v21, s2 3865; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xe0 3866; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3867; GCN-HSA-NEXT: v_mov_b32_e32 v25, s3 3868; GCN-HSA-NEXT: v_mov_b32_e32 v24, s2 3869; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xd0 3870; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3871; GCN-HSA-NEXT: v_mov_b32_e32 v27, s3 3872; GCN-HSA-NEXT: v_mov_b32_e32 v26, s2 3873; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xc0 3874; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3875; GCN-HSA-NEXT: v_mov_b32_e32 v29, s3 3876; GCN-HSA-NEXT: v_mov_b32_e32 v28, s2 3877; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xb0 3878; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3879; GCN-HSA-NEXT: v_mov_b32_e32 v31, s3 3880; GCN-HSA-NEXT: v_mov_b32_e32 v30, s2 3881; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xa0 3882; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3883; GCN-HSA-NEXT: v_mov_b32_e32 v33, s3 3884; GCN-HSA-NEXT: s_sext_i32_i16 s49, s49 3885; GCN-HSA-NEXT: s_sext_i32_i16 s48, s48 3886; GCN-HSA-NEXT: v_mov_b32_e32 v32, s2 3887; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x90 3888; GCN-HSA-NEXT: v_mov_b32_e32 v4, s48 3889; GCN-HSA-NEXT: v_mov_b32_e32 v5, s66 3890; GCN-HSA-NEXT: v_mov_b32_e32 v6, s49 3891; GCN-HSA-NEXT: v_mov_b32_e32 v7, s65 3892; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3893; GCN-HSA-NEXT: flat_store_dwordx4 v[24:25], v[4:7] 3894; GCN-HSA-NEXT: v_mov_b32_e32 v25, s3 3895; GCN-HSA-NEXT: v_mov_b32_e32 v24, s2 3896; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x80 3897; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3898; GCN-HSA-NEXT: v_mov_b32_e32 v35, s3 3899; GCN-HSA-NEXT: s_sext_i32_i16 s43, s43 3900; GCN-HSA-NEXT: s_sext_i32_i16 s42, s42 3901; GCN-HSA-NEXT: v_mov_b32_e32 v34, s2 3902; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x70 3903; GCN-HSA-NEXT: v_mov_b32_e32 v16, s42 3904; GCN-HSA-NEXT: v_mov_b32_e32 v17, s60 3905; GCN-HSA-NEXT: v_mov_b32_e32 v18, s43 3906; GCN-HSA-NEXT: v_mov_b32_e32 v19, s59 3907; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3908; GCN-HSA-NEXT: flat_store_dwordx4 v[30:31], v[16:19] 3909; GCN-HSA-NEXT: s_sext_i32_i16 s51, s51 3910; GCN-HSA-NEXT: v_mov_b32_e32 v17, s3 3911; GCN-HSA-NEXT: v_mov_b32_e32 v16, s2 3912; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x60 3913; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3914; GCN-HSA-NEXT: s_sext_i32_i16 s50, s50 3915; GCN-HSA-NEXT: v_mov_b32_e32 v19, s3 3916; GCN-HSA-NEXT: s_sext_i32_i16 s36, s36 3917; GCN-HSA-NEXT: s_sext_i32_i16 s39, s39 3918; GCN-HSA-NEXT: s_sext_i32_i16 s38, s38 3919; GCN-HSA-NEXT: s_sext_i32_i16 s41, s41 3920; GCN-HSA-NEXT: s_sext_i32_i16 s40, s40 3921; GCN-HSA-NEXT: s_sext_i32_i16 s45, s45 3922; GCN-HSA-NEXT: s_sext_i32_i16 s44, s44 3923; GCN-HSA-NEXT: s_sext_i32_i16 s47, s47 3924; GCN-HSA-NEXT: s_sext_i32_i16 s46, s46 3925; GCN-HSA-NEXT: v_mov_b32_e32 v0, s50 3926; GCN-HSA-NEXT: v_mov_b32_e32 v1, s68 3927; GCN-HSA-NEXT: v_mov_b32_e32 v2, s51 3928; GCN-HSA-NEXT: v_mov_b32_e32 v3, s67 3929; GCN-HSA-NEXT: v_mov_b32_e32 v18, s2 3930; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x50 3931; GCN-HSA-NEXT: s_sext_i32_i16 s29, s29 3932; GCN-HSA-NEXT: s_sext_i32_i16 s28, s28 3933; GCN-HSA-NEXT: s_sext_i32_i16 s31, s31 3934; GCN-HSA-NEXT: s_sext_i32_i16 s30, s30 3935; GCN-HSA-NEXT: s_sext_i32_i16 s37, s37 3936; GCN-HSA-NEXT: v_mov_b32_e32 v8, s46 3937; GCN-HSA-NEXT: v_mov_b32_e32 v9, s64 3938; GCN-HSA-NEXT: v_mov_b32_e32 v10, s47 3939; GCN-HSA-NEXT: v_mov_b32_e32 v11, s63 3940; GCN-HSA-NEXT: v_mov_b32_e32 v12, s44 3941; GCN-HSA-NEXT: v_mov_b32_e32 v13, s62 3942; GCN-HSA-NEXT: v_mov_b32_e32 v14, s45 3943; GCN-HSA-NEXT: v_mov_b32_e32 v15, s61 3944; GCN-HSA-NEXT: v_mov_b32_e32 v20, s40 3945; GCN-HSA-NEXT: flat_store_dwordx4 v[21:22], v[0:3] 3946; GCN-HSA-NEXT: v_mov_b32_e32 v21, s58 3947; GCN-HSA-NEXT: v_mov_b32_e32 v0, s38 3948; GCN-HSA-NEXT: v_mov_b32_e32 v22, s41 3949; GCN-HSA-NEXT: v_mov_b32_e32 v23, s57 3950; GCN-HSA-NEXT: v_mov_b32_e32 v1, s56 3951; GCN-HSA-NEXT: v_mov_b32_e32 v2, s39 3952; GCN-HSA-NEXT: v_mov_b32_e32 v4, s36 3953; GCN-HSA-NEXT: v_mov_b32_e32 v3, s55 3954; GCN-HSA-NEXT: v_mov_b32_e32 v5, s54 3955; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3956; GCN-HSA-NEXT: flat_store_dwordx4 v[26:27], v[8:11] 3957; GCN-HSA-NEXT: v_mov_b32_e32 v6, s37 3958; GCN-HSA-NEXT: v_mov_b32_e32 v8, s30 3959; GCN-HSA-NEXT: flat_store_dwordx4 v[28:29], v[12:15] 3960; GCN-HSA-NEXT: v_mov_b32_e32 v7, s53 3961; GCN-HSA-NEXT: v_mov_b32_e32 v12, s28 3962; GCN-HSA-NEXT: v_mov_b32_e32 v9, s52 3963; GCN-HSA-NEXT: v_mov_b32_e32 v10, s31 3964; GCN-HSA-NEXT: v_mov_b32_e32 v11, s35 3965; GCN-HSA-NEXT: v_mov_b32_e32 v13, s34 3966; GCN-HSA-NEXT: flat_store_dwordx4 v[32:33], v[20:23] 3967; GCN-HSA-NEXT: v_mov_b32_e32 v14, s29 3968; GCN-HSA-NEXT: v_mov_b32_e32 v15, s33 3969; GCN-HSA-NEXT: flat_store_dwordx4 v[24:25], v[0:3] 3970; GCN-HSA-NEXT: flat_store_dwordx4 v[34:35], v[4:7] 3971; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[8:11] 3972; GCN-HSA-NEXT: flat_store_dwordx4 v[18:19], v[12:15] 3973; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 3974; GCN-HSA-NEXT: s_sext_i32_i16 s27, s27 3975; GCN-HSA-NEXT: s_sext_i32_i16 s26, s26 3976; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 3977; GCN-HSA-NEXT: s_add_u32 s2, s0, 64 3978; GCN-HSA-NEXT: v_mov_b32_e32 v0, s26 3979; GCN-HSA-NEXT: v_mov_b32_e32 v1, s25 3980; GCN-HSA-NEXT: v_mov_b32_e32 v2, s27 3981; GCN-HSA-NEXT: v_mov_b32_e32 v3, s24 3982; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3983; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 3984; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 3985; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 3986; GCN-HSA-NEXT: s_add_u32 s2, s0, 48 3987; GCN-HSA-NEXT: v_mov_b32_e32 v0, s23 3988; GCN-HSA-NEXT: v_mov_b32_e32 v1, s21 3989; GCN-HSA-NEXT: v_mov_b32_e32 v2, s22 3990; GCN-HSA-NEXT: v_mov_b32_e32 v3, s20 3991; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3992; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 3993; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 3994; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 3995; GCN-HSA-NEXT: s_add_u32 s2, s0, 32 3996; GCN-HSA-NEXT: v_mov_b32_e32 v0, s19 3997; GCN-HSA-NEXT: v_mov_b32_e32 v1, s17 3998; GCN-HSA-NEXT: v_mov_b32_e32 v2, s18 3999; GCN-HSA-NEXT: v_mov_b32_e32 v3, s16 4000; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4001; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 4002; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 4003; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 4004; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 4005; GCN-HSA-NEXT: v_mov_b32_e32 v0, s15 4006; GCN-HSA-NEXT: v_mov_b32_e32 v1, s13 4007; GCN-HSA-NEXT: v_mov_b32_e32 v2, s14 4008; GCN-HSA-NEXT: v_mov_b32_e32 v3, s12 4009; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4010; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 4011; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 4012; GCN-HSA-NEXT: v_mov_b32_e32 v0, s11 4013; GCN-HSA-NEXT: v_mov_b32_e32 v1, s9 4014; GCN-HSA-NEXT: v_mov_b32_e32 v2, s10 4015; GCN-HSA-NEXT: v_mov_b32_e32 v3, s8 4016; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 4017; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 4018; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 4019; GCN-HSA-NEXT: v_mov_b32_e32 v0, s7 4020; GCN-HSA-NEXT: v_mov_b32_e32 v1, s5 4021; GCN-HSA-NEXT: v_mov_b32_e32 v2, s6 4022; GCN-HSA-NEXT: v_mov_b32_e32 v3, s4 4023; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 4024; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 4025; GCN-HSA-NEXT: s_endpgm 4026; 4027; GCN-NOHSA-VI-LABEL: constant_sextload_v64i16_to_v64i32: 4028; GCN-NOHSA-VI: ; %bb.0: 4029; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[36:39], s[0:1], 0x24 4030; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 4031; GCN-NOHSA-VI-NEXT: s_load_dwordx16 s[0:15], s[38:39], 0x40 4032; GCN-NOHSA-VI-NEXT: s_load_dwordx16 s[16:31], s[38:39], 0x0 4033; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 4034; GCN-NOHSA-VI-NEXT: s_ashr_i32 s69, s15, 16 4035; GCN-NOHSA-VI-NEXT: s_ashr_i32 s70, s14, 16 4036; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s15, s15 4037; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s14, s14 4038; GCN-NOHSA-VI-NEXT: s_ashr_i32 s51, s1, 16 4039; GCN-NOHSA-VI-NEXT: s_ashr_i32 s52, s0, 16 4040; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s53, s1 4041; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s54, s0 4042; GCN-NOHSA-VI-NEXT: s_ashr_i32 s55, s3, 16 4043; GCN-NOHSA-VI-NEXT: s_ashr_i32 s56, s2, 16 4044; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s57, s3 4045; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s58, s2 4046; GCN-NOHSA-VI-NEXT: s_ashr_i32 s67, s13, 16 4047; GCN-NOHSA-VI-NEXT: s_ashr_i32 s68, s12, 16 4048; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s13, s13 4049; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s12, s12 4050; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 4051; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 4052; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s36 4053; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s37 4054; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s14 4055; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s70 4056; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s15 4057; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s69 4058; GCN-NOHSA-VI-NEXT: s_ashr_i32 s65, s11, 16 4059; GCN-NOHSA-VI-NEXT: s_ashr_i32 s66, s10, 16 4060; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s11, s11 4061; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s10, s10 4062; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240 4063; GCN-NOHSA-VI-NEXT: s_ashr_i32 s63, s9, 16 4064; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s12 4065; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s68 4066; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s13 4067; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s67 4068; GCN-NOHSA-VI-NEXT: s_ashr_i32 s64, s8, 16 4069; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s9, s9 4070; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s8, s8 4071; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:224 4072; GCN-NOHSA-VI-NEXT: s_ashr_i32 s61, s7, 16 4073; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s10 4074; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s66 4075; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s11 4076; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s65 4077; GCN-NOHSA-VI-NEXT: s_ashr_i32 s62, s6, 16 4078; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s7, s7 4079; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s6, s6 4080; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:208 4081; GCN-NOHSA-VI-NEXT: s_ashr_i32 s59, s5, 16 4082; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s8 4083; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s64 4084; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s9 4085; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s63 4086; GCN-NOHSA-VI-NEXT: s_ashr_i32 s60, s4, 16 4087; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s5, s5 4088; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s4, s4 4089; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:192 4090; GCN-NOHSA-VI-NEXT: s_ashr_i32 s49, s31, 16 4091; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s6 4092; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s62 4093; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s7 4094; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s61 4095; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:176 4096; GCN-NOHSA-VI-NEXT: s_ashr_i32 s50, s30, 16 4097; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s4 4098; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s60 4099; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s5 4100; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s59 4101; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:160 4102; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s31, s31 4103; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s58 4104; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s56 4105; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s57 4106; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s55 4107; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s30, s30 4108; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:144 4109; GCN-NOHSA-VI-NEXT: s_ashr_i32 s47, s29, 16 4110; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s54 4111; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s52 4112; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s53 4113; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s51 4114; GCN-NOHSA-VI-NEXT: s_ashr_i32 s48, s28, 16 4115; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s29, s29 4116; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s28, s28 4117; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:128 4118; GCN-NOHSA-VI-NEXT: s_ashr_i32 s45, s27, 16 4119; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s30 4120; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s50 4121; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s31 4122; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s49 4123; GCN-NOHSA-VI-NEXT: s_ashr_i32 s46, s26, 16 4124; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s27, s27 4125; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s26, s26 4126; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112 4127; GCN-NOHSA-VI-NEXT: s_ashr_i32 s43, s25, 16 4128; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s28 4129; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s48 4130; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s29 4131; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s47 4132; GCN-NOHSA-VI-NEXT: s_ashr_i32 s44, s24, 16 4133; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s25, s25 4134; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s24, s24 4135; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96 4136; GCN-NOHSA-VI-NEXT: s_ashr_i32 s41, s23, 16 4137; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s26 4138; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s46 4139; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s27 4140; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s45 4141; GCN-NOHSA-VI-NEXT: s_ashr_i32 s42, s22, 16 4142; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s23, s23 4143; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s22, s22 4144; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80 4145; GCN-NOHSA-VI-NEXT: s_ashr_i32 s39, s21, 16 4146; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s24 4147; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s44 4148; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s25 4149; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s43 4150; GCN-NOHSA-VI-NEXT: s_ashr_i32 s40, s20, 16 4151; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s21, s21 4152; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s20, s20 4153; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64 4154; GCN-NOHSA-VI-NEXT: s_ashr_i32 s35, s19, 16 4155; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s22 4156; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s42 4157; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s23 4158; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s41 4159; GCN-NOHSA-VI-NEXT: s_ashr_i32 s38, s18, 16 4160; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s19, s19 4161; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s18, s18 4162; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 4163; GCN-NOHSA-VI-NEXT: s_ashr_i32 s33, s17, 16 4164; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s20 4165; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s40 4166; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s21 4167; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s39 4168; GCN-NOHSA-VI-NEXT: s_ashr_i32 s34, s16, 16 4169; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s17, s17 4170; GCN-NOHSA-VI-NEXT: s_sext_i32_i16 s16, s16 4171; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 4172; GCN-NOHSA-VI-NEXT: s_nop 0 4173; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s18 4174; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s38 4175; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s19 4176; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s35 4177; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 4178; GCN-NOHSA-VI-NEXT: s_nop 0 4179; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s16 4180; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s34 4181; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s17 4182; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s33 4183; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 4184; GCN-NOHSA-VI-NEXT: s_endpgm 4185; 4186; EG-LABEL: constant_sextload_v64i16_to_v64i32: 4187; EG: ; %bb.0: 4188; EG-NEXT: ALU 17, @38, KC0[CB0:0-32], KC1[] 4189; EG-NEXT: TEX 7 @22 4190; EG-NEXT: ALU 75, @56, KC0[CB0:0-32], KC1[] 4191; EG-NEXT: ALU 71, @132, KC0[CB0:0-32], KC1[] 4192; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T66.XYZW, T48.X, 0 4193; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T47.XYZW, T41.X, 0 4194; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T65.XYZW, T56.X, 0 4195; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T46.XYZW, T55.X, 0 4196; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T64.XYZW, T54.X, 0 4197; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T45.XYZW, T53.X, 0 4198; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T63.XYZW, T52.X, 0 4199; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T43.XYZW, T51.X, 0 4200; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T62.XYZW, T50.X, 0 4201; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T42.XYZW, T49.X, 0 4202; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T61.XYZW, T40.X, 0 4203; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T44.XYZW, T39.X, 0 4204; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T60.XYZW, T38.X, 0 4205; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T59.XYZW, T37.X, 0 4206; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T58.XYZW, T36.X, 0 4207; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T57.XYZW, T35.X, 1 4208; EG-NEXT: CF_END 4209; EG-NEXT: PAD 4210; EG-NEXT: Fetch clause starting at 22: 4211; EG-NEXT: VTX_READ_128 T42.XYZW, T41.X, 16, #1 4212; EG-NEXT: VTX_READ_128 T43.XYZW, T41.X, 32, #1 4213; EG-NEXT: VTX_READ_128 T44.XYZW, T41.X, 0, #1 4214; EG-NEXT: VTX_READ_128 T45.XYZW, T41.X, 48, #1 4215; EG-NEXT: VTX_READ_128 T46.XYZW, T41.X, 64, #1 4216; EG-NEXT: VTX_READ_128 T47.XYZW, T41.X, 80, #1 4217; EG-NEXT: VTX_READ_128 T48.XYZW, T41.X, 96, #1 4218; EG-NEXT: VTX_READ_128 T41.XYZW, T41.X, 112, #1 4219; EG-NEXT: ALU clause starting at 38: 4220; EG-NEXT: LSHR T35.X, KC0[2].Y, literal.x, 4221; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4222; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4223; EG-NEXT: LSHR T36.X, PV.W, literal.x, 4224; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4225; EG-NEXT: 2(2.802597e-45), 32(4.484155e-44) 4226; EG-NEXT: LSHR T37.X, PV.W, literal.x, 4227; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4228; EG-NEXT: 2(2.802597e-45), 48(6.726233e-44) 4229; EG-NEXT: LSHR T38.X, PV.W, literal.x, 4230; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4231; EG-NEXT: 2(2.802597e-45), 64(8.968310e-44) 4232; EG-NEXT: LSHR T39.X, PV.W, literal.x, 4233; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4234; EG-NEXT: 2(2.802597e-45), 80(1.121039e-43) 4235; EG-NEXT: LSHR T40.X, PV.W, literal.x, 4236; EG-NEXT: MOV * T41.X, KC0[2].Z, 4237; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 4238; EG-NEXT: ALU clause starting at 56: 4239; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 4240; EG-NEXT: 96(1.345247e-43), 0(0.000000e+00) 4241; EG-NEXT: LSHR T49.X, PV.W, literal.x, 4242; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4243; EG-NEXT: 2(2.802597e-45), 112(1.569454e-43) 4244; EG-NEXT: LSHR T50.X, PV.W, literal.x, 4245; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4246; EG-NEXT: 2(2.802597e-45), 128(1.793662e-43) 4247; EG-NEXT: LSHR T51.X, PV.W, literal.x, 4248; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4249; EG-NEXT: 2(2.802597e-45), 144(2.017870e-43) 4250; EG-NEXT: LSHR T52.X, PV.W, literal.x, 4251; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4252; EG-NEXT: 2(2.802597e-45), 160(2.242078e-43) 4253; EG-NEXT: LSHR T53.X, PV.W, literal.x, 4254; EG-NEXT: LSHR T0.Y, T41.W, literal.y, 4255; EG-NEXT: LSHR T0.Z, T41.Y, literal.y, 4256; EG-NEXT: LSHR T0.W, T48.W, literal.y, BS:VEC_120/SCL_212 4257; EG-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 4258; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4259; EG-NEXT: 176(2.466285e-43), 0(0.000000e+00) 4260; EG-NEXT: LSHR T54.X, PS, literal.x, 4261; EG-NEXT: LSHR T1.Y, T48.Y, literal.y, 4262; EG-NEXT: LSHR T1.Z, T47.W, literal.y, 4263; EG-NEXT: LSHR T1.W, T47.Y, literal.y, BS:VEC_120/SCL_212 4264; EG-NEXT: ADD_INT * T2.W, KC0[2].Y, literal.z, 4265; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4266; EG-NEXT: 192(2.690493e-43), 0(0.000000e+00) 4267; EG-NEXT: LSHR T55.X, PS, literal.x, 4268; EG-NEXT: LSHR T2.Y, T46.W, literal.y, 4269; EG-NEXT: LSHR T2.Z, T46.Y, literal.y, 4270; EG-NEXT: LSHR T2.W, T45.W, literal.y, BS:VEC_120/SCL_212 4271; EG-NEXT: ADD_INT * T3.W, KC0[2].Y, literal.z, 4272; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4273; EG-NEXT: 208(2.914701e-43), 0(0.000000e+00) 4274; EG-NEXT: LSHR T56.X, PS, literal.x, 4275; EG-NEXT: LSHR T3.Y, T45.Y, literal.y, 4276; EG-NEXT: BFE_INT T57.Z, T44.Y, 0.0, literal.y, BS:VEC_120/SCL_212 4277; EG-NEXT: LSHR T3.W, T43.W, literal.y, 4278; EG-NEXT: LSHR * T4.W, T43.Y, literal.y, 4279; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4280; EG-NEXT: BFE_INT T57.X, T44.X, 0.0, literal.x, 4281; EG-NEXT: LSHR T4.Y, T42.W, literal.x, 4282; EG-NEXT: BFE_INT T58.Z, T44.W, 0.0, literal.x, BS:VEC_120/SCL_212 4283; EG-NEXT: LSHR T5.W, T42.Y, literal.x, 4284; EG-NEXT: LSHR * T6.W, T44.Y, literal.x, 4285; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4286; EG-NEXT: BFE_INT T58.X, T44.Z, 0.0, literal.x, 4287; EG-NEXT: LSHR T5.Y, T44.W, literal.x, 4288; EG-NEXT: BFE_INT T59.Z, T42.Y, 0.0, literal.x, 4289; EG-NEXT: BFE_INT T57.W, PS, 0.0, literal.x, 4290; EG-NEXT: LSHR * T6.W, T44.X, literal.x, 4291; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4292; EG-NEXT: BFE_INT T59.X, T42.X, 0.0, literal.x, 4293; EG-NEXT: BFE_INT T57.Y, PS, 0.0, literal.x, 4294; EG-NEXT: BFE_INT T60.Z, T42.W, 0.0, literal.x, 4295; EG-NEXT: BFE_INT T58.W, PV.Y, 0.0, literal.x, 4296; EG-NEXT: LSHR * T6.W, T44.Z, literal.x, 4297; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4298; EG-NEXT: BFE_INT T60.X, T42.Z, 0.0, literal.x, 4299; EG-NEXT: BFE_INT T58.Y, PS, 0.0, literal.x, 4300; EG-NEXT: BFE_INT T44.Z, T43.Y, 0.0, literal.x, 4301; EG-NEXT: BFE_INT T59.W, T5.W, 0.0, literal.x, 4302; EG-NEXT: LSHR * T5.W, T42.X, literal.x, 4303; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4304; EG-NEXT: BFE_INT T44.X, T43.X, 0.0, literal.x, 4305; EG-NEXT: BFE_INT T59.Y, PS, 0.0, literal.x, 4306; EG-NEXT: BFE_INT T61.Z, T43.W, 0.0, literal.x, 4307; EG-NEXT: BFE_INT T60.W, T4.Y, 0.0, literal.x, 4308; EG-NEXT: LSHR * T5.W, T42.Z, literal.x, 4309; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4310; EG-NEXT: BFE_INT T61.X, T43.Z, 0.0, literal.x, 4311; EG-NEXT: BFE_INT T60.Y, PS, 0.0, literal.x, 4312; EG-NEXT: BFE_INT T42.Z, T45.Y, 0.0, literal.x, 4313; EG-NEXT: BFE_INT * T44.W, T4.W, 0.0, literal.x, 4314; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4315; EG-NEXT: ALU clause starting at 132: 4316; EG-NEXT: LSHR * T4.W, T43.X, literal.x, 4317; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4318; EG-NEXT: BFE_INT T42.X, T45.X, 0.0, literal.x, 4319; EG-NEXT: BFE_INT T44.Y, PV.W, 0.0, literal.x, 4320; EG-NEXT: BFE_INT T62.Z, T45.W, 0.0, literal.x, 4321; EG-NEXT: BFE_INT T61.W, T3.W, 0.0, literal.x, BS:VEC_120/SCL_212 4322; EG-NEXT: LSHR * T3.W, T43.Z, literal.x, 4323; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4324; EG-NEXT: BFE_INT T62.X, T45.Z, 0.0, literal.x, 4325; EG-NEXT: BFE_INT T61.Y, PS, 0.0, literal.x, 4326; EG-NEXT: BFE_INT T43.Z, T46.Y, 0.0, literal.x, 4327; EG-NEXT: BFE_INT T42.W, T3.Y, 0.0, literal.x, BS:VEC_120/SCL_212 4328; EG-NEXT: LSHR * T3.W, T45.X, literal.x, 4329; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4330; EG-NEXT: BFE_INT T43.X, T46.X, 0.0, literal.x, 4331; EG-NEXT: BFE_INT T42.Y, PS, 0.0, literal.x, 4332; EG-NEXT: BFE_INT T63.Z, T46.W, 0.0, literal.x, 4333; EG-NEXT: BFE_INT T62.W, T2.W, 0.0, literal.x, BS:VEC_120/SCL_212 4334; EG-NEXT: LSHR * T2.W, T45.Z, literal.x, 4335; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4336; EG-NEXT: BFE_INT T63.X, T46.Z, 0.0, literal.x, 4337; EG-NEXT: BFE_INT T62.Y, PS, 0.0, literal.x, 4338; EG-NEXT: BFE_INT T45.Z, T47.Y, 0.0, literal.x, 4339; EG-NEXT: BFE_INT T43.W, T2.Z, 0.0, literal.x, BS:VEC_120/SCL_212 4340; EG-NEXT: LSHR * T2.W, T46.X, literal.x, 4341; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4342; EG-NEXT: BFE_INT T45.X, T47.X, 0.0, literal.x, 4343; EG-NEXT: BFE_INT T43.Y, PS, 0.0, literal.x, 4344; EG-NEXT: BFE_INT T64.Z, T47.W, 0.0, literal.x, 4345; EG-NEXT: BFE_INT T63.W, T2.Y, 0.0, literal.x, 4346; EG-NEXT: LSHR * T2.W, T46.Z, literal.x, 4347; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4348; EG-NEXT: BFE_INT T64.X, T47.Z, 0.0, literal.x, 4349; EG-NEXT: BFE_INT T63.Y, PS, 0.0, literal.x, 4350; EG-NEXT: BFE_INT T46.Z, T48.Y, 0.0, literal.x, 4351; EG-NEXT: BFE_INT T45.W, T1.W, 0.0, literal.x, 4352; EG-NEXT: LSHR * T1.W, T47.X, literal.x, 4353; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4354; EG-NEXT: BFE_INT T46.X, T48.X, 0.0, literal.x, 4355; EG-NEXT: BFE_INT T45.Y, PS, 0.0, literal.x, 4356; EG-NEXT: BFE_INT T65.Z, T48.W, 0.0, literal.x, 4357; EG-NEXT: BFE_INT T64.W, T1.Z, 0.0, literal.x, 4358; EG-NEXT: LSHR * T1.W, T47.Z, literal.x, 4359; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4360; EG-NEXT: BFE_INT T65.X, T48.Z, 0.0, literal.x, 4361; EG-NEXT: BFE_INT T64.Y, PS, 0.0, literal.x, 4362; EG-NEXT: BFE_INT T47.Z, T41.Y, 0.0, literal.x, 4363; EG-NEXT: BFE_INT T46.W, T1.Y, 0.0, literal.x, BS:VEC_120/SCL_212 4364; EG-NEXT: LSHR * T1.W, T48.X, literal.x, 4365; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4366; EG-NEXT: BFE_INT T47.X, T41.X, 0.0, literal.x, 4367; EG-NEXT: BFE_INT T46.Y, PS, 0.0, literal.x, 4368; EG-NEXT: BFE_INT T66.Z, T41.W, 0.0, literal.x, 4369; EG-NEXT: BFE_INT T65.W, T0.W, 0.0, literal.x, BS:VEC_120/SCL_212 4370; EG-NEXT: LSHR * T0.W, T48.Z, literal.x, 4371; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4372; EG-NEXT: BFE_INT T66.X, T41.Z, 0.0, literal.x, 4373; EG-NEXT: BFE_INT T65.Y, PS, 0.0, literal.x, 4374; EG-NEXT: LSHR T1.Z, T41.X, literal.x, 4375; EG-NEXT: BFE_INT T47.W, T0.Z, 0.0, literal.x, BS:VEC_120/SCL_212 4376; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4377; EG-NEXT: 16(2.242078e-44), 224(3.138909e-43) 4378; EG-NEXT: LSHR T41.X, PS, literal.x, 4379; EG-NEXT: BFE_INT T47.Y, PV.Z, 0.0, literal.y, 4380; EG-NEXT: LSHR T0.Z, T41.Z, literal.y, 4381; EG-NEXT: BFE_INT T66.W, T0.Y, 0.0, literal.y, 4382; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 4383; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4384; EG-NEXT: 240(3.363116e-43), 0(0.000000e+00) 4385; EG-NEXT: LSHR T48.X, PS, literal.x, 4386; EG-NEXT: BFE_INT * T66.Y, PV.Z, 0.0, literal.y, 4387; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4388 %load = load <64 x i16>, <64 x i16> addrspace(4)* %in 4389 %ext = sext <64 x i16> %load to <64 x i32> 4390 store <64 x i32> %ext, <64 x i32> addrspace(1)* %out 4391 ret void 4392} 4393 4394define amdgpu_kernel void @constant_zextload_i16_to_i64(i64 addrspace(1)* %out, i16 addrspace(4)* %in) #0 { 4395; GCN-NOHSA-SI-LABEL: constant_zextload_i16_to_i64: 4396; GCN-NOHSA-SI: ; %bb.0: 4397; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 4398; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 4399; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 4400; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 4401; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 4402; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 4403; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 4404; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 4405; GCN-NOHSA-SI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 4406; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 4407; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 4408; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, 0 4409; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 4410; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 4411; GCN-NOHSA-SI-NEXT: s_endpgm 4412; 4413; GCN-HSA-LABEL: constant_zextload_i16_to_i64: 4414; GCN-HSA: ; %bb.0: 4415; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 4416; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 4417; GCN-HSA-NEXT: v_mov_b32_e32 v2, s2 4418; GCN-HSA-NEXT: v_mov_b32_e32 v3, s3 4419; GCN-HSA-NEXT: flat_load_ushort v2, v[2:3] 4420; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 4421; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 4422; GCN-HSA-NEXT: v_mov_b32_e32 v3, 0 4423; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 4424; GCN-HSA-NEXT: flat_store_dwordx2 v[0:1], v[2:3] 4425; GCN-HSA-NEXT: s_endpgm 4426; 4427; GCN-NOHSA-VI-LABEL: constant_zextload_i16_to_i64: 4428; GCN-NOHSA-VI: ; %bb.0: 4429; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 4430; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 4431; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 4432; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s2 4433; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s3 4434; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 4435; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s6 4436; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s7 4437; GCN-NOHSA-VI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 4438; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 4439; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 4440; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, 0 4441; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 4442; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, 0xffff, v0 4443; GCN-NOHSA-VI-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 0 4444; GCN-NOHSA-VI-NEXT: s_endpgm 4445; 4446; EG-LABEL: constant_zextload_i16_to_i64: 4447; EG: ; %bb.0: 4448; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 4449; EG-NEXT: TEX 0 @6 4450; EG-NEXT: ALU 2, @9, KC0[CB0:0-32], KC1[] 4451; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1 4452; EG-NEXT: CF_END 4453; EG-NEXT: PAD 4454; EG-NEXT: Fetch clause starting at 6: 4455; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 4456; EG-NEXT: ALU clause starting at 8: 4457; EG-NEXT: MOV * T0.X, KC0[2].Z, 4458; EG-NEXT: ALU clause starting at 9: 4459; EG-NEXT: MOV * T0.Y, 0.0, 4460; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 4461; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 4462 %a = load i16, i16 addrspace(4)* %in 4463 %ext = zext i16 %a to i64 4464 store i64 %ext, i64 addrspace(1)* %out 4465 ret void 4466} 4467 4468; FIXME: Need to optimize this sequence to avoid extra bfe: 4469; t28: i32,ch = load<LD2[%in(addrspace=1)], anyext from i16> t12, t27, undef:i64 4470; t31: i64 = any_extend t28 4471; t33: i64 = sign_extend_inreg t31, ValueType:ch:i16 4472; TODO: These could be expanded earlier using ASHR 15 4473define amdgpu_kernel void @constant_sextload_i16_to_i64(i64 addrspace(1)* %out, i16 addrspace(4)* %in) #0 { 4474; GCN-NOHSA-SI-LABEL: constant_sextload_i16_to_i64: 4475; GCN-NOHSA-SI: ; %bb.0: 4476; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 4477; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 4478; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 4479; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 4480; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 4481; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 4482; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 4483; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 4484; GCN-NOHSA-SI-NEXT: buffer_load_sshort v0, off, s[8:11], 0 4485; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 4486; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 4487; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 4488; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 4489; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 4490; GCN-NOHSA-SI-NEXT: s_endpgm 4491; 4492; GCN-HSA-LABEL: constant_sextload_i16_to_i64: 4493; GCN-HSA: ; %bb.0: 4494; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 4495; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 4496; GCN-HSA-NEXT: v_mov_b32_e32 v2, s2 4497; GCN-HSA-NEXT: v_mov_b32_e32 v3, s3 4498; GCN-HSA-NEXT: flat_load_sshort v2, v[2:3] 4499; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 4500; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 4501; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 4502; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 31, v2 4503; GCN-HSA-NEXT: flat_store_dwordx2 v[0:1], v[2:3] 4504; GCN-HSA-NEXT: s_endpgm 4505; 4506; GCN-NOHSA-VI-LABEL: constant_sextload_i16_to_i64: 4507; GCN-NOHSA-VI: ; %bb.0: 4508; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 4509; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 4510; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 4511; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 4512; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 4513; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 4514; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s6 4515; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s7 4516; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, s2 4517; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, s3 4518; GCN-NOHSA-VI-NEXT: buffer_load_ushort v0, off, s[4:7], 0 4519; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 4520; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v0, 0, 16 4521; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 4522; GCN-NOHSA-VI-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 0 4523; GCN-NOHSA-VI-NEXT: s_endpgm 4524; 4525; EG-LABEL: constant_sextload_i16_to_i64: 4526; EG: ; %bb.0: 4527; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 4528; EG-NEXT: TEX 0 @6 4529; EG-NEXT: ALU 4, @9, KC0[CB0:0-32], KC1[] 4530; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1 4531; EG-NEXT: CF_END 4532; EG-NEXT: PAD 4533; EG-NEXT: Fetch clause starting at 6: 4534; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 4535; EG-NEXT: ALU clause starting at 8: 4536; EG-NEXT: MOV * T0.X, KC0[2].Z, 4537; EG-NEXT: ALU clause starting at 9: 4538; EG-NEXT: BFE_INT T0.X, T0.X, 0.0, literal.x, 4539; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.y, 4540; EG-NEXT: 16(2.242078e-44), 2(2.802597e-45) 4541; EG-NEXT: ASHR * T0.Y, PV.X, literal.x, 4542; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 4543 %a = load i16, i16 addrspace(4)* %in 4544 %ext = sext i16 %a to i64 4545 store i64 %ext, i64 addrspace(1)* %out 4546 ret void 4547} 4548 4549define amdgpu_kernel void @constant_zextload_v1i16_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i16> addrspace(4)* %in) #0 { 4550; GCN-NOHSA-SI-LABEL: constant_zextload_v1i16_to_v1i64: 4551; GCN-NOHSA-SI: ; %bb.0: 4552; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 4553; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 4554; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 4555; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 4556; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 4557; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 4558; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 4559; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 4560; GCN-NOHSA-SI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 4561; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 4562; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 4563; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, 0 4564; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 4565; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 4566; GCN-NOHSA-SI-NEXT: s_endpgm 4567; 4568; GCN-HSA-LABEL: constant_zextload_v1i16_to_v1i64: 4569; GCN-HSA: ; %bb.0: 4570; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 4571; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 4572; GCN-HSA-NEXT: v_mov_b32_e32 v2, s2 4573; GCN-HSA-NEXT: v_mov_b32_e32 v3, s3 4574; GCN-HSA-NEXT: flat_load_ushort v2, v[2:3] 4575; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 4576; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 4577; GCN-HSA-NEXT: v_mov_b32_e32 v3, 0 4578; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 4579; GCN-HSA-NEXT: flat_store_dwordx2 v[0:1], v[2:3] 4580; GCN-HSA-NEXT: s_endpgm 4581; 4582; GCN-NOHSA-VI-LABEL: constant_zextload_v1i16_to_v1i64: 4583; GCN-NOHSA-VI: ; %bb.0: 4584; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 4585; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 4586; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 4587; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s2 4588; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s3 4589; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 4590; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s6 4591; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s7 4592; GCN-NOHSA-VI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 4593; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 4594; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 4595; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, 0 4596; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 4597; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, 0xffff, v0 4598; GCN-NOHSA-VI-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 0 4599; GCN-NOHSA-VI-NEXT: s_endpgm 4600; 4601; EG-LABEL: constant_zextload_v1i16_to_v1i64: 4602; EG: ; %bb.0: 4603; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 4604; EG-NEXT: TEX 0 @6 4605; EG-NEXT: ALU 2, @9, KC0[CB0:0-32], KC1[] 4606; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1 4607; EG-NEXT: CF_END 4608; EG-NEXT: PAD 4609; EG-NEXT: Fetch clause starting at 6: 4610; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 4611; EG-NEXT: ALU clause starting at 8: 4612; EG-NEXT: MOV * T0.X, KC0[2].Z, 4613; EG-NEXT: ALU clause starting at 9: 4614; EG-NEXT: MOV * T0.Y, 0.0, 4615; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 4616; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 4617 %load = load <1 x i16>, <1 x i16> addrspace(4)* %in 4618 %ext = zext <1 x i16> %load to <1 x i64> 4619 store <1 x i64> %ext, <1 x i64> addrspace(1)* %out 4620 ret void 4621} 4622 4623define amdgpu_kernel void @constant_sextload_v1i16_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i16> addrspace(4)* %in) #0 { 4624; GCN-NOHSA-SI-LABEL: constant_sextload_v1i16_to_v1i64: 4625; GCN-NOHSA-SI: ; %bb.0: 4626; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 4627; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 4628; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 4629; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 4630; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 4631; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 4632; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 4633; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 4634; GCN-NOHSA-SI-NEXT: buffer_load_sshort v0, off, s[8:11], 0 4635; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 4636; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 4637; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 4638; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 4639; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 4640; GCN-NOHSA-SI-NEXT: s_endpgm 4641; 4642; GCN-HSA-LABEL: constant_sextload_v1i16_to_v1i64: 4643; GCN-HSA: ; %bb.0: 4644; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 4645; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 4646; GCN-HSA-NEXT: v_mov_b32_e32 v2, s2 4647; GCN-HSA-NEXT: v_mov_b32_e32 v3, s3 4648; GCN-HSA-NEXT: flat_load_sshort v2, v[2:3] 4649; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 4650; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 4651; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 4652; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 31, v2 4653; GCN-HSA-NEXT: flat_store_dwordx2 v[0:1], v[2:3] 4654; GCN-HSA-NEXT: s_endpgm 4655; 4656; GCN-NOHSA-VI-LABEL: constant_sextload_v1i16_to_v1i64: 4657; GCN-NOHSA-VI: ; %bb.0: 4658; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 4659; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 4660; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 4661; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 4662; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 4663; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 4664; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s6 4665; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s7 4666; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, s2 4667; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, s3 4668; GCN-NOHSA-VI-NEXT: buffer_load_ushort v0, off, s[4:7], 0 4669; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 4670; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v0, 0, 16 4671; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 4672; GCN-NOHSA-VI-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 0 4673; GCN-NOHSA-VI-NEXT: s_endpgm 4674; 4675; EG-LABEL: constant_sextload_v1i16_to_v1i64: 4676; EG: ; %bb.0: 4677; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 4678; EG-NEXT: TEX 0 @6 4679; EG-NEXT: ALU 4, @9, KC0[CB0:0-32], KC1[] 4680; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1 4681; EG-NEXT: CF_END 4682; EG-NEXT: PAD 4683; EG-NEXT: Fetch clause starting at 6: 4684; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 4685; EG-NEXT: ALU clause starting at 8: 4686; EG-NEXT: MOV * T0.X, KC0[2].Z, 4687; EG-NEXT: ALU clause starting at 9: 4688; EG-NEXT: BFE_INT T0.X, T0.X, 0.0, literal.x, 4689; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.y, 4690; EG-NEXT: 16(2.242078e-44), 2(2.802597e-45) 4691; EG-NEXT: ASHR * T0.Y, PV.X, literal.x, 4692; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 4693 %load = load <1 x i16>, <1 x i16> addrspace(4)* %in 4694 %ext = sext <1 x i16> %load to <1 x i64> 4695 store <1 x i64> %ext, <1 x i64> addrspace(1)* %out 4696 ret void 4697} 4698 4699define amdgpu_kernel void @constant_zextload_v2i16_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i16> addrspace(4)* %in) #0 { 4700; GCN-NOHSA-SI-LABEL: constant_zextload_v2i16_to_v2i64: 4701; GCN-NOHSA-SI: ; %bb.0: 4702; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 4703; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 4704; GCN-NOHSA-SI-NEXT: s_load_dword s2, s[2:3], 0x0 4705; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 4706; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, 0 4707; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 4708; GCN-NOHSA-SI-NEXT: s_lshr_b32 s4, s2, 16 4709; GCN-NOHSA-SI-NEXT: s_and_b32 s5, s2, 0xffff 4710; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 4711; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, v1 4712; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s5 4713; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s4 4714; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 4715; GCN-NOHSA-SI-NEXT: s_endpgm 4716; 4717; GCN-HSA-LABEL: constant_zextload_v2i16_to_v2i64: 4718; GCN-HSA: ; %bb.0: 4719; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 4720; GCN-HSA-NEXT: v_mov_b32_e32 v1, 0 4721; GCN-HSA-NEXT: v_mov_b32_e32 v3, v1 4722; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 4723; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 4724; GCN-HSA-NEXT: s_load_dword s0, s[2:3], 0x0 4725; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 4726; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 4727; GCN-HSA-NEXT: s_lshr_b32 s1, s0, 16 4728; GCN-HSA-NEXT: s_and_b32 s0, s0, 0xffff 4729; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 4730; GCN-HSA-NEXT: v_mov_b32_e32 v2, s1 4731; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 4732; GCN-HSA-NEXT: s_endpgm 4733; 4734; GCN-NOHSA-VI-LABEL: constant_zextload_v2i16_to_v2i64: 4735; GCN-NOHSA-VI: ; %bb.0: 4736; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 4737; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, 0 4738; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 4739; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 4740; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, v1 4741; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 4742; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 4743; GCN-NOHSA-VI-NEXT: s_load_dword s4, s[6:7], 0x0 4744; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 4745; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 4746; GCN-NOHSA-VI-NEXT: s_and_b32 s5, s4, 0xffff 4747; GCN-NOHSA-VI-NEXT: s_lshr_b32 s4, s4, 16 4748; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s5 4749; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s4 4750; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 4751; GCN-NOHSA-VI-NEXT: s_endpgm 4752; 4753; EG-LABEL: constant_zextload_v2i16_to_v2i64: 4754; EG: ; %bb.0: 4755; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 4756; EG-NEXT: TEX 0 @6 4757; EG-NEXT: ALU 6, @9, KC0[CB0:0-32], KC1[] 4758; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T4.XYZW, T5.X, 1 4759; EG-NEXT: CF_END 4760; EG-NEXT: PAD 4761; EG-NEXT: Fetch clause starting at 6: 4762; EG-NEXT: VTX_READ_32 T4.X, T4.X, 0, #1 4763; EG-NEXT: ALU clause starting at 8: 4764; EG-NEXT: MOV * T4.X, KC0[2].Z, 4765; EG-NEXT: ALU clause starting at 9: 4766; EG-NEXT: LSHR * T4.Z, T4.X, literal.x, 4767; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4768; EG-NEXT: AND_INT T4.X, T4.X, literal.x, 4769; EG-NEXT: MOV T4.Y, 0.0, 4770; EG-NEXT: MOV T4.W, 0.0, 4771; EG-NEXT: LSHR * T5.X, KC0[2].Y, literal.y, 4772; EG-NEXT: 65535(9.183409e-41), 2(2.802597e-45) 4773 %load = load <2 x i16>, <2 x i16> addrspace(4)* %in 4774 %ext = zext <2 x i16> %load to <2 x i64> 4775 store <2 x i64> %ext, <2 x i64> addrspace(1)* %out 4776 ret void 4777} 4778 4779define amdgpu_kernel void @constant_sextload_v2i16_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i16> addrspace(4)* %in) #0 { 4780; GCN-NOHSA-SI-LABEL: constant_sextload_v2i16_to_v2i64: 4781; GCN-NOHSA-SI: ; %bb.0: 4782; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 4783; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 4784; GCN-NOHSA-SI-NEXT: s_load_dword s2, s[2:3], 0x0 4785; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 4786; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 4787; GCN-NOHSA-SI-NEXT: s_lshr_b32 s4, s2, 16 4788; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[6:7], s[2:3], 0x100000 4789; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[4:5], s[4:5], 0x100000 4790; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 4791; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s6 4792; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s7 4793; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s4 4794; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s5 4795; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 4796; GCN-NOHSA-SI-NEXT: s_endpgm 4797; 4798; GCN-HSA-LABEL: constant_sextload_v2i16_to_v2i64: 4799; GCN-HSA: ; %bb.0: 4800; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 4801; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 4802; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 4803; GCN-HSA-NEXT: s_load_dword s0, s[2:3], 0x0 4804; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 4805; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 4806; GCN-HSA-NEXT: s_lshr_b32 s2, s0, 16 4807; GCN-HSA-NEXT: s_bfe_i64 s[0:1], s[0:1], 0x100000 4808; GCN-HSA-NEXT: s_bfe_i64 s[2:3], s[2:3], 0x100000 4809; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 4810; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 4811; GCN-HSA-NEXT: v_mov_b32_e32 v2, s2 4812; GCN-HSA-NEXT: v_mov_b32_e32 v3, s3 4813; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 4814; GCN-HSA-NEXT: s_endpgm 4815; 4816; GCN-NOHSA-VI-LABEL: constant_sextload_v2i16_to_v2i64: 4817; GCN-NOHSA-VI: ; %bb.0: 4818; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 4819; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 4820; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 4821; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 4822; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 4823; GCN-NOHSA-VI-NEXT: s_load_dword s4, s[6:7], 0x0 4824; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 4825; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 4826; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[6:7], s[4:5], 0x100000 4827; GCN-NOHSA-VI-NEXT: s_lshr_b32 s4, s4, 16 4828; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[4:5], s[4:5], 0x100000 4829; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s6 4830; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s7 4831; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s4 4832; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s5 4833; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 4834; GCN-NOHSA-VI-NEXT: s_endpgm 4835; 4836; EG-LABEL: constant_sextload_v2i16_to_v2i64: 4837; EG: ; %bb.0: 4838; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 4839; EG-NEXT: TEX 0 @6 4840; EG-NEXT: ALU 8, @9, KC0[CB0:0-32], KC1[] 4841; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T4.XYZW, T5.X, 1 4842; EG-NEXT: CF_END 4843; EG-NEXT: PAD 4844; EG-NEXT: Fetch clause starting at 6: 4845; EG-NEXT: VTX_READ_32 T4.X, T4.X, 0, #1 4846; EG-NEXT: ALU clause starting at 8: 4847; EG-NEXT: MOV * T4.X, KC0[2].Z, 4848; EG-NEXT: ALU clause starting at 9: 4849; EG-NEXT: ASHR * T4.W, T4.X, literal.x, 4850; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 4851; EG-NEXT: ASHR * T4.Z, T4.X, literal.x, 4852; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4853; EG-NEXT: BFE_INT T4.X, T4.X, 0.0, literal.x, 4854; EG-NEXT: LSHR * T5.X, KC0[2].Y, literal.y, 4855; EG-NEXT: 16(2.242078e-44), 2(2.802597e-45) 4856; EG-NEXT: ASHR * T4.Y, PV.X, literal.x, 4857; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 4858 %load = load <2 x i16>, <2 x i16> addrspace(4)* %in 4859 %ext = sext <2 x i16> %load to <2 x i64> 4860 store <2 x i64> %ext, <2 x i64> addrspace(1)* %out 4861 ret void 4862} 4863 4864define amdgpu_kernel void @constant_zextload_v4i16_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i16> addrspace(4)* %in) #0 { 4865; GCN-NOHSA-SI-LABEL: constant_zextload_v4i16_to_v4i64: 4866; GCN-NOHSA-SI: ; %bb.0: 4867; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 4868; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 4869; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 4870; GCN-NOHSA-SI-NEXT: s_load_dwordx2 s[2:3], s[2:3], 0x0 4871; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 4872; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, 0 4873; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, 0xffff 4874; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, v1 4875; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 4876; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 4877; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 4878; GCN-NOHSA-SI-NEXT: s_lshr_b32 s0, s3, 16 4879; GCN-NOHSA-SI-NEXT: s_lshr_b32 s1, s2, 16 4880; GCN-NOHSA-SI-NEXT: s_and_b32 s3, s3, s8 4881; GCN-NOHSA-SI-NEXT: s_and_b32 s2, s2, s8 4882; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s3 4883; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s0 4884; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 offset:16 4885; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 4886; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s2 4887; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s1 4888; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 4889; GCN-NOHSA-SI-NEXT: s_endpgm 4890; 4891; GCN-HSA-LABEL: constant_zextload_v4i16_to_v4i64: 4892; GCN-HSA: ; %bb.0: 4893; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 4894; GCN-HSA-NEXT: s_mov_b32 s6, 0xffff 4895; GCN-HSA-NEXT: v_mov_b32_e32 v1, 0 4896; GCN-HSA-NEXT: v_mov_b32_e32 v3, v1 4897; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 4898; GCN-HSA-NEXT: s_load_dwordx2 s[2:3], s[2:3], 0x0 4899; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 4900; GCN-HSA-NEXT: s_lshr_b32 s4, s3, 16 4901; GCN-HSA-NEXT: s_lshr_b32 s5, s2, 16 4902; GCN-HSA-NEXT: s_and_b32 s7, s2, s6 4903; GCN-HSA-NEXT: s_and_b32 s2, s3, s6 4904; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 4905; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 4906; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4907; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 4908; GCN-HSA-NEXT: v_mov_b32_e32 v2, s4 4909; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 4910; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 4911; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 4912; GCN-HSA-NEXT: v_mov_b32_e32 v0, s7 4913; GCN-HSA-NEXT: v_mov_b32_e32 v2, s5 4914; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 4915; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 4916; GCN-HSA-NEXT: s_endpgm 4917; 4918; GCN-NOHSA-VI-LABEL: constant_zextload_v4i16_to_v4i64: 4919; GCN-NOHSA-VI: ; %bb.0: 4920; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 4921; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, 0xffff 4922; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, 0 4923; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 4924; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 4925; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 4926; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 4927; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 4928; GCN-NOHSA-VI-NEXT: s_load_dwordx2 s[4:5], s[6:7], 0x0 4929; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, v1 4930; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 4931; GCN-NOHSA-VI-NEXT: s_and_b32 s7, s5, s8 4932; GCN-NOHSA-VI-NEXT: s_lshr_b32 s5, s5, 16 4933; GCN-NOHSA-VI-NEXT: s_and_b32 s6, s4, s8 4934; GCN-NOHSA-VI-NEXT: s_lshr_b32 s4, s4, 16 4935; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s7 4936; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s5 4937; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 4938; GCN-NOHSA-VI-NEXT: s_nop 0 4939; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s6 4940; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s4 4941; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 4942; GCN-NOHSA-VI-NEXT: s_endpgm 4943; 4944; EG-LABEL: constant_zextload_v4i16_to_v4i64: 4945; EG: ; %bb.0: 4946; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 4947; EG-NEXT: TEX 0 @6 4948; EG-NEXT: ALU 18, @9, KC0[CB0:0-32], KC1[] 4949; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T8.X, 0 4950; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T6.XYZW, T7.X, 1 4951; EG-NEXT: CF_END 4952; EG-NEXT: Fetch clause starting at 6: 4953; EG-NEXT: VTX_READ_64 T5.XY, T5.X, 0, #1 4954; EG-NEXT: ALU clause starting at 8: 4955; EG-NEXT: MOV * T5.X, KC0[2].Z, 4956; EG-NEXT: ALU clause starting at 9: 4957; EG-NEXT: MOV T2.X, T5.X, 4958; EG-NEXT: MOV * T3.X, T5.Y, 4959; EG-NEXT: MOV T0.Y, PV.X, 4960; EG-NEXT: MOV * T0.Z, PS, 4961; EG-NEXT: LSHR * T5.Z, PV.Z, literal.x, 4962; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4963; EG-NEXT: AND_INT T5.X, T0.Z, literal.x, 4964; EG-NEXT: MOV T5.Y, 0.0, 4965; EG-NEXT: LSHR T6.Z, T0.Y, literal.y, 4966; EG-NEXT: AND_INT * T6.X, T0.Y, literal.x, 4967; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 4968; EG-NEXT: MOV T6.Y, 0.0, 4969; EG-NEXT: MOV T5.W, 0.0, 4970; EG-NEXT: MOV * T6.W, 0.0, 4971; EG-NEXT: LSHR T7.X, KC0[2].Y, literal.x, 4972; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4973; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4974; EG-NEXT: LSHR * T8.X, PV.W, literal.x, 4975; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 4976 %load = load <4 x i16>, <4 x i16> addrspace(4)* %in 4977 %ext = zext <4 x i16> %load to <4 x i64> 4978 store <4 x i64> %ext, <4 x i64> addrspace(1)* %out 4979 ret void 4980} 4981 4982define amdgpu_kernel void @constant_sextload_v4i16_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i16> addrspace(4)* %in) #0 { 4983; GCN-NOHSA-SI-LABEL: constant_sextload_v4i16_to_v4i64: 4984; GCN-NOHSA-SI: ; %bb.0: 4985; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 4986; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 4987; GCN-NOHSA-SI-NEXT: s_load_dwordx2 s[4:5], s[2:3], 0x0 4988; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 4989; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 4990; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 4991; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, s5 4992; GCN-NOHSA-SI-NEXT: s_lshr_b32 s8, s4, 16 4993; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[10:11], s[4:5], 0x100000 4994; GCN-NOHSA-SI-NEXT: s_ashr_i64 s[4:5], s[4:5], 48 4995; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[6:7], s[6:7], 0x100000 4996; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[8:9], s[8:9], 0x100000 4997; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s6 4998; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s7 4999; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s4 5000; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s5 5001; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 5002; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 5003; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s10 5004; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s11 5005; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s8 5006; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s9 5007; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 5008; GCN-NOHSA-SI-NEXT: s_endpgm 5009; 5010; GCN-HSA-LABEL: constant_sextload_v4i16_to_v4i64: 5011; GCN-HSA: ; %bb.0: 5012; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 5013; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5014; GCN-HSA-NEXT: s_load_dwordx2 s[2:3], s[2:3], 0x0 5015; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5016; GCN-HSA-NEXT: s_mov_b32 s4, s3 5017; GCN-HSA-NEXT: s_lshr_b32 s6, s2, 16 5018; GCN-HSA-NEXT: s_bfe_i64 s[8:9], s[2:3], 0x100000 5019; GCN-HSA-NEXT: s_ashr_i64 s[2:3], s[2:3], 48 5020; GCN-HSA-NEXT: s_bfe_i64 s[6:7], s[6:7], 0x100000 5021; GCN-HSA-NEXT: s_bfe_i64 s[4:5], s[4:5], 0x100000 5022; GCN-HSA-NEXT: v_mov_b32_e32 v2, s2 5023; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 5024; GCN-HSA-NEXT: v_mov_b32_e32 v3, s3 5025; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 5026; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 5027; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 5028; GCN-HSA-NEXT: v_mov_b32_e32 v1, s5 5029; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 5030; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5031; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 5032; GCN-HSA-NEXT: v_mov_b32_e32 v0, s8 5033; GCN-HSA-NEXT: v_mov_b32_e32 v1, s9 5034; GCN-HSA-NEXT: v_mov_b32_e32 v2, s6 5035; GCN-HSA-NEXT: v_mov_b32_e32 v3, s7 5036; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 5037; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5038; GCN-HSA-NEXT: s_endpgm 5039; 5040; GCN-NOHSA-VI-LABEL: constant_sextload_v4i16_to_v4i64: 5041; GCN-NOHSA-VI: ; %bb.0: 5042; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 5043; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 5044; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 5045; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5046; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 5047; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 5048; GCN-NOHSA-VI-NEXT: s_load_dwordx2 s[4:5], s[6:7], 0x0 5049; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5050; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s5 5051; GCN-NOHSA-VI-NEXT: s_lshr_b32 s10, s5, 16 5052; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[6:7], s[4:5], 0x100000 5053; GCN-NOHSA-VI-NEXT: s_lshr_b32 s4, s4, 16 5054; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[8:9], s[8:9], 0x100000 5055; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[10:11], s[10:11], 0x100000 5056; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[4:5], s[4:5], 0x100000 5057; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s8 5058; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s9 5059; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s10 5060; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s11 5061; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 5062; GCN-NOHSA-VI-NEXT: s_nop 0 5063; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s6 5064; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s7 5065; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s4 5066; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s5 5067; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 5068; GCN-NOHSA-VI-NEXT: s_endpgm 5069; 5070; EG-LABEL: constant_sextload_v4i16_to_v4i64: 5071; EG: ; %bb.0: 5072; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5073; EG-NEXT: TEX 0 @6 5074; EG-NEXT: ALU 20, @9, KC0[CB0:0-32], KC1[] 5075; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T8.X, 0 5076; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T6.X, 1 5077; EG-NEXT: CF_END 5078; EG-NEXT: Fetch clause starting at 6: 5079; EG-NEXT: VTX_READ_64 T5.XY, T5.X, 0, #1 5080; EG-NEXT: ALU clause starting at 8: 5081; EG-NEXT: MOV * T5.X, KC0[2].Z, 5082; EG-NEXT: ALU clause starting at 9: 5083; EG-NEXT: MOV T2.X, T5.X, 5084; EG-NEXT: MOV * T3.X, T5.Y, 5085; EG-NEXT: MOV T0.Y, PS, 5086; EG-NEXT: MOV * T0.Z, PV.X, 5087; EG-NEXT: ASHR * T5.W, PV.Z, literal.x, 5088; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 5089; EG-NEXT: LSHR T6.X, KC0[2].Y, literal.x, 5090; EG-NEXT: ASHR T5.Z, T0.Z, literal.y, 5091; EG-NEXT: ASHR * T7.W, T0.Y, literal.z, 5092; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5093; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 5094; EG-NEXT: BFE_INT T5.X, T0.Z, 0.0, literal.x, 5095; EG-NEXT: ASHR * T7.Z, T0.Y, literal.x, 5096; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5097; EG-NEXT: BFE_INT T7.X, T0.Y, 0.0, literal.x, 5098; EG-NEXT: ASHR T5.Y, PV.X, literal.y, 5099; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 5100; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 5101; EG-NEXT: LSHR T8.X, PV.W, literal.x, 5102; EG-NEXT: ASHR * T7.Y, PV.X, literal.y, 5103; EG-NEXT: 2(2.802597e-45), 31(4.344025e-44) 5104 %load = load <4 x i16>, <4 x i16> addrspace(4)* %in 5105 %ext = sext <4 x i16> %load to <4 x i64> 5106 store <4 x i64> %ext, <4 x i64> addrspace(1)* %out 5107 ret void 5108} 5109 5110define amdgpu_kernel void @constant_zextload_v8i16_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i16> addrspace(4)* %in) #0 { 5111; GCN-NOHSA-SI-LABEL: constant_zextload_v8i16_to_v8i64: 5112; GCN-NOHSA-SI: ; %bb.0: 5113; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 5114; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 5115; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5116; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[8:11], s[6:7], 0x0 5117; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 5118; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, 0 5119; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, 0xffff 5120; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, v1 5121; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 5122; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 5123; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5124; GCN-NOHSA-SI-NEXT: s_lshr_b32 s4, s9, 16 5125; GCN-NOHSA-SI-NEXT: s_lshr_b32 s5, s11, 16 5126; GCN-NOHSA-SI-NEXT: s_lshr_b32 s7, s10, 16 5127; GCN-NOHSA-SI-NEXT: s_lshr_b32 s12, s8, 16 5128; GCN-NOHSA-SI-NEXT: s_and_b32 s8, s8, s6 5129; GCN-NOHSA-SI-NEXT: s_and_b32 s10, s10, s6 5130; GCN-NOHSA-SI-NEXT: s_and_b32 s11, s11, s6 5131; GCN-NOHSA-SI-NEXT: s_and_b32 s6, s9, s6 5132; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s11 5133; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s5 5134; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 5135; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 5136; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s6 5137; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s4 5138; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 5139; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 5140; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s10 5141; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s7 5142; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 5143; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 5144; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s8 5145; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s12 5146; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 5147; GCN-NOHSA-SI-NEXT: s_endpgm 5148; 5149; GCN-HSA-LABEL: constant_zextload_v8i16_to_v8i64: 5150; GCN-HSA: ; %bb.0: 5151; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 5152; GCN-HSA-NEXT: s_mov_b32 s8, 0xffff 5153; GCN-HSA-NEXT: v_mov_b32_e32 v1, 0 5154; GCN-HSA-NEXT: v_mov_b32_e32 v3, v1 5155; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5156; GCN-HSA-NEXT: s_load_dwordx4 s[4:7], s[2:3], 0x0 5157; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5158; GCN-HSA-NEXT: s_lshr_b32 s9, s5, 16 5159; GCN-HSA-NEXT: s_lshr_b32 s2, s7, 16 5160; GCN-HSA-NEXT: s_lshr_b32 s10, s6, 16 5161; GCN-HSA-NEXT: s_lshr_b32 s11, s4, 16 5162; GCN-HSA-NEXT: s_and_b32 s4, s4, s8 5163; GCN-HSA-NEXT: s_and_b32 s6, s6, s8 5164; GCN-HSA-NEXT: s_and_b32 s5, s5, s8 5165; GCN-HSA-NEXT: s_and_b32 s3, s7, s8 5166; GCN-HSA-NEXT: v_mov_b32_e32 v2, s2 5167; GCN-HSA-NEXT: s_add_u32 s2, s0, 48 5168; GCN-HSA-NEXT: v_mov_b32_e32 v0, s3 5169; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 5170; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 5171; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 5172; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 5173; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 5174; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5175; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 5176; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 5177; GCN-HSA-NEXT: s_add_u32 s2, s0, 32 5178; GCN-HSA-NEXT: v_mov_b32_e32 v0, s5 5179; GCN-HSA-NEXT: v_mov_b32_e32 v2, s9 5180; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 5181; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5182; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 5183; GCN-HSA-NEXT: v_mov_b32_e32 v0, s6 5184; GCN-HSA-NEXT: v_mov_b32_e32 v2, s10 5185; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 5186; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5187; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 5188; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 5189; GCN-HSA-NEXT: v_mov_b32_e32 v2, s11 5190; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 5191; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5192; GCN-HSA-NEXT: s_endpgm 5193; 5194; GCN-NOHSA-VI-LABEL: constant_zextload_v8i16_to_v8i64: 5195; GCN-NOHSA-VI: ; %bb.0: 5196; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 5197; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, 0xffff 5198; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, 0 5199; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 5200; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 5201; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5202; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 5203; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 5204; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[6:7], 0x0 5205; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, v1 5206; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5207; GCN-NOHSA-VI-NEXT: s_and_b32 s9, s4, s8 5208; GCN-NOHSA-VI-NEXT: s_and_b32 s10, s5, s8 5209; GCN-NOHSA-VI-NEXT: s_and_b32 s11, s6, s8 5210; GCN-NOHSA-VI-NEXT: s_and_b32 s8, s7, s8 5211; GCN-NOHSA-VI-NEXT: s_lshr_b32 s7, s7, 16 5212; GCN-NOHSA-VI-NEXT: s_lshr_b32 s6, s6, 16 5213; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s8 5214; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s7 5215; GCN-NOHSA-VI-NEXT: s_lshr_b32 s5, s5, 16 5216; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 5217; GCN-NOHSA-VI-NEXT: s_lshr_b32 s4, s4, 16 5218; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s11 5219; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s6 5220; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 5221; GCN-NOHSA-VI-NEXT: s_nop 0 5222; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s10 5223; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s5 5224; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 5225; GCN-NOHSA-VI-NEXT: s_nop 0 5226; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s9 5227; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s4 5228; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 5229; GCN-NOHSA-VI-NEXT: s_endpgm 5230; 5231; EG-LABEL: constant_zextload_v8i16_to_v8i64: 5232; EG: ; %bb.0: 5233; EG-NEXT: ALU 0, @10, KC0[CB0:0-32], KC1[] 5234; EG-NEXT: TEX 0 @8 5235; EG-NEXT: ALU 30, @11, KC0[CB0:0-32], KC1[] 5236; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T14.X, 0 5237; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T13.X, 0 5238; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T10.XYZW, T12.X, 0 5239; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T11.X, 1 5240; EG-NEXT: CF_END 5241; EG-NEXT: Fetch clause starting at 8: 5242; EG-NEXT: VTX_READ_128 T7.XYZW, T7.X, 0, #1 5243; EG-NEXT: ALU clause starting at 10: 5244; EG-NEXT: MOV * T7.X, KC0[2].Z, 5245; EG-NEXT: ALU clause starting at 11: 5246; EG-NEXT: LSHR * T8.Z, T7.W, literal.x, 5247; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5248; EG-NEXT: AND_INT T8.X, T7.W, literal.x, 5249; EG-NEXT: MOV T8.Y, 0.0, 5250; EG-NEXT: LSHR T9.Z, T7.Z, literal.y, 5251; EG-NEXT: AND_INT * T9.X, T7.Z, literal.x, 5252; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 5253; EG-NEXT: MOV T9.Y, 0.0, 5254; EG-NEXT: LSHR * T10.Z, T7.Y, literal.x, 5255; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5256; EG-NEXT: AND_INT T10.X, T7.Y, literal.x, 5257; EG-NEXT: MOV T10.Y, 0.0, 5258; EG-NEXT: LSHR T7.Z, T7.X, literal.y, 5259; EG-NEXT: AND_INT * T7.X, T7.X, literal.x, 5260; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 5261; EG-NEXT: MOV T7.Y, 0.0, 5262; EG-NEXT: MOV T8.W, 0.0, 5263; EG-NEXT: MOV * T9.W, 0.0, 5264; EG-NEXT: MOV T10.W, 0.0, 5265; EG-NEXT: MOV * T7.W, 0.0, 5266; EG-NEXT: LSHR T11.X, KC0[2].Y, literal.x, 5267; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 5268; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5269; EG-NEXT: LSHR T12.X, PV.W, literal.x, 5270; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 5271; EG-NEXT: 2(2.802597e-45), 32(4.484155e-44) 5272; EG-NEXT: LSHR T13.X, PV.W, literal.x, 5273; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 5274; EG-NEXT: 2(2.802597e-45), 48(6.726233e-44) 5275; EG-NEXT: LSHR * T14.X, PV.W, literal.x, 5276; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 5277 %load = load <8 x i16>, <8 x i16> addrspace(4)* %in 5278 %ext = zext <8 x i16> %load to <8 x i64> 5279 store <8 x i64> %ext, <8 x i64> addrspace(1)* %out 5280 ret void 5281} 5282 5283define amdgpu_kernel void @constant_sextload_v8i16_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i16> addrspace(4)* %in) #0 { 5284; GCN-NOHSA-SI-LABEL: constant_sextload_v8i16_to_v8i64: 5285; GCN-NOHSA-SI: ; %bb.0: 5286; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 5287; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5288; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[2:3], 0x0 5289; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 5290; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 5291; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5292; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s7 5293; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s5 5294; GCN-NOHSA-SI-NEXT: s_lshr_b32 s12, s6, 16 5295; GCN-NOHSA-SI-NEXT: s_lshr_b32 s14, s4, 16 5296; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[16:17], s[4:5], 0x100000 5297; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[18:19], s[6:7], 0x100000 5298; GCN-NOHSA-SI-NEXT: s_ashr_i64 s[4:5], s[4:5], 48 5299; GCN-NOHSA-SI-NEXT: s_ashr_i64 s[6:7], s[6:7], 48 5300; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[10:11], s[10:11], 0x100000 5301; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[8:9], s[8:9], 0x100000 5302; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[14:15], s[14:15], 0x100000 5303; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[12:13], s[12:13], 0x100000 5304; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s8 5305; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s9 5306; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s6 5307; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s7 5308; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 5309; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 5310; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s10 5311; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s11 5312; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s4 5313; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s5 5314; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 5315; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 5316; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s18 5317; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s19 5318; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v4, s16 5319; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v5, s17 5320; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s12 5321; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s13 5322; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 5323; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v6, s14 5324; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v7, s15 5325; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 5326; GCN-NOHSA-SI-NEXT: s_endpgm 5327; 5328; GCN-HSA-LABEL: constant_sextload_v8i16_to_v8i64: 5329; GCN-HSA: ; %bb.0: 5330; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 5331; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5332; GCN-HSA-NEXT: s_load_dwordx4 s[4:7], s[2:3], 0x0 5333; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5334; GCN-HSA-NEXT: s_mov_b32 s2, s7 5335; GCN-HSA-NEXT: s_mov_b32 s8, s5 5336; GCN-HSA-NEXT: s_lshr_b32 s10, s6, 16 5337; GCN-HSA-NEXT: s_lshr_b32 s12, s4, 16 5338; GCN-HSA-NEXT: s_bfe_i64 s[14:15], s[4:5], 0x100000 5339; GCN-HSA-NEXT: s_bfe_i64 s[16:17], s[6:7], 0x100000 5340; GCN-HSA-NEXT: s_ashr_i64 s[4:5], s[4:5], 48 5341; GCN-HSA-NEXT: s_ashr_i64 s[6:7], s[6:7], 48 5342; GCN-HSA-NEXT: s_bfe_i64 s[12:13], s[12:13], 0x100000 5343; GCN-HSA-NEXT: s_bfe_i64 s[10:11], s[10:11], 0x100000 5344; GCN-HSA-NEXT: s_bfe_i64 s[8:9], s[8:9], 0x100000 5345; GCN-HSA-NEXT: s_bfe_i64 s[2:3], s[2:3], 0x100000 5346; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 5347; GCN-HSA-NEXT: s_add_u32 s2, s0, 48 5348; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 5349; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 5350; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 5351; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 5352; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 5353; GCN-HSA-NEXT: v_mov_b32_e32 v2, s6 5354; GCN-HSA-NEXT: v_mov_b32_e32 v3, s7 5355; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 5356; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5357; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 5358; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 5359; GCN-HSA-NEXT: s_add_u32 s2, s0, 32 5360; GCN-HSA-NEXT: v_mov_b32_e32 v0, s8 5361; GCN-HSA-NEXT: v_mov_b32_e32 v1, s9 5362; GCN-HSA-NEXT: v_mov_b32_e32 v2, s4 5363; GCN-HSA-NEXT: v_mov_b32_e32 v3, s5 5364; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 5365; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5366; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 5367; GCN-HSA-NEXT: v_mov_b32_e32 v0, s16 5368; GCN-HSA-NEXT: v_mov_b32_e32 v1, s17 5369; GCN-HSA-NEXT: v_mov_b32_e32 v2, s10 5370; GCN-HSA-NEXT: v_mov_b32_e32 v3, s11 5371; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 5372; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5373; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 5374; GCN-HSA-NEXT: v_mov_b32_e32 v0, s14 5375; GCN-HSA-NEXT: v_mov_b32_e32 v1, s15 5376; GCN-HSA-NEXT: v_mov_b32_e32 v2, s12 5377; GCN-HSA-NEXT: v_mov_b32_e32 v3, s13 5378; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 5379; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5380; GCN-HSA-NEXT: s_endpgm 5381; 5382; GCN-NOHSA-VI-LABEL: constant_sextload_v8i16_to_v8i64: 5383; GCN-NOHSA-VI: ; %bb.0: 5384; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 5385; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 5386; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 5387; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5388; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 5389; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 5390; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[6:7], 0x0 5391; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5392; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[14:15], s[6:7], 0x100000 5393; GCN-NOHSA-VI-NEXT: s_lshr_b32 s6, s6, 16 5394; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[16:17], s[6:7], 0x100000 5395; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, s7 5396; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[18:19], s[6:7], 0x100000 5397; GCN-NOHSA-VI-NEXT: s_lshr_b32 s6, s7, 16 5398; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[6:7], s[6:7], 0x100000 5399; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s5 5400; GCN-NOHSA-VI-NEXT: s_lshr_b32 s12, s5, 16 5401; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s18 5402; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s19 5403; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s6 5404; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s7 5405; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[8:9], s[4:5], 0x100000 5406; GCN-NOHSA-VI-NEXT: s_lshr_b32 s4, s4, 16 5407; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[10:11], s[10:11], 0x100000 5408; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[12:13], s[12:13], 0x100000 5409; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 5410; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[4:5], s[4:5], 0x100000 5411; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s14 5412; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s15 5413; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s16 5414; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s17 5415; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 5416; GCN-NOHSA-VI-NEXT: s_nop 0 5417; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s10 5418; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s11 5419; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s12 5420; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s13 5421; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 5422; GCN-NOHSA-VI-NEXT: s_nop 0 5423; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s8 5424; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s9 5425; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s4 5426; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s5 5427; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 5428; GCN-NOHSA-VI-NEXT: s_endpgm 5429; 5430; EG-LABEL: constant_sextload_v8i16_to_v8i64: 5431; EG: ; %bb.0: 5432; EG-NEXT: ALU 0, @10, KC0[CB0:0-32], KC1[] 5433; EG-NEXT: TEX 0 @8 5434; EG-NEXT: ALU 33, @11, KC0[CB0:0-32], KC1[] 5435; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T7.X, 0 5436; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T11.X, 0 5437; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T9.X, 0 5438; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T10.XYZW, T8.X, 1 5439; EG-NEXT: CF_END 5440; EG-NEXT: Fetch clause starting at 8: 5441; EG-NEXT: VTX_READ_128 T7.XYZW, T7.X, 0, #1 5442; EG-NEXT: ALU clause starting at 10: 5443; EG-NEXT: MOV * T7.X, KC0[2].Z, 5444; EG-NEXT: ALU clause starting at 11: 5445; EG-NEXT: LSHR T8.X, KC0[2].Y, literal.x, 5446; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 5447; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5448; EG-NEXT: LSHR T9.X, PV.W, literal.x, 5449; EG-NEXT: ADD_INT T0.W, KC0[2].Y, literal.y, 5450; EG-NEXT: ASHR * T10.W, T7.X, literal.z, 5451; EG-NEXT: 2(2.802597e-45), 32(4.484155e-44) 5452; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 5453; EG-NEXT: LSHR T11.X, PV.W, literal.x, 5454; EG-NEXT: ASHR T10.Z, T7.X, literal.y, 5455; EG-NEXT: ASHR * T12.W, T7.Y, literal.z, 5456; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5457; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 5458; EG-NEXT: BFE_INT T10.X, T7.X, 0.0, literal.x, 5459; EG-NEXT: ASHR T12.Z, T7.Y, literal.x, 5460; EG-NEXT: ASHR * T13.W, T7.Z, literal.y, 5461; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 5462; EG-NEXT: BFE_INT T12.X, T7.Y, 0.0, literal.x, 5463; EG-NEXT: ASHR T10.Y, PV.X, literal.y, 5464; EG-NEXT: ASHR T13.Z, T7.Z, literal.x, 5465; EG-NEXT: ASHR * T14.W, T7.W, literal.y, 5466; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 5467; EG-NEXT: BFE_INT T13.X, T7.Z, 0.0, literal.x, 5468; EG-NEXT: ASHR T12.Y, PV.X, literal.y, 5469; EG-NEXT: ASHR * T14.Z, T7.W, literal.x, 5470; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 5471; EG-NEXT: BFE_INT T14.X, T7.W, 0.0, literal.x, 5472; EG-NEXT: ASHR T13.Y, PV.X, literal.y, 5473; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 5474; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 5475; EG-NEXT: 48(6.726233e-44), 0(0.000000e+00) 5476; EG-NEXT: LSHR T7.X, PV.W, literal.x, 5477; EG-NEXT: ASHR * T14.Y, PV.X, literal.y, 5478; EG-NEXT: 2(2.802597e-45), 31(4.344025e-44) 5479 %load = load <8 x i16>, <8 x i16> addrspace(4)* %in 5480 %ext = sext <8 x i16> %load to <8 x i64> 5481 store <8 x i64> %ext, <8 x i64> addrspace(1)* %out 5482 ret void 5483} 5484 5485define amdgpu_kernel void @constant_zextload_v16i16_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i16> addrspace(4)* %in) #0 { 5486; GCN-NOHSA-SI-LABEL: constant_zextload_v16i16_to_v16i64: 5487; GCN-NOHSA-SI: ; %bb.0: 5488; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[12:15], s[0:1], 0x9 5489; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 5490; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5491; GCN-NOHSA-SI-NEXT: s_load_dwordx8 s[4:11], s[14:15], 0x0 5492; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 5493; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, 0 5494; GCN-NOHSA-SI-NEXT: s_mov_b32 s14, 0xffff 5495; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, v1 5496; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s12 5497; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s13 5498; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5499; GCN-NOHSA-SI-NEXT: s_lshr_b32 s12, s5, 16 5500; GCN-NOHSA-SI-NEXT: s_lshr_b32 s13, s7, 16 5501; GCN-NOHSA-SI-NEXT: s_lshr_b32 s15, s11, 16 5502; GCN-NOHSA-SI-NEXT: s_lshr_b32 s16, s9, 16 5503; GCN-NOHSA-SI-NEXT: s_lshr_b32 s17, s8, 16 5504; GCN-NOHSA-SI-NEXT: s_lshr_b32 s18, s10, 16 5505; GCN-NOHSA-SI-NEXT: s_lshr_b32 s19, s6, 16 5506; GCN-NOHSA-SI-NEXT: s_lshr_b32 s20, s4, 16 5507; GCN-NOHSA-SI-NEXT: s_and_b32 s4, s4, s14 5508; GCN-NOHSA-SI-NEXT: s_and_b32 s6, s6, s14 5509; GCN-NOHSA-SI-NEXT: s_and_b32 s10, s10, s14 5510; GCN-NOHSA-SI-NEXT: s_and_b32 s8, s8, s14 5511; GCN-NOHSA-SI-NEXT: s_and_b32 s5, s5, s14 5512; GCN-NOHSA-SI-NEXT: s_and_b32 s7, s7, s14 5513; GCN-NOHSA-SI-NEXT: s_and_b32 s9, s9, s14 5514; GCN-NOHSA-SI-NEXT: s_and_b32 s11, s11, s14 5515; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s9 5516; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s16 5517; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80 5518; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 5519; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s11 5520; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s15 5521; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112 5522; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 5523; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s7 5524; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s13 5525; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 5526; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 5527; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s5 5528; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s12 5529; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 5530; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 5531; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s8 5532; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s17 5533; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64 5534; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 5535; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s10 5536; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s18 5537; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96 5538; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 5539; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s6 5540; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s19 5541; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 5542; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 5543; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s4 5544; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s20 5545; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 5546; GCN-NOHSA-SI-NEXT: s_endpgm 5547; 5548; GCN-HSA-LABEL: constant_zextload_v16i16_to_v16i64: 5549; GCN-HSA: ; %bb.0: 5550; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 5551; GCN-HSA-NEXT: s_mov_b32 s12, 0xffff 5552; GCN-HSA-NEXT: v_mov_b32_e32 v1, 0 5553; GCN-HSA-NEXT: v_mov_b32_e32 v3, v1 5554; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5555; GCN-HSA-NEXT: s_load_dwordx8 s[4:11], s[2:3], 0x0 5556; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5557; GCN-HSA-NEXT: s_lshr_b32 s13, s5, 16 5558; GCN-HSA-NEXT: s_lshr_b32 s14, s7, 16 5559; GCN-HSA-NEXT: s_lshr_b32 s15, s11, 16 5560; GCN-HSA-NEXT: s_lshr_b32 s2, s9, 16 5561; GCN-HSA-NEXT: s_lshr_b32 s16, s8, 16 5562; GCN-HSA-NEXT: s_lshr_b32 s17, s10, 16 5563; GCN-HSA-NEXT: s_lshr_b32 s18, s6, 16 5564; GCN-HSA-NEXT: s_lshr_b32 s19, s4, 16 5565; GCN-HSA-NEXT: s_and_b32 s4, s4, s12 5566; GCN-HSA-NEXT: s_and_b32 s6, s6, s12 5567; GCN-HSA-NEXT: s_and_b32 s10, s10, s12 5568; GCN-HSA-NEXT: s_and_b32 s8, s8, s12 5569; GCN-HSA-NEXT: s_and_b32 s5, s5, s12 5570; GCN-HSA-NEXT: s_and_b32 s7, s7, s12 5571; GCN-HSA-NEXT: s_and_b32 s11, s11, s12 5572; GCN-HSA-NEXT: s_and_b32 s3, s9, s12 5573; GCN-HSA-NEXT: v_mov_b32_e32 v2, s2 5574; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x50 5575; GCN-HSA-NEXT: v_mov_b32_e32 v0, s3 5576; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 5577; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 5578; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 5579; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x70 5580; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 5581; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5582; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 5583; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 5584; GCN-HSA-NEXT: s_add_u32 s2, s0, 48 5585; GCN-HSA-NEXT: v_mov_b32_e32 v0, s11 5586; GCN-HSA-NEXT: v_mov_b32_e32 v2, s15 5587; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 5588; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5589; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 5590; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 5591; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 5592; GCN-HSA-NEXT: v_mov_b32_e32 v0, s7 5593; GCN-HSA-NEXT: v_mov_b32_e32 v2, s14 5594; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 5595; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5596; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 5597; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 5598; GCN-HSA-NEXT: s_add_u32 s2, s0, 64 5599; GCN-HSA-NEXT: v_mov_b32_e32 v0, s5 5600; GCN-HSA-NEXT: v_mov_b32_e32 v2, s13 5601; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 5602; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5603; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 5604; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 5605; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x60 5606; GCN-HSA-NEXT: v_mov_b32_e32 v0, s8 5607; GCN-HSA-NEXT: v_mov_b32_e32 v2, s16 5608; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 5609; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5610; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 5611; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 5612; GCN-HSA-NEXT: s_add_u32 s2, s0, 32 5613; GCN-HSA-NEXT: v_mov_b32_e32 v0, s10 5614; GCN-HSA-NEXT: v_mov_b32_e32 v2, s17 5615; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 5616; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5617; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 5618; GCN-HSA-NEXT: v_mov_b32_e32 v0, s6 5619; GCN-HSA-NEXT: v_mov_b32_e32 v2, s18 5620; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 5621; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5622; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 5623; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 5624; GCN-HSA-NEXT: v_mov_b32_e32 v2, s19 5625; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 5626; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5627; GCN-HSA-NEXT: s_endpgm 5628; 5629; GCN-NOHSA-VI-LABEL: constant_zextload_v16i16_to_v16i64: 5630; GCN-NOHSA-VI: ; %bb.0: 5631; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 5632; GCN-NOHSA-VI-NEXT: s_mov_b32 s12, 0xffff 5633; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, 0 5634; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 5635; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 5636; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5637; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 5638; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 5639; GCN-NOHSA-VI-NEXT: s_load_dwordx8 s[4:11], s[6:7], 0x0 5640; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, v1 5641; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5642; GCN-NOHSA-VI-NEXT: s_and_b32 s13, s4, s12 5643; GCN-NOHSA-VI-NEXT: s_and_b32 s14, s5, s12 5644; GCN-NOHSA-VI-NEXT: s_and_b32 s15, s6, s12 5645; GCN-NOHSA-VI-NEXT: s_and_b32 s16, s7, s12 5646; GCN-NOHSA-VI-NEXT: s_and_b32 s17, s8, s12 5647; GCN-NOHSA-VI-NEXT: s_and_b32 s18, s9, s12 5648; GCN-NOHSA-VI-NEXT: s_and_b32 s19, s10, s12 5649; GCN-NOHSA-VI-NEXT: s_and_b32 s12, s11, s12 5650; GCN-NOHSA-VI-NEXT: s_lshr_b32 s11, s11, 16 5651; GCN-NOHSA-VI-NEXT: s_lshr_b32 s10, s10, 16 5652; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s12 5653; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s11 5654; GCN-NOHSA-VI-NEXT: s_lshr_b32 s9, s9, 16 5655; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112 5656; GCN-NOHSA-VI-NEXT: s_lshr_b32 s8, s8, 16 5657; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s19 5658; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s10 5659; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96 5660; GCN-NOHSA-VI-NEXT: s_lshr_b32 s7, s7, 16 5661; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s18 5662; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s9 5663; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80 5664; GCN-NOHSA-VI-NEXT: s_lshr_b32 s6, s6, 16 5665; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s17 5666; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s8 5667; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64 5668; GCN-NOHSA-VI-NEXT: s_lshr_b32 s5, s5, 16 5669; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s16 5670; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s7 5671; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 5672; GCN-NOHSA-VI-NEXT: s_lshr_b32 s4, s4, 16 5673; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s15 5674; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s6 5675; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 5676; GCN-NOHSA-VI-NEXT: s_nop 0 5677; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s14 5678; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s5 5679; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 5680; GCN-NOHSA-VI-NEXT: s_nop 0 5681; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s13 5682; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s4 5683; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 5684; GCN-NOHSA-VI-NEXT: s_endpgm 5685; 5686; EG-LABEL: constant_zextload_v16i16_to_v16i64: 5687; EG: ; %bb.0: 5688; EG-NEXT: ALU 0, @16, KC0[CB0:0-32], KC1[] 5689; EG-NEXT: TEX 1 @12 5690; EG-NEXT: ALU 62, @17, KC0[CB0:0-32], KC1[] 5691; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T26.X, 0 5692; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T25.X, 0 5693; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T15.XYZW, T24.X, 0 5694; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T23.X, 0 5695; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T16.XYZW, T22.X, 0 5696; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T21.X, 0 5697; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T18.XYZW, T20.X, 0 5698; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T19.X, 1 5699; EG-NEXT: CF_END 5700; EG-NEXT: Fetch clause starting at 12: 5701; EG-NEXT: VTX_READ_128 T12.XYZW, T11.X, 16, #1 5702; EG-NEXT: VTX_READ_128 T11.XYZW, T11.X, 0, #1 5703; EG-NEXT: ALU clause starting at 16: 5704; EG-NEXT: MOV * T11.X, KC0[2].Z, 5705; EG-NEXT: ALU clause starting at 17: 5706; EG-NEXT: LSHR * T13.Z, T12.W, literal.x, 5707; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5708; EG-NEXT: AND_INT T13.X, T12.W, literal.x, 5709; EG-NEXT: MOV T13.Y, 0.0, 5710; EG-NEXT: LSHR T14.Z, T12.Z, literal.y, 5711; EG-NEXT: AND_INT * T14.X, T12.Z, literal.x, 5712; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 5713; EG-NEXT: MOV T14.Y, 0.0, 5714; EG-NEXT: LSHR * T15.Z, T12.Y, literal.x, 5715; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5716; EG-NEXT: AND_INT T15.X, T12.Y, literal.x, 5717; EG-NEXT: MOV T15.Y, 0.0, 5718; EG-NEXT: LSHR T12.Z, T12.X, literal.y, 5719; EG-NEXT: AND_INT * T12.X, T12.X, literal.x, 5720; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 5721; EG-NEXT: MOV T12.Y, 0.0, 5722; EG-NEXT: LSHR * T16.Z, T11.W, literal.x, 5723; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5724; EG-NEXT: AND_INT T16.X, T11.W, literal.x, 5725; EG-NEXT: MOV T16.Y, 0.0, 5726; EG-NEXT: LSHR T17.Z, T11.Z, literal.y, 5727; EG-NEXT: AND_INT * T17.X, T11.Z, literal.x, 5728; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 5729; EG-NEXT: MOV T17.Y, 0.0, 5730; EG-NEXT: LSHR * T18.Z, T11.Y, literal.x, 5731; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5732; EG-NEXT: AND_INT T18.X, T11.Y, literal.x, 5733; EG-NEXT: MOV T18.Y, 0.0, 5734; EG-NEXT: LSHR T11.Z, T11.X, literal.y, 5735; EG-NEXT: AND_INT * T11.X, T11.X, literal.x, 5736; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 5737; EG-NEXT: MOV T11.Y, 0.0, 5738; EG-NEXT: MOV T13.W, 0.0, 5739; EG-NEXT: MOV * T14.W, 0.0, 5740; EG-NEXT: MOV T15.W, 0.0, 5741; EG-NEXT: MOV * T12.W, 0.0, 5742; EG-NEXT: MOV T16.W, 0.0, 5743; EG-NEXT: MOV * T17.W, 0.0, 5744; EG-NEXT: MOV T18.W, 0.0, 5745; EG-NEXT: MOV * T11.W, 0.0, 5746; EG-NEXT: LSHR T19.X, KC0[2].Y, literal.x, 5747; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 5748; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5749; EG-NEXT: LSHR T20.X, PV.W, literal.x, 5750; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 5751; EG-NEXT: 2(2.802597e-45), 32(4.484155e-44) 5752; EG-NEXT: LSHR T21.X, PV.W, literal.x, 5753; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 5754; EG-NEXT: 2(2.802597e-45), 48(6.726233e-44) 5755; EG-NEXT: LSHR T22.X, PV.W, literal.x, 5756; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 5757; EG-NEXT: 2(2.802597e-45), 64(8.968310e-44) 5758; EG-NEXT: LSHR T23.X, PV.W, literal.x, 5759; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 5760; EG-NEXT: 2(2.802597e-45), 80(1.121039e-43) 5761; EG-NEXT: LSHR T24.X, PV.W, literal.x, 5762; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 5763; EG-NEXT: 2(2.802597e-45), 96(1.345247e-43) 5764; EG-NEXT: LSHR T25.X, PV.W, literal.x, 5765; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 5766; EG-NEXT: 2(2.802597e-45), 112(1.569454e-43) 5767; EG-NEXT: LSHR * T26.X, PV.W, literal.x, 5768; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 5769 %load = load <16 x i16>, <16 x i16> addrspace(4)* %in 5770 %ext = zext <16 x i16> %load to <16 x i64> 5771 store <16 x i64> %ext, <16 x i64> addrspace(1)* %out 5772 ret void 5773} 5774 5775define amdgpu_kernel void @constant_sextload_v16i16_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i16> addrspace(4)* %in) #0 { 5776; GCN-NOHSA-SI-LABEL: constant_sextload_v16i16_to_v16i64: 5777; GCN-NOHSA-SI: ; %bb.0: 5778; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 5779; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5780; GCN-NOHSA-SI-NEXT: s_load_dwordx8 s[4:11], s[2:3], 0x0 5781; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 5782; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 5783; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5784; GCN-NOHSA-SI-NEXT: s_mov_b32 s12, s11 5785; GCN-NOHSA-SI-NEXT: s_mov_b32 s14, s9 5786; GCN-NOHSA-SI-NEXT: s_mov_b32 s16, s7 5787; GCN-NOHSA-SI-NEXT: s_mov_b32 s18, s5 5788; GCN-NOHSA-SI-NEXT: s_lshr_b32 s20, s10, 16 5789; GCN-NOHSA-SI-NEXT: s_lshr_b32 s22, s8, 16 5790; GCN-NOHSA-SI-NEXT: s_lshr_b32 s24, s6, 16 5791; GCN-NOHSA-SI-NEXT: s_lshr_b32 s26, s4, 16 5792; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[28:29], s[4:5], 0x100000 5793; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[30:31], s[6:7], 0x100000 5794; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[34:35], s[8:9], 0x100000 5795; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[36:37], s[10:11], 0x100000 5796; GCN-NOHSA-SI-NEXT: s_ashr_i64 s[4:5], s[4:5], 48 5797; GCN-NOHSA-SI-NEXT: s_ashr_i64 s[6:7], s[6:7], 48 5798; GCN-NOHSA-SI-NEXT: s_ashr_i64 s[8:9], s[8:9], 48 5799; GCN-NOHSA-SI-NEXT: s_ashr_i64 s[10:11], s[10:11], 48 5800; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[18:19], s[18:19], 0x100000 5801; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[16:17], s[16:17], 0x100000 5802; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[14:15], s[14:15], 0x100000 5803; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[12:13], s[12:13], 0x100000 5804; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[26:27], s[26:27], 0x100000 5805; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[24:25], s[24:25], 0x100000 5806; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[22:23], s[22:23], 0x100000 5807; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[20:21], s[20:21], 0x100000 5808; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s12 5809; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s13 5810; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s10 5811; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s11 5812; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112 5813; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 5814; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s14 5815; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s15 5816; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s8 5817; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s9 5818; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80 5819; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 5820; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s16 5821; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s17 5822; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s6 5823; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s7 5824; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 5825; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 5826; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s18 5827; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s19 5828; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s4 5829; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s5 5830; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 5831; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 5832; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s36 5833; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s37 5834; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v4, s34 5835; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v5, s35 5836; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v8, s30 5837; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v9, s31 5838; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v12, s28 5839; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v13, s29 5840; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s20 5841; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s21 5842; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96 5843; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v6, s22 5844; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v7, s23 5845; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:64 5846; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v10, s24 5847; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v11, s25 5848; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:32 5849; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v14, s26 5850; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v15, s27 5851; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 5852; GCN-NOHSA-SI-NEXT: s_endpgm 5853; 5854; GCN-HSA-LABEL: constant_sextload_v16i16_to_v16i64: 5855; GCN-HSA: ; %bb.0: 5856; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 5857; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5858; GCN-HSA-NEXT: s_load_dwordx8 s[8:15], s[2:3], 0x0 5859; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5860; GCN-HSA-NEXT: s_mov_b32 s6, s15 5861; GCN-HSA-NEXT: s_mov_b32 s16, s13 5862; GCN-HSA-NEXT: s_mov_b32 s18, s11 5863; GCN-HSA-NEXT: s_mov_b32 s20, s9 5864; GCN-HSA-NEXT: s_lshr_b32 s22, s14, 16 5865; GCN-HSA-NEXT: s_lshr_b32 s24, s12, 16 5866; GCN-HSA-NEXT: s_lshr_b32 s26, s10, 16 5867; GCN-HSA-NEXT: s_lshr_b32 s28, s8, 16 5868; GCN-HSA-NEXT: s_bfe_i64 s[34:35], s[14:15], 0x100000 5869; GCN-HSA-NEXT: s_ashr_i64 s[14:15], s[14:15], 48 5870; GCN-HSA-NEXT: s_bfe_i64 s[6:7], s[6:7], 0x100000 5871; GCN-HSA-NEXT: s_bfe_i64 s[2:3], s[8:9], 0x100000 5872; GCN-HSA-NEXT: s_bfe_i64 s[4:5], s[10:11], 0x100000 5873; GCN-HSA-NEXT: s_bfe_i64 s[30:31], s[12:13], 0x100000 5874; GCN-HSA-NEXT: s_ashr_i64 s[8:9], s[8:9], 48 5875; GCN-HSA-NEXT: s_ashr_i64 s[10:11], s[10:11], 48 5876; GCN-HSA-NEXT: s_ashr_i64 s[12:13], s[12:13], 48 5877; GCN-HSA-NEXT: v_mov_b32_e32 v0, s6 5878; GCN-HSA-NEXT: v_mov_b32_e32 v1, s7 5879; GCN-HSA-NEXT: v_mov_b32_e32 v2, s14 5880; GCN-HSA-NEXT: v_mov_b32_e32 v3, s15 5881; GCN-HSA-NEXT: s_bfe_i64 s[6:7], s[28:29], 0x100000 5882; GCN-HSA-NEXT: s_bfe_i64 s[14:15], s[26:27], 0x100000 5883; GCN-HSA-NEXT: s_bfe_i64 s[24:25], s[24:25], 0x100000 5884; GCN-HSA-NEXT: s_bfe_i64 s[22:23], s[22:23], 0x100000 5885; GCN-HSA-NEXT: s_bfe_i64 s[20:21], s[20:21], 0x100000 5886; GCN-HSA-NEXT: s_bfe_i64 s[18:19], s[18:19], 0x100000 5887; GCN-HSA-NEXT: s_bfe_i64 s[16:17], s[16:17], 0x100000 5888; GCN-HSA-NEXT: s_add_u32 s26, s0, 0x70 5889; GCN-HSA-NEXT: s_addc_u32 s27, s1, 0 5890; GCN-HSA-NEXT: v_mov_b32_e32 v8, s26 5891; GCN-HSA-NEXT: v_mov_b32_e32 v6, s12 5892; GCN-HSA-NEXT: s_add_u32 s12, s0, 0x50 5893; GCN-HSA-NEXT: v_mov_b32_e32 v9, s27 5894; GCN-HSA-NEXT: v_mov_b32_e32 v7, s13 5895; GCN-HSA-NEXT: s_addc_u32 s13, s1, 0 5896; GCN-HSA-NEXT: v_mov_b32_e32 v10, s12 5897; GCN-HSA-NEXT: v_mov_b32_e32 v4, s16 5898; GCN-HSA-NEXT: v_mov_b32_e32 v5, s17 5899; GCN-HSA-NEXT: v_mov_b32_e32 v11, s13 5900; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[0:3] 5901; GCN-HSA-NEXT: flat_store_dwordx4 v[10:11], v[4:7] 5902; GCN-HSA-NEXT: v_mov_b32_e32 v2, s10 5903; GCN-HSA-NEXT: s_add_u32 s10, s0, 48 5904; GCN-HSA-NEXT: v_mov_b32_e32 v3, s11 5905; GCN-HSA-NEXT: s_addc_u32 s11, s1, 0 5906; GCN-HSA-NEXT: v_mov_b32_e32 v4, s10 5907; GCN-HSA-NEXT: v_mov_b32_e32 v0, s18 5908; GCN-HSA-NEXT: v_mov_b32_e32 v1, s19 5909; GCN-HSA-NEXT: v_mov_b32_e32 v5, s11 5910; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5911; GCN-HSA-NEXT: s_nop 0 5912; GCN-HSA-NEXT: v_mov_b32_e32 v2, s8 5913; GCN-HSA-NEXT: s_add_u32 s8, s0, 16 5914; GCN-HSA-NEXT: v_mov_b32_e32 v3, s9 5915; GCN-HSA-NEXT: s_addc_u32 s9, s1, 0 5916; GCN-HSA-NEXT: v_mov_b32_e32 v4, s8 5917; GCN-HSA-NEXT: v_mov_b32_e32 v0, s20 5918; GCN-HSA-NEXT: v_mov_b32_e32 v1, s21 5919; GCN-HSA-NEXT: v_mov_b32_e32 v5, s9 5920; GCN-HSA-NEXT: s_add_u32 s8, s0, 0x60 5921; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5922; GCN-HSA-NEXT: s_addc_u32 s9, s1, 0 5923; GCN-HSA-NEXT: v_mov_b32_e32 v4, s8 5924; GCN-HSA-NEXT: v_mov_b32_e32 v0, s34 5925; GCN-HSA-NEXT: v_mov_b32_e32 v1, s35 5926; GCN-HSA-NEXT: v_mov_b32_e32 v2, s22 5927; GCN-HSA-NEXT: v_mov_b32_e32 v3, s23 5928; GCN-HSA-NEXT: v_mov_b32_e32 v5, s9 5929; GCN-HSA-NEXT: s_add_u32 s8, s0, 64 5930; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5931; GCN-HSA-NEXT: s_addc_u32 s9, s1, 0 5932; GCN-HSA-NEXT: v_mov_b32_e32 v4, s8 5933; GCN-HSA-NEXT: v_mov_b32_e32 v0, s30 5934; GCN-HSA-NEXT: v_mov_b32_e32 v1, s31 5935; GCN-HSA-NEXT: v_mov_b32_e32 v2, s24 5936; GCN-HSA-NEXT: v_mov_b32_e32 v3, s25 5937; GCN-HSA-NEXT: v_mov_b32_e32 v5, s9 5938; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5939; GCN-HSA-NEXT: s_nop 0 5940; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 5941; GCN-HSA-NEXT: s_add_u32 s4, s0, 32 5942; GCN-HSA-NEXT: v_mov_b32_e32 v1, s5 5943; GCN-HSA-NEXT: s_addc_u32 s5, s1, 0 5944; GCN-HSA-NEXT: v_mov_b32_e32 v4, s4 5945; GCN-HSA-NEXT: v_mov_b32_e32 v2, s14 5946; GCN-HSA-NEXT: v_mov_b32_e32 v3, s15 5947; GCN-HSA-NEXT: v_mov_b32_e32 v5, s5 5948; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5949; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 5950; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 5951; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 5952; GCN-HSA-NEXT: v_mov_b32_e32 v2, s6 5953; GCN-HSA-NEXT: v_mov_b32_e32 v3, s7 5954; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 5955; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5956; GCN-HSA-NEXT: s_endpgm 5957; 5958; GCN-NOHSA-VI-LABEL: constant_sextload_v16i16_to_v16i64: 5959; GCN-NOHSA-VI: ; %bb.0: 5960; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 5961; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, 0xf000 5962; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, -1 5963; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5964; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s0 5965; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s1 5966; GCN-NOHSA-VI-NEXT: s_load_dwordx8 s[0:7], s[2:3], 0x0 5967; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5968; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[30:31], s[6:7], 0x100000 5969; GCN-NOHSA-VI-NEXT: s_lshr_b32 s6, s6, 16 5970; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[34:35], s[6:7], 0x100000 5971; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, s7 5972; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[24:25], s[4:5], 0x100000 5973; GCN-NOHSA-VI-NEXT: s_lshr_b32 s4, s4, 16 5974; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[36:37], s[6:7], 0x100000 5975; GCN-NOHSA-VI-NEXT: s_lshr_b32 s6, s7, 16 5976; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[26:27], s[4:5], 0x100000 5977; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s5 5978; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[6:7], s[6:7], 0x100000 5979; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[18:19], s[2:3], 0x100000 5980; GCN-NOHSA-VI-NEXT: s_lshr_b32 s2, s2, 16 5981; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[28:29], s[4:5], 0x100000 5982; GCN-NOHSA-VI-NEXT: s_lshr_b32 s4, s5, 16 5983; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s36 5984; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s37 5985; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s6 5986; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s7 5987; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[20:21], s[2:3], 0x100000 5988; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, s3 5989; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[4:5], s[4:5], 0x100000 5990; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:112 5991; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[22:23], s[2:3], 0x100000 5992; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s30 5993; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s31 5994; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s34 5995; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s35 5996; GCN-NOHSA-VI-NEXT: s_lshr_b32 s2, s3, 16 5997; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:96 5998; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[2:3], s[2:3], 0x100000 5999; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s28 6000; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s29 6001; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s4 6002; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s5 6003; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:80 6004; GCN-NOHSA-VI-NEXT: s_mov_b32 s14, s1 6005; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s24 6006; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s25 6007; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s26 6008; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s27 6009; GCN-NOHSA-VI-NEXT: s_lshr_b32 s16, s1, 16 6010; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:64 6011; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[12:13], s[0:1], 0x100000 6012; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s22 6013; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s23 6014; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s2 6015; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s3 6016; GCN-NOHSA-VI-NEXT: s_lshr_b32 s0, s0, 16 6017; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[14:15], s[14:15], 0x100000 6018; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[16:17], s[16:17], 0x100000 6019; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:48 6020; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[0:1], s[0:1], 0x100000 6021; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s18 6022; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s19 6023; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s20 6024; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s21 6025; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:32 6026; GCN-NOHSA-VI-NEXT: s_nop 0 6027; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s14 6028; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s15 6029; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s16 6030; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s17 6031; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:16 6032; GCN-NOHSA-VI-NEXT: s_nop 0 6033; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s12 6034; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s13 6035; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s0 6036; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s1 6037; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[8:11], 0 6038; GCN-NOHSA-VI-NEXT: s_endpgm 6039; 6040; EG-LABEL: constant_sextload_v16i16_to_v16i64: 6041; EG: ; %bb.0: 6042; EG-NEXT: ALU 0, @16, KC0[CB0:0-32], KC1[] 6043; EG-NEXT: TEX 1 @12 6044; EG-NEXT: ALU 65, @17, KC0[CB0:0-32], KC1[] 6045; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T26.XYZW, T12.X, 0 6046; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T20.X, 0 6047; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T18.X, 0 6048; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T17.X, 0 6049; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T16.X, 0 6050; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T22.XYZW, T15.X, 0 6051; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T14.X, 0 6052; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T13.X, 1 6053; EG-NEXT: CF_END 6054; EG-NEXT: Fetch clause starting at 12: 6055; EG-NEXT: VTX_READ_128 T12.XYZW, T11.X, 16, #1 6056; EG-NEXT: VTX_READ_128 T11.XYZW, T11.X, 0, #1 6057; EG-NEXT: ALU clause starting at 16: 6058; EG-NEXT: MOV * T11.X, KC0[2].Z, 6059; EG-NEXT: ALU clause starting at 17: 6060; EG-NEXT: LSHR T13.X, KC0[2].Y, literal.x, 6061; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6062; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 6063; EG-NEXT: LSHR T14.X, PV.W, literal.x, 6064; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6065; EG-NEXT: 2(2.802597e-45), 32(4.484155e-44) 6066; EG-NEXT: LSHR T15.X, PV.W, literal.x, 6067; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6068; EG-NEXT: 2(2.802597e-45), 48(6.726233e-44) 6069; EG-NEXT: LSHR T16.X, PV.W, literal.x, 6070; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6071; EG-NEXT: 2(2.802597e-45), 64(8.968310e-44) 6072; EG-NEXT: LSHR T17.X, PV.W, literal.x, 6073; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6074; EG-NEXT: 2(2.802597e-45), 80(1.121039e-43) 6075; EG-NEXT: LSHR T18.X, PV.W, literal.x, 6076; EG-NEXT: ADD_INT T0.W, KC0[2].Y, literal.y, 6077; EG-NEXT: ASHR * T19.W, T11.X, literal.z, 6078; EG-NEXT: 2(2.802597e-45), 96(1.345247e-43) 6079; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 6080; EG-NEXT: LSHR T20.X, PV.W, literal.x, 6081; EG-NEXT: ASHR T19.Z, T11.X, literal.y, 6082; EG-NEXT: ASHR * T21.W, T11.Y, literal.z, 6083; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 6084; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 6085; EG-NEXT: BFE_INT T19.X, T11.X, 0.0, literal.x, 6086; EG-NEXT: ASHR T21.Z, T11.Y, literal.x, 6087; EG-NEXT: ASHR * T22.W, T11.Z, literal.y, 6088; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6089; EG-NEXT: BFE_INT T21.X, T11.Y, 0.0, literal.x, 6090; EG-NEXT: ASHR T19.Y, PV.X, literal.y, 6091; EG-NEXT: ASHR T22.Z, T11.Z, literal.x, 6092; EG-NEXT: ASHR * T23.W, T11.W, literal.y, 6093; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6094; EG-NEXT: BFE_INT T22.X, T11.Z, 0.0, literal.x, 6095; EG-NEXT: ASHR T21.Y, PV.X, literal.y, 6096; EG-NEXT: ASHR T23.Z, T11.W, literal.x, 6097; EG-NEXT: ASHR * T24.W, T12.X, literal.y, 6098; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6099; EG-NEXT: BFE_INT T23.X, T11.W, 0.0, literal.x, 6100; EG-NEXT: ASHR T22.Y, PV.X, literal.y, 6101; EG-NEXT: ASHR T24.Z, T12.X, literal.x, 6102; EG-NEXT: ASHR * T11.W, T12.Y, literal.y, 6103; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6104; EG-NEXT: BFE_INT T24.X, T12.X, 0.0, literal.x, 6105; EG-NEXT: ASHR T23.Y, PV.X, literal.y, 6106; EG-NEXT: ASHR T11.Z, T12.Y, literal.x, 6107; EG-NEXT: ASHR * T25.W, T12.Z, literal.y, 6108; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6109; EG-NEXT: BFE_INT T11.X, T12.Y, 0.0, literal.x, 6110; EG-NEXT: ASHR T24.Y, PV.X, literal.y, 6111; EG-NEXT: ASHR T25.Z, T12.Z, literal.x, 6112; EG-NEXT: ASHR * T26.W, T12.W, literal.y, 6113; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6114; EG-NEXT: BFE_INT T25.X, T12.Z, 0.0, literal.x, 6115; EG-NEXT: ASHR T11.Y, PV.X, literal.y, 6116; EG-NEXT: ASHR * T26.Z, T12.W, literal.x, 6117; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6118; EG-NEXT: BFE_INT T26.X, T12.W, 0.0, literal.x, 6119; EG-NEXT: ASHR T25.Y, PV.X, literal.y, 6120; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 6121; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6122; EG-NEXT: 112(1.569454e-43), 0(0.000000e+00) 6123; EG-NEXT: LSHR T12.X, PV.W, literal.x, 6124; EG-NEXT: ASHR * T26.Y, PV.X, literal.y, 6125; EG-NEXT: 2(2.802597e-45), 31(4.344025e-44) 6126 %load = load <16 x i16>, <16 x i16> addrspace(4)* %in 6127 %ext = sext <16 x i16> %load to <16 x i64> 6128 store <16 x i64> %ext, <16 x i64> addrspace(1)* %out 6129 ret void 6130} 6131 6132define amdgpu_kernel void @constant_zextload_v32i16_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i16> addrspace(4)* %in) #0 { 6133; GCN-NOHSA-SI-LABEL: constant_zextload_v32i16_to_v32i64: 6134; GCN-NOHSA-SI: ; %bb.0: 6135; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[16:19], s[0:1], 0x9 6136; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 6137; GCN-NOHSA-SI-NEXT: s_load_dwordx16 s[0:15], s[18:19], 0x0 6138; GCN-NOHSA-SI-NEXT: s_mov_b32 s18, 0xffff 6139; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 6140; GCN-NOHSA-SI-NEXT: s_lshr_b32 s19, s1, 16 6141; GCN-NOHSA-SI-NEXT: s_lshr_b32 s20, s3, 16 6142; GCN-NOHSA-SI-NEXT: s_lshr_b32 s21, s5, 16 6143; GCN-NOHSA-SI-NEXT: s_lshr_b32 s22, s7, 16 6144; GCN-NOHSA-SI-NEXT: s_lshr_b32 s23, s9, 16 6145; GCN-NOHSA-SI-NEXT: s_lshr_b32 s24, s11, 16 6146; GCN-NOHSA-SI-NEXT: s_lshr_b32 s25, s13, 16 6147; GCN-NOHSA-SI-NEXT: s_lshr_b32 s26, s15, 16 6148; GCN-NOHSA-SI-NEXT: s_and_b32 s27, s0, s18 6149; GCN-NOHSA-SI-NEXT: s_and_b32 s28, s2, s18 6150; GCN-NOHSA-SI-NEXT: s_and_b32 s29, s4, s18 6151; GCN-NOHSA-SI-NEXT: s_and_b32 s30, s6, s18 6152; GCN-NOHSA-SI-NEXT: s_and_b32 s31, s8, s18 6153; GCN-NOHSA-SI-NEXT: s_and_b32 s33, s10, s18 6154; GCN-NOHSA-SI-NEXT: s_and_b32 s34, s12, s18 6155; GCN-NOHSA-SI-NEXT: s_and_b32 s35, s14, s18 6156; GCN-NOHSA-SI-NEXT: s_and_b32 s36, s1, s18 6157; GCN-NOHSA-SI-NEXT: s_and_b32 s37, s3, s18 6158; GCN-NOHSA-SI-NEXT: s_and_b32 s5, s5, s18 6159; GCN-NOHSA-SI-NEXT: s_and_b32 s7, s7, s18 6160; GCN-NOHSA-SI-NEXT: s_and_b32 s9, s9, s18 6161; GCN-NOHSA-SI-NEXT: s_and_b32 s11, s11, s18 6162; GCN-NOHSA-SI-NEXT: s_and_b32 s13, s13, s18 6163; GCN-NOHSA-SI-NEXT: s_and_b32 s15, s15, s18 6164; GCN-NOHSA-SI-NEXT: s_lshr_b32 s14, s14, 16 6165; GCN-NOHSA-SI-NEXT: s_lshr_b32 s12, s12, 16 6166; GCN-NOHSA-SI-NEXT: s_lshr_b32 s10, s10, 16 6167; GCN-NOHSA-SI-NEXT: s_lshr_b32 s8, s8, 16 6168; GCN-NOHSA-SI-NEXT: s_lshr_b32 s6, s6, 16 6169; GCN-NOHSA-SI-NEXT: s_lshr_b32 s4, s4, 16 6170; GCN-NOHSA-SI-NEXT: s_lshr_b32 s18, s2, 16 6171; GCN-NOHSA-SI-NEXT: s_lshr_b32 s38, s0, 16 6172; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 6173; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, 0 6174; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 6175; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, v1 6176; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s16 6177; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s17 6178; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s15 6179; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s26 6180; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240 6181; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6182; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s13 6183; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s25 6184; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:208 6185; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6186; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s11 6187; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s24 6188; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:176 6189; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6190; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s9 6191; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s23 6192; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:144 6193; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6194; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s7 6195; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s22 6196; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112 6197; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6198; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s5 6199; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s21 6200; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80 6201; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6202; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s37 6203; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s20 6204; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 6205; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6206; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s36 6207; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s19 6208; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 6209; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6210; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s35 6211; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s14 6212; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:224 6213; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6214; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s34 6215; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s12 6216; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:192 6217; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6218; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s33 6219; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s10 6220; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:160 6221; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6222; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s31 6223; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s8 6224; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:128 6225; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6226; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s30 6227; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s6 6228; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96 6229; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6230; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s29 6231; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s4 6232; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64 6233; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6234; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s28 6235; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s18 6236; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 6237; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6238; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s27 6239; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s38 6240; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 6241; GCN-NOHSA-SI-NEXT: s_endpgm 6242; 6243; GCN-HSA-LABEL: constant_zextload_v32i16_to_v32i64: 6244; GCN-HSA: ; %bb.0: 6245; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 6246; GCN-HSA-NEXT: s_mov_b32 s20, 0xffff 6247; GCN-HSA-NEXT: v_mov_b32_e32 v1, 0 6248; GCN-HSA-NEXT: v_mov_b32_e32 v3, v1 6249; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 6250; GCN-HSA-NEXT: s_load_dwordx16 s[4:19], s[2:3], 0x0 6251; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 6252; GCN-HSA-NEXT: s_and_b32 s21, s4, s20 6253; GCN-HSA-NEXT: s_and_b32 s22, s6, s20 6254; GCN-HSA-NEXT: s_and_b32 s23, s8, s20 6255; GCN-HSA-NEXT: s_and_b32 s24, s10, s20 6256; GCN-HSA-NEXT: s_and_b32 s25, s12, s20 6257; GCN-HSA-NEXT: s_and_b32 s26, s14, s20 6258; GCN-HSA-NEXT: s_and_b32 s27, s16, s20 6259; GCN-HSA-NEXT: s_and_b32 s28, s18, s20 6260; GCN-HSA-NEXT: s_and_b32 s29, s5, s20 6261; GCN-HSA-NEXT: s_and_b32 s30, s7, s20 6262; GCN-HSA-NEXT: s_and_b32 s31, s9, s20 6263; GCN-HSA-NEXT: s_and_b32 s33, s11, s20 6264; GCN-HSA-NEXT: s_and_b32 s34, s13, s20 6265; GCN-HSA-NEXT: s_and_b32 s35, s15, s20 6266; GCN-HSA-NEXT: s_and_b32 s36, s17, s20 6267; GCN-HSA-NEXT: s_and_b32 s20, s19, s20 6268; GCN-HSA-NEXT: s_lshr_b32 s5, s5, 16 6269; GCN-HSA-NEXT: s_lshr_b32 s7, s7, 16 6270; GCN-HSA-NEXT: s_lshr_b32 s9, s9, 16 6271; GCN-HSA-NEXT: s_lshr_b32 s11, s11, 16 6272; GCN-HSA-NEXT: s_lshr_b32 s13, s13, 16 6273; GCN-HSA-NEXT: s_lshr_b32 s15, s15, 16 6274; GCN-HSA-NEXT: s_lshr_b32 s17, s17, 16 6275; GCN-HSA-NEXT: s_lshr_b32 s19, s19, 16 6276; GCN-HSA-NEXT: s_lshr_b32 s18, s18, 16 6277; GCN-HSA-NEXT: s_lshr_b32 s16, s16, 16 6278; GCN-HSA-NEXT: s_lshr_b32 s14, s14, 16 6279; GCN-HSA-NEXT: s_lshr_b32 s12, s12, 16 6280; GCN-HSA-NEXT: s_lshr_b32 s10, s10, 16 6281; GCN-HSA-NEXT: s_lshr_b32 s8, s8, 16 6282; GCN-HSA-NEXT: s_lshr_b32 s6, s6, 16 6283; GCN-HSA-NEXT: s_lshr_b32 s4, s4, 16 6284; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xf0 6285; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6286; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 6287; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 6288; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xd0 6289; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6290; GCN-HSA-NEXT: v_mov_b32_e32 v7, s3 6291; GCN-HSA-NEXT: v_mov_b32_e32 v6, s2 6292; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xb0 6293; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6294; GCN-HSA-NEXT: v_mov_b32_e32 v9, s3 6295; GCN-HSA-NEXT: v_mov_b32_e32 v8, s2 6296; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x90 6297; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6298; GCN-HSA-NEXT: v_mov_b32_e32 v11, s3 6299; GCN-HSA-NEXT: v_mov_b32_e32 v10, s2 6300; GCN-HSA-NEXT: v_mov_b32_e32 v0, s20 6301; GCN-HSA-NEXT: v_mov_b32_e32 v2, s19 6302; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x70 6303; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 6304; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6305; GCN-HSA-NEXT: v_mov_b32_e32 v0, s36 6306; GCN-HSA-NEXT: v_mov_b32_e32 v2, s17 6307; GCN-HSA-NEXT: flat_store_dwordx4 v[6:7], v[0:3] 6308; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 6309; GCN-HSA-NEXT: v_mov_b32_e32 v0, s35 6310; GCN-HSA-NEXT: v_mov_b32_e32 v2, s15 6311; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[0:3] 6312; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 6313; GCN-HSA-NEXT: v_mov_b32_e32 v0, s34 6314; GCN-HSA-NEXT: v_mov_b32_e32 v2, s13 6315; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x50 6316; GCN-HSA-NEXT: flat_store_dwordx4 v[10:11], v[0:3] 6317; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6318; GCN-HSA-NEXT: v_mov_b32_e32 v0, s33 6319; GCN-HSA-NEXT: v_mov_b32_e32 v2, s11 6320; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 6321; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 6322; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 6323; GCN-HSA-NEXT: s_add_u32 s2, s0, 48 6324; GCN-HSA-NEXT: v_mov_b32_e32 v0, s31 6325; GCN-HSA-NEXT: v_mov_b32_e32 v2, s9 6326; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6327; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 6328; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 6329; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 6330; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 6331; GCN-HSA-NEXT: v_mov_b32_e32 v0, s30 6332; GCN-HSA-NEXT: v_mov_b32_e32 v2, s7 6333; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6334; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 6335; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 6336; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 6337; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xe0 6338; GCN-HSA-NEXT: v_mov_b32_e32 v0, s29 6339; GCN-HSA-NEXT: v_mov_b32_e32 v2, s5 6340; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6341; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 6342; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 6343; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 6344; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xc0 6345; GCN-HSA-NEXT: v_mov_b32_e32 v0, s28 6346; GCN-HSA-NEXT: v_mov_b32_e32 v2, s18 6347; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6348; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 6349; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 6350; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 6351; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xa0 6352; GCN-HSA-NEXT: v_mov_b32_e32 v0, s27 6353; GCN-HSA-NEXT: v_mov_b32_e32 v2, s16 6354; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6355; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 6356; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 6357; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 6358; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x80 6359; GCN-HSA-NEXT: v_mov_b32_e32 v0, s26 6360; GCN-HSA-NEXT: v_mov_b32_e32 v2, s14 6361; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6362; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 6363; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 6364; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 6365; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x60 6366; GCN-HSA-NEXT: v_mov_b32_e32 v0, s25 6367; GCN-HSA-NEXT: v_mov_b32_e32 v2, s12 6368; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6369; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 6370; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 6371; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 6372; GCN-HSA-NEXT: s_add_u32 s2, s0, 64 6373; GCN-HSA-NEXT: v_mov_b32_e32 v0, s24 6374; GCN-HSA-NEXT: v_mov_b32_e32 v2, s10 6375; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6376; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 6377; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 6378; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 6379; GCN-HSA-NEXT: s_add_u32 s2, s0, 32 6380; GCN-HSA-NEXT: v_mov_b32_e32 v0, s23 6381; GCN-HSA-NEXT: v_mov_b32_e32 v2, s8 6382; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6383; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 6384; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 6385; GCN-HSA-NEXT: v_mov_b32_e32 v0, s22 6386; GCN-HSA-NEXT: v_mov_b32_e32 v2, s6 6387; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 6388; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 6389; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 6390; GCN-HSA-NEXT: v_mov_b32_e32 v0, s21 6391; GCN-HSA-NEXT: v_mov_b32_e32 v2, s4 6392; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 6393; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 6394; GCN-HSA-NEXT: s_endpgm 6395; 6396; GCN-NOHSA-VI-LABEL: constant_zextload_v32i16_to_v32i64: 6397; GCN-NOHSA-VI: ; %bb.0: 6398; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 6399; GCN-NOHSA-VI-NEXT: s_mov_b32 s20, 0xffff 6400; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, 0 6401; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 6402; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 6403; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 6404; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 6405; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 6406; GCN-NOHSA-VI-NEXT: s_load_dwordx16 s[4:19], s[6:7], 0x0 6407; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, v1 6408; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 6409; GCN-NOHSA-VI-NEXT: s_and_b32 s21, s4, s20 6410; GCN-NOHSA-VI-NEXT: s_and_b32 s22, s5, s20 6411; GCN-NOHSA-VI-NEXT: s_and_b32 s23, s6, s20 6412; GCN-NOHSA-VI-NEXT: s_and_b32 s24, s7, s20 6413; GCN-NOHSA-VI-NEXT: s_and_b32 s25, s8, s20 6414; GCN-NOHSA-VI-NEXT: s_and_b32 s26, s9, s20 6415; GCN-NOHSA-VI-NEXT: s_and_b32 s27, s10, s20 6416; GCN-NOHSA-VI-NEXT: s_and_b32 s28, s11, s20 6417; GCN-NOHSA-VI-NEXT: s_and_b32 s29, s12, s20 6418; GCN-NOHSA-VI-NEXT: s_and_b32 s30, s13, s20 6419; GCN-NOHSA-VI-NEXT: s_and_b32 s31, s14, s20 6420; GCN-NOHSA-VI-NEXT: s_and_b32 s33, s15, s20 6421; GCN-NOHSA-VI-NEXT: s_and_b32 s34, s16, s20 6422; GCN-NOHSA-VI-NEXT: s_and_b32 s35, s17, s20 6423; GCN-NOHSA-VI-NEXT: s_and_b32 s36, s18, s20 6424; GCN-NOHSA-VI-NEXT: s_and_b32 s20, s19, s20 6425; GCN-NOHSA-VI-NEXT: s_lshr_b32 s19, s19, 16 6426; GCN-NOHSA-VI-NEXT: s_lshr_b32 s18, s18, 16 6427; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s20 6428; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s19 6429; GCN-NOHSA-VI-NEXT: s_lshr_b32 s17, s17, 16 6430; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240 6431; GCN-NOHSA-VI-NEXT: s_lshr_b32 s16, s16, 16 6432; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s36 6433; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s18 6434; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:224 6435; GCN-NOHSA-VI-NEXT: s_lshr_b32 s15, s15, 16 6436; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s35 6437; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s17 6438; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:208 6439; GCN-NOHSA-VI-NEXT: s_lshr_b32 s14, s14, 16 6440; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s34 6441; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s16 6442; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:192 6443; GCN-NOHSA-VI-NEXT: s_lshr_b32 s13, s13, 16 6444; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s33 6445; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s15 6446; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:176 6447; GCN-NOHSA-VI-NEXT: s_lshr_b32 s12, s12, 16 6448; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s31 6449; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s14 6450; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:160 6451; GCN-NOHSA-VI-NEXT: s_lshr_b32 s11, s11, 16 6452; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s30 6453; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s13 6454; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:144 6455; GCN-NOHSA-VI-NEXT: s_lshr_b32 s10, s10, 16 6456; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s29 6457; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s12 6458; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:128 6459; GCN-NOHSA-VI-NEXT: s_lshr_b32 s9, s9, 16 6460; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s28 6461; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s11 6462; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112 6463; GCN-NOHSA-VI-NEXT: s_lshr_b32 s8, s8, 16 6464; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s27 6465; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s10 6466; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96 6467; GCN-NOHSA-VI-NEXT: s_lshr_b32 s7, s7, 16 6468; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s26 6469; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s9 6470; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80 6471; GCN-NOHSA-VI-NEXT: s_lshr_b32 s6, s6, 16 6472; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s25 6473; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s8 6474; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64 6475; GCN-NOHSA-VI-NEXT: s_lshr_b32 s5, s5, 16 6476; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s24 6477; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s7 6478; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 6479; GCN-NOHSA-VI-NEXT: s_lshr_b32 s4, s4, 16 6480; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s23 6481; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s6 6482; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 6483; GCN-NOHSA-VI-NEXT: s_nop 0 6484; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s22 6485; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s5 6486; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 6487; GCN-NOHSA-VI-NEXT: s_nop 0 6488; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s21 6489; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s4 6490; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 6491; GCN-NOHSA-VI-NEXT: s_endpgm 6492; 6493; EG-LABEL: constant_zextload_v32i16_to_v32i64: 6494; EG: ; %bb.0: 6495; EG-NEXT: ALU 0, @30, KC0[CB0:0-32], KC1[] 6496; EG-NEXT: TEX 2 @22 6497; EG-NEXT: ALU 33, @31, KC0[], KC1[] 6498; EG-NEXT: TEX 0 @28 6499; EG-NEXT: ALU 92, @65, KC0[CB0:0-32], KC1[] 6500; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T50.X, 0 6501; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T49.X, 0 6502; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T48.X, 0 6503; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T47.X, 0 6504; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T26.XYZW, T46.X, 0 6505; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T27.XYZW, T45.X, 0 6506; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T28.XYZW, T44.X, 0 6507; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T22.XYZW, T43.X, 0 6508; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T42.X, 0 6509; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T30.XYZW, T41.X, 0 6510; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T31.XYZW, T40.X, 0 6511; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T39.X, 0 6512; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T32.XYZW, T38.X, 0 6513; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T33.XYZW, T37.X, 0 6514; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T34.XYZW, T36.X, 0 6515; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T29.XYZW, T35.X, 1 6516; EG-NEXT: CF_END 6517; EG-NEXT: Fetch clause starting at 22: 6518; EG-NEXT: VTX_READ_128 T20.XYZW, T19.X, 48, #1 6519; EG-NEXT: VTX_READ_128 T21.XYZW, T19.X, 16, #1 6520; EG-NEXT: VTX_READ_128 T22.XYZW, T19.X, 32, #1 6521; EG-NEXT: Fetch clause starting at 28: 6522; EG-NEXT: VTX_READ_128 T29.XYZW, T19.X, 0, #1 6523; EG-NEXT: ALU clause starting at 30: 6524; EG-NEXT: MOV * T19.X, KC0[2].Z, 6525; EG-NEXT: ALU clause starting at 31: 6526; EG-NEXT: LSHR * T23.Z, T20.W, literal.x, 6527; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6528; EG-NEXT: AND_INT T23.X, T20.W, literal.x, 6529; EG-NEXT: MOV T23.Y, 0.0, 6530; EG-NEXT: LSHR T24.Z, T20.Z, literal.y, 6531; EG-NEXT: AND_INT * T24.X, T20.Z, literal.x, 6532; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6533; EG-NEXT: MOV T24.Y, 0.0, 6534; EG-NEXT: LSHR * T25.Z, T20.Y, literal.x, 6535; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6536; EG-NEXT: AND_INT T25.X, T20.Y, literal.x, 6537; EG-NEXT: MOV T25.Y, 0.0, 6538; EG-NEXT: LSHR T20.Z, T20.X, literal.y, 6539; EG-NEXT: AND_INT * T20.X, T20.X, literal.x, 6540; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6541; EG-NEXT: MOV T20.Y, 0.0, 6542; EG-NEXT: LSHR * T26.Z, T22.W, literal.x, 6543; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6544; EG-NEXT: AND_INT T26.X, T22.W, literal.x, 6545; EG-NEXT: MOV T26.Y, 0.0, 6546; EG-NEXT: LSHR T27.Z, T22.Z, literal.y, 6547; EG-NEXT: AND_INT * T27.X, T22.Z, literal.x, 6548; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6549; EG-NEXT: MOV T27.Y, 0.0, 6550; EG-NEXT: LSHR * T28.Z, T22.Y, literal.x, 6551; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6552; EG-NEXT: AND_INT T28.X, T22.Y, literal.x, 6553; EG-NEXT: MOV T28.Y, 0.0, 6554; EG-NEXT: LSHR T22.Z, T22.X, literal.y, 6555; EG-NEXT: AND_INT * T22.X, T22.X, literal.x, 6556; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6557; EG-NEXT: MOV T22.Y, 0.0, 6558; EG-NEXT: LSHR * T19.Z, T21.W, literal.x, 6559; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6560; EG-NEXT: ALU clause starting at 65: 6561; EG-NEXT: AND_INT T19.X, T21.W, literal.x, 6562; EG-NEXT: MOV T19.Y, 0.0, 6563; EG-NEXT: LSHR T30.Z, T21.Z, literal.y, 6564; EG-NEXT: AND_INT * T30.X, T21.Z, literal.x, 6565; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6566; EG-NEXT: MOV T30.Y, 0.0, 6567; EG-NEXT: LSHR * T31.Z, T21.Y, literal.x, 6568; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6569; EG-NEXT: AND_INT T31.X, T21.Y, literal.x, 6570; EG-NEXT: MOV T31.Y, 0.0, 6571; EG-NEXT: LSHR T21.Z, T21.X, literal.y, 6572; EG-NEXT: AND_INT * T21.X, T21.X, literal.x, 6573; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6574; EG-NEXT: MOV T21.Y, 0.0, 6575; EG-NEXT: LSHR * T32.Z, T29.W, literal.x, 6576; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6577; EG-NEXT: AND_INT T32.X, T29.W, literal.x, 6578; EG-NEXT: MOV T32.Y, 0.0, 6579; EG-NEXT: LSHR T33.Z, T29.Z, literal.y, 6580; EG-NEXT: AND_INT * T33.X, T29.Z, literal.x, 6581; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6582; EG-NEXT: MOV T33.Y, 0.0, 6583; EG-NEXT: LSHR * T34.Z, T29.Y, literal.x, 6584; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6585; EG-NEXT: AND_INT T34.X, T29.Y, literal.x, 6586; EG-NEXT: MOV T34.Y, 0.0, 6587; EG-NEXT: LSHR T29.Z, T29.X, literal.y, 6588; EG-NEXT: AND_INT * T29.X, T29.X, literal.x, 6589; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6590; EG-NEXT: MOV T29.Y, 0.0, 6591; EG-NEXT: MOV T23.W, 0.0, 6592; EG-NEXT: MOV * T24.W, 0.0, 6593; EG-NEXT: MOV T25.W, 0.0, 6594; EG-NEXT: MOV * T20.W, 0.0, 6595; EG-NEXT: MOV T26.W, 0.0, 6596; EG-NEXT: MOV * T27.W, 0.0, 6597; EG-NEXT: MOV T28.W, 0.0, 6598; EG-NEXT: MOV * T22.W, 0.0, 6599; EG-NEXT: MOV T19.W, 0.0, 6600; EG-NEXT: MOV * T30.W, 0.0, 6601; EG-NEXT: MOV T31.W, 0.0, 6602; EG-NEXT: MOV * T21.W, 0.0, 6603; EG-NEXT: MOV T32.W, 0.0, 6604; EG-NEXT: MOV * T33.W, 0.0, 6605; EG-NEXT: MOV T34.W, 0.0, 6606; EG-NEXT: MOV * T29.W, 0.0, 6607; EG-NEXT: LSHR T35.X, KC0[2].Y, literal.x, 6608; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6609; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 6610; EG-NEXT: LSHR T36.X, PV.W, literal.x, 6611; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6612; EG-NEXT: 2(2.802597e-45), 32(4.484155e-44) 6613; EG-NEXT: LSHR T37.X, PV.W, literal.x, 6614; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6615; EG-NEXT: 2(2.802597e-45), 48(6.726233e-44) 6616; EG-NEXT: LSHR T38.X, PV.W, literal.x, 6617; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6618; EG-NEXT: 2(2.802597e-45), 64(8.968310e-44) 6619; EG-NEXT: LSHR T39.X, PV.W, literal.x, 6620; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6621; EG-NEXT: 2(2.802597e-45), 80(1.121039e-43) 6622; EG-NEXT: LSHR T40.X, PV.W, literal.x, 6623; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6624; EG-NEXT: 2(2.802597e-45), 96(1.345247e-43) 6625; EG-NEXT: LSHR T41.X, PV.W, literal.x, 6626; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6627; EG-NEXT: 2(2.802597e-45), 112(1.569454e-43) 6628; EG-NEXT: LSHR T42.X, PV.W, literal.x, 6629; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6630; EG-NEXT: 2(2.802597e-45), 128(1.793662e-43) 6631; EG-NEXT: LSHR T43.X, PV.W, literal.x, 6632; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6633; EG-NEXT: 2(2.802597e-45), 144(2.017870e-43) 6634; EG-NEXT: LSHR T44.X, PV.W, literal.x, 6635; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6636; EG-NEXT: 2(2.802597e-45), 160(2.242078e-43) 6637; EG-NEXT: LSHR T45.X, PV.W, literal.x, 6638; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6639; EG-NEXT: 2(2.802597e-45), 176(2.466285e-43) 6640; EG-NEXT: LSHR T46.X, PV.W, literal.x, 6641; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6642; EG-NEXT: 2(2.802597e-45), 192(2.690493e-43) 6643; EG-NEXT: LSHR T47.X, PV.W, literal.x, 6644; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6645; EG-NEXT: 2(2.802597e-45), 208(2.914701e-43) 6646; EG-NEXT: LSHR T48.X, PV.W, literal.x, 6647; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6648; EG-NEXT: 2(2.802597e-45), 224(3.138909e-43) 6649; EG-NEXT: LSHR T49.X, PV.W, literal.x, 6650; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6651; EG-NEXT: 2(2.802597e-45), 240(3.363116e-43) 6652; EG-NEXT: LSHR * T50.X, PV.W, literal.x, 6653; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 6654 %load = load <32 x i16>, <32 x i16> addrspace(4)* %in 6655 %ext = zext <32 x i16> %load to <32 x i64> 6656 store <32 x i64> %ext, <32 x i64> addrspace(1)* %out 6657 ret void 6658} 6659 6660define amdgpu_kernel void @constant_sextload_v32i16_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i16> addrspace(4)* %in) #0 { 6661; GCN-NOHSA-SI-LABEL: constant_sextload_v32i16_to_v32i64: 6662; GCN-NOHSA-SI: ; %bb.0: 6663; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[16:19], s[0:1], 0x9 6664; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 6665; GCN-NOHSA-SI-NEXT: s_load_dwordx16 s[0:15], s[18:19], 0x0 6666; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 6667; GCN-NOHSA-SI-NEXT: s_mov_b32 s18, s15 6668; GCN-NOHSA-SI-NEXT: s_mov_b32 s20, s13 6669; GCN-NOHSA-SI-NEXT: s_mov_b32 s36, s11 6670; GCN-NOHSA-SI-NEXT: s_mov_b32 s40, s9 6671; GCN-NOHSA-SI-NEXT: s_mov_b32 s44, s7 6672; GCN-NOHSA-SI-NEXT: s_mov_b32 s46, s5 6673; GCN-NOHSA-SI-NEXT: s_mov_b32 s38, s3 6674; GCN-NOHSA-SI-NEXT: s_mov_b32 s42, s1 6675; GCN-NOHSA-SI-NEXT: s_lshr_b32 s24, s14, 16 6676; GCN-NOHSA-SI-NEXT: s_lshr_b32 s26, s12, 16 6677; GCN-NOHSA-SI-NEXT: s_lshr_b32 s28, s10, 16 6678; GCN-NOHSA-SI-NEXT: s_lshr_b32 s34, s8, 16 6679; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[48:49], s[20:21], 0x100000 6680; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[50:51], s[18:19], 0x100000 6681; GCN-NOHSA-SI-NEXT: s_lshr_b32 s52, s6, 16 6682; GCN-NOHSA-SI-NEXT: s_lshr_b32 s54, s4, 16 6683; GCN-NOHSA-SI-NEXT: s_lshr_b32 s56, s2, 16 6684; GCN-NOHSA-SI-NEXT: s_lshr_b32 s58, s0, 16 6685; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[18:19], s[0:1], 0x100000 6686; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[20:21], s[2:3], 0x100000 6687; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[22:23], s[4:5], 0x100000 6688; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[30:31], s[6:7], 0x100000 6689; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[60:61], s[8:9], 0x100000 6690; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[62:63], s[10:11], 0x100000 6691; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[64:65], s[12:13], 0x100000 6692; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[66:67], s[14:15], 0x100000 6693; GCN-NOHSA-SI-NEXT: s_ashr_i64 s[68:69], s[0:1], 48 6694; GCN-NOHSA-SI-NEXT: s_ashr_i64 s[70:71], s[2:3], 48 6695; GCN-NOHSA-SI-NEXT: s_ashr_i64 s[6:7], s[6:7], 48 6696; GCN-NOHSA-SI-NEXT: s_ashr_i64 s[8:9], s[8:9], 48 6697; GCN-NOHSA-SI-NEXT: s_ashr_i64 s[10:11], s[10:11], 48 6698; GCN-NOHSA-SI-NEXT: s_ashr_i64 s[2:3], s[12:13], 48 6699; GCN-NOHSA-SI-NEXT: s_ashr_i64 s[12:13], s[14:15], 48 6700; GCN-NOHSA-SI-NEXT: s_ashr_i64 s[4:5], s[4:5], 48 6701; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s16 6702; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s17 6703; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s50 6704; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s51 6705; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s12 6706; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s13 6707; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v4, s48 6708; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v5, s49 6709; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v6, s2 6710; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v7, s3 6711; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 6712; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 6713; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[12:13], s[46:47], 0x100000 6714; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[14:15], s[44:45], 0x100000 6715; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[16:17], s[40:41], 0x100000 6716; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[36:37], s[36:37], 0x100000 6717; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[40:41], s[42:43], 0x100000 6718; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[38:39], s[38:39], 0x100000 6719; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v8, s36 6720; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v9, s37 6721; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v10, s10 6722; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v11, s11 6723; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v12, s16 6724; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v13, s17 6725; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v14, s8 6726; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v15, s9 6727; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v16, s14 6728; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v17, s15 6729; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v18, s6 6730; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v19, s7 6731; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v20, s12 6732; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v21, s13 6733; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v22, s4 6734; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v23, s5 6735; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240 6736; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[4:5], s[58:59], 0x100000 6737; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[6:7], s[56:57], 0x100000 6738; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[8:9], s[54:55], 0x100000 6739; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[10:11], s[52:53], 0x100000 6740; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[12:13], s[34:35], 0x100000 6741; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[14:15], s[28:29], 0x100000 6742; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[16:17], s[26:27], 0x100000 6743; GCN-NOHSA-SI-NEXT: s_bfe_i64 s[24:25], s[24:25], 0x100000 6744; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:208 6745; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:176 6746; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:144 6747; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:112 6748; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[20:23], off, s[0:3], 0 offset:80 6749; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(5) 6750; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s38 6751; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s39 6752; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s70 6753; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s71 6754; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 6755; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6756; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s40 6757; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s41 6758; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s68 6759; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s69 6760; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 6761; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6762; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s66 6763; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s67 6764; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v4, s64 6765; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v5, s65 6766; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v8, s62 6767; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v9, s63 6768; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v12, s60 6769; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v13, s61 6770; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v16, s30 6771; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v17, s31 6772; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v20, s22 6773; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v21, s23 6774; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v24, s20 6775; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v25, s21 6776; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s24 6777; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s25 6778; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:224 6779; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6780; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, s18 6781; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, s19 6782; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v6, s16 6783; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v7, s17 6784; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:192 6785; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v10, s14 6786; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v11, s15 6787; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:160 6788; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v14, s12 6789; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v15, s13 6790; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:128 6791; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v18, s10 6792; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v19, s11 6793; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:96 6794; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v22, s8 6795; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v23, s9 6796; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[20:23], off, s[0:3], 0 offset:64 6797; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v26, s6 6798; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v27, s7 6799; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:32 6800; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, s4 6801; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, s5 6802; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 6803; GCN-NOHSA-SI-NEXT: s_endpgm 6804; 6805; GCN-HSA-LABEL: constant_sextload_v32i16_to_v32i64: 6806; GCN-HSA: ; %bb.0: 6807; GCN-HSA-NEXT: s_load_dwordx4 s[16:19], s[4:5], 0x0 6808; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 6809; GCN-HSA-NEXT: s_load_dwordx16 s[0:15], s[18:19], 0x0 6810; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 6811; GCN-HSA-NEXT: s_mov_b32 s42, s15 6812; GCN-HSA-NEXT: s_mov_b32 s44, s13 6813; GCN-HSA-NEXT: s_mov_b32 s46, s11 6814; GCN-HSA-NEXT: s_mov_b32 s48, s9 6815; GCN-HSA-NEXT: s_mov_b32 s50, s7 6816; GCN-HSA-NEXT: s_mov_b32 s52, s5 6817; GCN-HSA-NEXT: s_mov_b32 s54, s3 6818; GCN-HSA-NEXT: s_mov_b32 s56, s1 6819; GCN-HSA-NEXT: s_lshr_b32 s58, s14, 16 6820; GCN-HSA-NEXT: s_lshr_b32 s60, s12, 16 6821; GCN-HSA-NEXT: s_lshr_b32 s62, s10, 16 6822; GCN-HSA-NEXT: s_lshr_b32 s64, s8, 16 6823; GCN-HSA-NEXT: s_lshr_b32 s66, s6, 16 6824; GCN-HSA-NEXT: s_lshr_b32 s68, s4, 16 6825; GCN-HSA-NEXT: s_lshr_b32 s70, s2, 16 6826; GCN-HSA-NEXT: s_lshr_b32 s72, s0, 16 6827; GCN-HSA-NEXT: s_bfe_i64 s[18:19], s[0:1], 0x100000 6828; GCN-HSA-NEXT: s_bfe_i64 s[20:21], s[2:3], 0x100000 6829; GCN-HSA-NEXT: s_ashr_i64 s[36:37], s[0:1], 48 6830; GCN-HSA-NEXT: s_ashr_i64 s[38:39], s[2:3], 48 6831; GCN-HSA-NEXT: s_ashr_i64 s[0:1], s[14:15], 48 6832; GCN-HSA-NEXT: s_bfe_i64 s[2:3], s[42:43], 0x100000 6833; GCN-HSA-NEXT: s_bfe_i64 s[22:23], s[4:5], 0x100000 6834; GCN-HSA-NEXT: s_bfe_i64 s[24:25], s[6:7], 0x100000 6835; GCN-HSA-NEXT: s_bfe_i64 s[26:27], s[8:9], 0x100000 6836; GCN-HSA-NEXT: s_bfe_i64 s[28:29], s[10:11], 0x100000 6837; GCN-HSA-NEXT: s_bfe_i64 s[30:31], s[12:13], 0x100000 6838; GCN-HSA-NEXT: s_bfe_i64 s[34:35], s[14:15], 0x100000 6839; GCN-HSA-NEXT: s_ashr_i64 s[40:41], s[4:5], 48 6840; GCN-HSA-NEXT: s_ashr_i64 s[74:75], s[6:7], 48 6841; GCN-HSA-NEXT: s_ashr_i64 s[76:77], s[8:9], 48 6842; GCN-HSA-NEXT: s_ashr_i64 s[78:79], s[10:11], 48 6843; GCN-HSA-NEXT: s_ashr_i64 s[80:81], s[12:13], 48 6844; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 6845; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 6846; GCN-HSA-NEXT: v_mov_b32_e32 v2, s0 6847; GCN-HSA-NEXT: v_mov_b32_e32 v3, s1 6848; GCN-HSA-NEXT: s_bfe_i64 s[0:1], s[72:73], 0x100000 6849; GCN-HSA-NEXT: s_bfe_i64 s[2:3], s[70:71], 0x100000 6850; GCN-HSA-NEXT: s_bfe_i64 s[4:5], s[68:69], 0x100000 6851; GCN-HSA-NEXT: s_bfe_i64 s[6:7], s[66:67], 0x100000 6852; GCN-HSA-NEXT: s_bfe_i64 s[8:9], s[64:65], 0x100000 6853; GCN-HSA-NEXT: s_bfe_i64 s[10:11], s[62:63], 0x100000 6854; GCN-HSA-NEXT: s_bfe_i64 s[12:13], s[60:61], 0x100000 6855; GCN-HSA-NEXT: s_bfe_i64 s[14:15], s[58:59], 0x100000 6856; GCN-HSA-NEXT: s_bfe_i64 s[42:43], s[56:57], 0x100000 6857; GCN-HSA-NEXT: s_bfe_i64 s[54:55], s[54:55], 0x100000 6858; GCN-HSA-NEXT: s_bfe_i64 s[52:53], s[52:53], 0x100000 6859; GCN-HSA-NEXT: s_bfe_i64 s[50:51], s[50:51], 0x100000 6860; GCN-HSA-NEXT: s_bfe_i64 s[48:49], s[48:49], 0x100000 6861; GCN-HSA-NEXT: s_bfe_i64 s[46:47], s[46:47], 0x100000 6862; GCN-HSA-NEXT: s_bfe_i64 s[44:45], s[44:45], 0x100000 6863; GCN-HSA-NEXT: s_add_u32 s56, s16, 0xf0 6864; GCN-HSA-NEXT: s_addc_u32 s57, s17, 0 6865; GCN-HSA-NEXT: v_mov_b32_e32 v4, s44 6866; GCN-HSA-NEXT: s_add_u32 s44, s16, 0xd0 6867; GCN-HSA-NEXT: v_mov_b32_e32 v5, s45 6868; GCN-HSA-NEXT: s_addc_u32 s45, s17, 0 6869; GCN-HSA-NEXT: v_mov_b32_e32 v24, s44 6870; GCN-HSA-NEXT: v_mov_b32_e32 v25, s45 6871; GCN-HSA-NEXT: s_add_u32 s44, s16, 0xb0 6872; GCN-HSA-NEXT: s_addc_u32 s45, s17, 0 6873; GCN-HSA-NEXT: v_mov_b32_e32 v26, s44 6874; GCN-HSA-NEXT: v_mov_b32_e32 v27, s45 6875; GCN-HSA-NEXT: s_add_u32 s44, s16, 0x90 6876; GCN-HSA-NEXT: s_addc_u32 s45, s17, 0 6877; GCN-HSA-NEXT: v_mov_b32_e32 v28, s44 6878; GCN-HSA-NEXT: v_mov_b32_e32 v22, s56 6879; GCN-HSA-NEXT: v_mov_b32_e32 v29, s45 6880; GCN-HSA-NEXT: s_add_u32 s44, s16, 0x70 6881; GCN-HSA-NEXT: v_mov_b32_e32 v23, s57 6882; GCN-HSA-NEXT: s_addc_u32 s45, s17, 0 6883; GCN-HSA-NEXT: flat_store_dwordx4 v[22:23], v[0:3] 6884; GCN-HSA-NEXT: v_mov_b32_e32 v22, s40 6885; GCN-HSA-NEXT: s_add_u32 s40, s16, 0x50 6886; GCN-HSA-NEXT: v_mov_b32_e32 v23, s41 6887; GCN-HSA-NEXT: s_addc_u32 s41, s17, 0 6888; GCN-HSA-NEXT: v_mov_b32_e32 v6, s80 6889; GCN-HSA-NEXT: v_mov_b32_e32 v7, s81 6890; GCN-HSA-NEXT: v_mov_b32_e32 v2, s38 6891; GCN-HSA-NEXT: s_add_u32 s38, s16, 48 6892; GCN-HSA-NEXT: v_mov_b32_e32 v3, s39 6893; GCN-HSA-NEXT: flat_store_dwordx4 v[24:25], v[4:7] 6894; GCN-HSA-NEXT: s_addc_u32 s39, s17, 0 6895; GCN-HSA-NEXT: v_mov_b32_e32 v24, s38 6896; GCN-HSA-NEXT: v_mov_b32_e32 v25, s39 6897; GCN-HSA-NEXT: s_add_u32 s38, s16, 16 6898; GCN-HSA-NEXT: v_mov_b32_e32 v8, s46 6899; GCN-HSA-NEXT: v_mov_b32_e32 v9, s47 6900; GCN-HSA-NEXT: v_mov_b32_e32 v10, s78 6901; GCN-HSA-NEXT: v_mov_b32_e32 v11, s79 6902; GCN-HSA-NEXT: s_addc_u32 s39, s17, 0 6903; GCN-HSA-NEXT: flat_store_dwordx4 v[26:27], v[8:11] 6904; GCN-HSA-NEXT: v_mov_b32_e32 v12, s48 6905; GCN-HSA-NEXT: v_mov_b32_e32 v10, s14 6906; GCN-HSA-NEXT: s_add_u32 s14, s16, 0xe0 6907; GCN-HSA-NEXT: v_mov_b32_e32 v13, s49 6908; GCN-HSA-NEXT: v_mov_b32_e32 v14, s76 6909; GCN-HSA-NEXT: v_mov_b32_e32 v15, s77 6910; GCN-HSA-NEXT: v_mov_b32_e32 v11, s15 6911; GCN-HSA-NEXT: s_addc_u32 s15, s17, 0 6912; GCN-HSA-NEXT: v_mov_b32_e32 v30, s44 6913; GCN-HSA-NEXT: flat_store_dwordx4 v[28:29], v[12:15] 6914; GCN-HSA-NEXT: v_mov_b32_e32 v16, s50 6915; GCN-HSA-NEXT: v_mov_b32_e32 v14, s12 6916; GCN-HSA-NEXT: s_add_u32 s12, s16, 0xc0 6917; GCN-HSA-NEXT: v_mov_b32_e32 v17, s51 6918; GCN-HSA-NEXT: v_mov_b32_e32 v18, s74 6919; GCN-HSA-NEXT: v_mov_b32_e32 v19, s75 6920; GCN-HSA-NEXT: v_mov_b32_e32 v31, s45 6921; GCN-HSA-NEXT: v_mov_b32_e32 v32, s40 6922; GCN-HSA-NEXT: v_mov_b32_e32 v15, s13 6923; GCN-HSA-NEXT: s_addc_u32 s13, s17, 0 6924; GCN-HSA-NEXT: v_mov_b32_e32 v20, s52 6925; GCN-HSA-NEXT: v_mov_b32_e32 v21, s53 6926; GCN-HSA-NEXT: v_mov_b32_e32 v0, s54 6927; GCN-HSA-NEXT: v_mov_b32_e32 v1, s55 6928; GCN-HSA-NEXT: v_mov_b32_e32 v33, s41 6929; GCN-HSA-NEXT: v_mov_b32_e32 v34, s38 6930; GCN-HSA-NEXT: flat_store_dwordx4 v[30:31], v[16:19] 6931; GCN-HSA-NEXT: v_mov_b32_e32 v4, s42 6932; GCN-HSA-NEXT: v_mov_b32_e32 v17, s15 6933; GCN-HSA-NEXT: v_mov_b32_e32 v19, s13 6934; GCN-HSA-NEXT: v_mov_b32_e32 v5, s43 6935; GCN-HSA-NEXT: v_mov_b32_e32 v35, s39 6936; GCN-HSA-NEXT: v_mov_b32_e32 v6, s36 6937; GCN-HSA-NEXT: v_mov_b32_e32 v7, s37 6938; GCN-HSA-NEXT: v_mov_b32_e32 v8, s34 6939; GCN-HSA-NEXT: v_mov_b32_e32 v9, s35 6940; GCN-HSA-NEXT: v_mov_b32_e32 v12, s30 6941; GCN-HSA-NEXT: v_mov_b32_e32 v13, s31 6942; GCN-HSA-NEXT: v_mov_b32_e32 v16, s14 6943; GCN-HSA-NEXT: flat_store_dwordx4 v[32:33], v[20:23] 6944; GCN-HSA-NEXT: v_mov_b32_e32 v18, s12 6945; GCN-HSA-NEXT: flat_store_dwordx4 v[24:25], v[0:3] 6946; GCN-HSA-NEXT: flat_store_dwordx4 v[34:35], v[4:7] 6947; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[8:11] 6948; GCN-HSA-NEXT: flat_store_dwordx4 v[18:19], v[12:15] 6949; GCN-HSA-NEXT: v_mov_b32_e32 v2, s10 6950; GCN-HSA-NEXT: s_add_u32 s10, s16, 0xa0 6951; GCN-HSA-NEXT: v_mov_b32_e32 v3, s11 6952; GCN-HSA-NEXT: s_addc_u32 s11, s17, 0 6953; GCN-HSA-NEXT: v_mov_b32_e32 v4, s10 6954; GCN-HSA-NEXT: v_mov_b32_e32 v0, s28 6955; GCN-HSA-NEXT: v_mov_b32_e32 v1, s29 6956; GCN-HSA-NEXT: v_mov_b32_e32 v5, s11 6957; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 6958; GCN-HSA-NEXT: s_nop 0 6959; GCN-HSA-NEXT: v_mov_b32_e32 v2, s8 6960; GCN-HSA-NEXT: s_add_u32 s8, s16, 0x80 6961; GCN-HSA-NEXT: v_mov_b32_e32 v3, s9 6962; GCN-HSA-NEXT: s_addc_u32 s9, s17, 0 6963; GCN-HSA-NEXT: v_mov_b32_e32 v4, s8 6964; GCN-HSA-NEXT: v_mov_b32_e32 v0, s26 6965; GCN-HSA-NEXT: v_mov_b32_e32 v1, s27 6966; GCN-HSA-NEXT: v_mov_b32_e32 v5, s9 6967; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 6968; GCN-HSA-NEXT: s_nop 0 6969; GCN-HSA-NEXT: v_mov_b32_e32 v2, s6 6970; GCN-HSA-NEXT: s_add_u32 s6, s16, 0x60 6971; GCN-HSA-NEXT: v_mov_b32_e32 v3, s7 6972; GCN-HSA-NEXT: s_addc_u32 s7, s17, 0 6973; GCN-HSA-NEXT: v_mov_b32_e32 v4, s6 6974; GCN-HSA-NEXT: v_mov_b32_e32 v0, s24 6975; GCN-HSA-NEXT: v_mov_b32_e32 v1, s25 6976; GCN-HSA-NEXT: v_mov_b32_e32 v5, s7 6977; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 6978; GCN-HSA-NEXT: s_nop 0 6979; GCN-HSA-NEXT: v_mov_b32_e32 v2, s4 6980; GCN-HSA-NEXT: s_add_u32 s4, s16, 64 6981; GCN-HSA-NEXT: v_mov_b32_e32 v3, s5 6982; GCN-HSA-NEXT: s_addc_u32 s5, s17, 0 6983; GCN-HSA-NEXT: v_mov_b32_e32 v4, s4 6984; GCN-HSA-NEXT: v_mov_b32_e32 v0, s22 6985; GCN-HSA-NEXT: v_mov_b32_e32 v1, s23 6986; GCN-HSA-NEXT: v_mov_b32_e32 v5, s5 6987; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 6988; GCN-HSA-NEXT: s_nop 0 6989; GCN-HSA-NEXT: v_mov_b32_e32 v2, s2 6990; GCN-HSA-NEXT: s_add_u32 s2, s16, 32 6991; GCN-HSA-NEXT: v_mov_b32_e32 v3, s3 6992; GCN-HSA-NEXT: s_addc_u32 s3, s17, 0 6993; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 6994; GCN-HSA-NEXT: v_mov_b32_e32 v0, s20 6995; GCN-HSA-NEXT: v_mov_b32_e32 v1, s21 6996; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 6997; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 6998; GCN-HSA-NEXT: v_mov_b32_e32 v4, s16 6999; GCN-HSA-NEXT: v_mov_b32_e32 v0, s18 7000; GCN-HSA-NEXT: v_mov_b32_e32 v1, s19 7001; GCN-HSA-NEXT: v_mov_b32_e32 v2, s0 7002; GCN-HSA-NEXT: v_mov_b32_e32 v3, s1 7003; GCN-HSA-NEXT: v_mov_b32_e32 v5, s17 7004; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 7005; GCN-HSA-NEXT: s_endpgm 7006; 7007; GCN-NOHSA-VI-LABEL: constant_sextload_v32i16_to_v32i64: 7008; GCN-NOHSA-VI: ; %bb.0: 7009; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[16:19], s[0:1], 0x24 7010; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 7011; GCN-NOHSA-VI-NEXT: s_load_dwordx16 s[0:15], s[18:19], 0x0 7012; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 7013; GCN-NOHSA-VI-NEXT: s_mov_b32 s30, s1 7014; GCN-NOHSA-VI-NEXT: s_lshr_b32 s34, s1, 16 7015; GCN-NOHSA-VI-NEXT: s_lshr_b32 s46, s5, 16 7016; GCN-NOHSA-VI-NEXT: s_lshr_b32 s48, s6, 16 7017; GCN-NOHSA-VI-NEXT: s_lshr_b32 s62, s10, 16 7018; GCN-NOHSA-VI-NEXT: s_mov_b32 s64, s11 7019; GCN-NOHSA-VI-NEXT: s_mov_b32 s80, s15 7020; GCN-NOHSA-VI-NEXT: s_lshr_b32 s82, s15, 16 7021; GCN-NOHSA-VI-NEXT: s_lshr_b32 s28, s0, 16 7022; GCN-NOHSA-VI-NEXT: s_mov_b32 s44, s5 7023; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[24:25], s[6:7], 0x100000 7024; GCN-NOHSA-VI-NEXT: s_mov_b32 s50, s7 7025; GCN-NOHSA-VI-NEXT: s_lshr_b32 s52, s7, 16 7026; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[26:27], s[8:9], 0x100000 7027; GCN-NOHSA-VI-NEXT: s_lshr_b32 s54, s8, 16 7028; GCN-NOHSA-VI-NEXT: s_mov_b32 s56, s9 7029; GCN-NOHSA-VI-NEXT: s_lshr_b32 s58, s9, 16 7030; GCN-NOHSA-VI-NEXT: s_lshr_b32 s78, s14, 16 7031; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[8:9], s[30:31], 0x100000 7032; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[6:7], s[34:35], 0x100000 7033; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[30:31], s[46:47], 0x100000 7034; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[34:35], s[48:49], 0x100000 7035; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[46:47], s[62:63], 0x100000 7036; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[48:49], s[64:65], 0x100000 7037; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[62:63], s[80:81], 0x100000 7038; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[64:65], s[82:83], 0x100000 7039; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[18:19], s[0:1], 0x100000 7040; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[20:21], s[2:3], 0x100000 7041; GCN-NOHSA-VI-NEXT: s_lshr_b32 s36, s2, 16 7042; GCN-NOHSA-VI-NEXT: s_mov_b32 s38, s3 7043; GCN-NOHSA-VI-NEXT: s_lshr_b32 s40, s3, 16 7044; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[22:23], s[4:5], 0x100000 7045; GCN-NOHSA-VI-NEXT: s_lshr_b32 s42, s4, 16 7046; GCN-NOHSA-VI-NEXT: s_mov_b32 s72, s13 7047; GCN-NOHSA-VI-NEXT: s_lshr_b32 s74, s13, 16 7048; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[76:77], s[14:15], 0x100000 7049; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 7050; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 7051; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s16 7052; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s17 7053; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[4:5], s[28:29], 0x100000 7054; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[28:29], s[44:45], 0x100000 7055; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[44:45], s[58:59], 0x100000 7056; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[58:59], s[78:79], 0x100000 7057; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s62 7058; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s63 7059; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s64 7060; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s65 7061; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[68:69], s[12:13], 0x100000 7062; GCN-NOHSA-VI-NEXT: s_lshr_b32 s70, s12, 16 7063; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[12:13], s[40:41], 0x100000 7064; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[16:17], s[42:43], 0x100000 7065; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[40:41], s[54:55], 0x100000 7066; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[42:43], s[56:57], 0x100000 7067; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[54:55], s[72:73], 0x100000 7068; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[56:57], s[74:75], 0x100000 7069; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240 7070; GCN-NOHSA-VI-NEXT: s_lshr_b32 s66, s11, 16 7071; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s76 7072; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s77 7073; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s58 7074; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s59 7075; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[14:15], s[38:39], 0x100000 7076; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[38:39], s[52:53], 0x100000 7077; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[52:53], s[70:71], 0x100000 7078; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:224 7079; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[60:61], s[10:11], 0x100000 7080; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s54 7081; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s55 7082; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s56 7083; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s57 7084; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[10:11], s[36:37], 0x100000 7085; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[36:37], s[50:51], 0x100000 7086; GCN-NOHSA-VI-NEXT: s_bfe_i64 s[50:51], s[66:67], 0x100000 7087; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:208 7088; GCN-NOHSA-VI-NEXT: s_nop 0 7089; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s68 7090; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s69 7091; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s52 7092; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s53 7093; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:192 7094; GCN-NOHSA-VI-NEXT: s_nop 0 7095; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s48 7096; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s49 7097; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s50 7098; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s51 7099; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:176 7100; GCN-NOHSA-VI-NEXT: s_nop 0 7101; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s60 7102; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s61 7103; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s46 7104; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s47 7105; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:160 7106; GCN-NOHSA-VI-NEXT: s_nop 0 7107; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s42 7108; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s43 7109; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s44 7110; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s45 7111; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:144 7112; GCN-NOHSA-VI-NEXT: s_nop 0 7113; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s26 7114; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s27 7115; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s40 7116; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s41 7117; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:128 7118; GCN-NOHSA-VI-NEXT: s_nop 0 7119; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s36 7120; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s37 7121; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s38 7122; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s39 7123; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112 7124; GCN-NOHSA-VI-NEXT: s_nop 0 7125; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s24 7126; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s25 7127; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s34 7128; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s35 7129; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96 7130; GCN-NOHSA-VI-NEXT: s_nop 0 7131; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s28 7132; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s29 7133; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s30 7134; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s31 7135; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80 7136; GCN-NOHSA-VI-NEXT: s_nop 0 7137; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s22 7138; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s23 7139; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s16 7140; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s17 7141; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64 7142; GCN-NOHSA-VI-NEXT: s_nop 0 7143; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s14 7144; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s15 7145; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s12 7146; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s13 7147; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 7148; GCN-NOHSA-VI-NEXT: s_nop 0 7149; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s20 7150; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s21 7151; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s10 7152; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s11 7153; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 7154; GCN-NOHSA-VI-NEXT: s_nop 0 7155; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s8 7156; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s9 7157; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s6 7158; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s7 7159; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 7160; GCN-NOHSA-VI-NEXT: s_nop 0 7161; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, s18 7162; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, s19 7163; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v2, s4 7164; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, s5 7165; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 7166; GCN-NOHSA-VI-NEXT: s_endpgm 7167; 7168; EG-LABEL: constant_sextload_v32i16_to_v32i64: 7169; EG: ; %bb.0: 7170; EG-NEXT: ALU 0, @30, KC0[CB0:0-32], KC1[] 7171; EG-NEXT: TEX 0 @22 7172; EG-NEXT: ALU 55, @31, KC0[CB0:0-32], KC1[] 7173; EG-NEXT: TEX 2 @24 7174; EG-NEXT: ALU 74, @87, KC0[CB0:0-32], KC1[] 7175; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T50.XYZW, T38.X, 0 7176; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T49.XYZW, T36.X, 0 7177; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T39.XYZW, T34.X, 0 7178; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T48.XYZW, T33.X, 0 7179; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T47.XYZW, T32.X, 0 7180; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T46.XYZW, T31.X, 0 7181; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T40.XYZW, T30.X, 0 7182; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T45.XYZW, T29.X, 0 7183; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T44.XYZW, T28.X, 0 7184; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T43.XYZW, T27.X, 0 7185; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T26.X, 0 7186; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T42.XYZW, T25.X, 0 7187; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T41.XYZW, T24.X, 0 7188; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T23.X, 0 7189; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T37.XYZW, T22.X, 0 7190; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T35.XYZW, T21.X, 1 7191; EG-NEXT: CF_END 7192; EG-NEXT: Fetch clause starting at 22: 7193; EG-NEXT: VTX_READ_128 T20.XYZW, T19.X, 0, #1 7194; EG-NEXT: Fetch clause starting at 24: 7195; EG-NEXT: VTX_READ_128 T38.XYZW, T19.X, 48, #1 7196; EG-NEXT: VTX_READ_128 T39.XYZW, T19.X, 32, #1 7197; EG-NEXT: VTX_READ_128 T40.XYZW, T19.X, 16, #1 7198; EG-NEXT: ALU clause starting at 30: 7199; EG-NEXT: MOV * T19.X, KC0[2].Z, 7200; EG-NEXT: ALU clause starting at 31: 7201; EG-NEXT: LSHR T21.X, KC0[2].Y, literal.x, 7202; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7203; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 7204; EG-NEXT: LSHR T22.X, PV.W, literal.x, 7205; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7206; EG-NEXT: 2(2.802597e-45), 32(4.484155e-44) 7207; EG-NEXT: LSHR T23.X, PV.W, literal.x, 7208; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7209; EG-NEXT: 2(2.802597e-45), 48(6.726233e-44) 7210; EG-NEXT: LSHR T24.X, PV.W, literal.x, 7211; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7212; EG-NEXT: 2(2.802597e-45), 64(8.968310e-44) 7213; EG-NEXT: LSHR T25.X, PV.W, literal.x, 7214; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7215; EG-NEXT: 2(2.802597e-45), 80(1.121039e-43) 7216; EG-NEXT: LSHR T26.X, PV.W, literal.x, 7217; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7218; EG-NEXT: 2(2.802597e-45), 96(1.345247e-43) 7219; EG-NEXT: LSHR T27.X, PV.W, literal.x, 7220; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7221; EG-NEXT: 2(2.802597e-45), 112(1.569454e-43) 7222; EG-NEXT: LSHR T28.X, PV.W, literal.x, 7223; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7224; EG-NEXT: 2(2.802597e-45), 128(1.793662e-43) 7225; EG-NEXT: LSHR T29.X, PV.W, literal.x, 7226; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7227; EG-NEXT: 2(2.802597e-45), 144(2.017870e-43) 7228; EG-NEXT: LSHR T30.X, PV.W, literal.x, 7229; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7230; EG-NEXT: 2(2.802597e-45), 160(2.242078e-43) 7231; EG-NEXT: LSHR T31.X, PV.W, literal.x, 7232; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7233; EG-NEXT: 2(2.802597e-45), 176(2.466285e-43) 7234; EG-NEXT: LSHR T32.X, PV.W, literal.x, 7235; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7236; EG-NEXT: 2(2.802597e-45), 192(2.690493e-43) 7237; EG-NEXT: LSHR T33.X, PV.W, literal.x, 7238; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7239; EG-NEXT: 2(2.802597e-45), 208(2.914701e-43) 7240; EG-NEXT: LSHR T34.X, PV.W, literal.x, 7241; EG-NEXT: ADD_INT T0.W, KC0[2].Y, literal.y, 7242; EG-NEXT: ASHR * T35.W, T20.X, literal.z, 7243; EG-NEXT: 2(2.802597e-45), 224(3.138909e-43) 7244; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 7245; EG-NEXT: LSHR T36.X, PV.W, literal.x, 7246; EG-NEXT: ASHR T35.Z, T20.X, literal.y, 7247; EG-NEXT: ASHR * T37.W, T20.Y, literal.z, 7248; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 7249; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 7250; EG-NEXT: BFE_INT T35.X, T20.X, 0.0, literal.x, 7251; EG-NEXT: ASHR * T37.Z, T20.Y, literal.x, 7252; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 7253; EG-NEXT: BFE_INT T37.X, T20.Y, 0.0, literal.x, 7254; EG-NEXT: ASHR T35.Y, PV.X, literal.y, 7255; EG-NEXT: ASHR * T19.W, T20.Z, literal.y, 7256; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7257; EG-NEXT: ALU clause starting at 87: 7258; EG-NEXT: ASHR T19.Z, T20.Z, literal.x, 7259; EG-NEXT: ASHR * T41.W, T20.W, literal.y, 7260; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7261; EG-NEXT: BFE_INT T19.X, T20.Z, 0.0, literal.x, 7262; EG-NEXT: ASHR T37.Y, T37.X, literal.y, 7263; EG-NEXT: ASHR T41.Z, T20.W, literal.x, 7264; EG-NEXT: ASHR * T42.W, T40.X, literal.y, BS:VEC_120/SCL_212 7265; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7266; EG-NEXT: BFE_INT T41.X, T20.W, 0.0, literal.x, 7267; EG-NEXT: ASHR T19.Y, PV.X, literal.y, 7268; EG-NEXT: ASHR T42.Z, T40.X, literal.x, 7269; EG-NEXT: ASHR * T20.W, T40.Y, literal.y, 7270; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7271; EG-NEXT: BFE_INT T42.X, T40.X, 0.0, literal.x, 7272; EG-NEXT: ASHR T41.Y, PV.X, literal.y, 7273; EG-NEXT: ASHR T20.Z, T40.Y, literal.x, 7274; EG-NEXT: ASHR * T43.W, T40.Z, literal.y, 7275; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7276; EG-NEXT: BFE_INT T20.X, T40.Y, 0.0, literal.x, 7277; EG-NEXT: ASHR T42.Y, PV.X, literal.y, 7278; EG-NEXT: ASHR T43.Z, T40.Z, literal.x, 7279; EG-NEXT: ASHR * T44.W, T40.W, literal.y, 7280; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7281; EG-NEXT: BFE_INT T43.X, T40.Z, 0.0, literal.x, 7282; EG-NEXT: ASHR T20.Y, PV.X, literal.y, 7283; EG-NEXT: ASHR T44.Z, T40.W, literal.x, 7284; EG-NEXT: ASHR * T45.W, T39.X, literal.y, 7285; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7286; EG-NEXT: BFE_INT T44.X, T40.W, 0.0, literal.x, 7287; EG-NEXT: ASHR T43.Y, PV.X, literal.y, 7288; EG-NEXT: ASHR T45.Z, T39.X, literal.x, 7289; EG-NEXT: ASHR * T40.W, T39.Y, literal.y, 7290; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7291; EG-NEXT: BFE_INT T45.X, T39.X, 0.0, literal.x, 7292; EG-NEXT: ASHR T44.Y, PV.X, literal.y, 7293; EG-NEXT: ASHR T40.Z, T39.Y, literal.x, 7294; EG-NEXT: ASHR * T46.W, T39.Z, literal.y, 7295; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7296; EG-NEXT: BFE_INT T40.X, T39.Y, 0.0, literal.x, 7297; EG-NEXT: ASHR T45.Y, PV.X, literal.y, 7298; EG-NEXT: ASHR T46.Z, T39.Z, literal.x, 7299; EG-NEXT: ASHR * T47.W, T39.W, literal.y, 7300; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7301; EG-NEXT: BFE_INT T46.X, T39.Z, 0.0, literal.x, 7302; EG-NEXT: ASHR T40.Y, PV.X, literal.y, 7303; EG-NEXT: ASHR T47.Z, T39.W, literal.x, 7304; EG-NEXT: ASHR * T48.W, T38.X, literal.y, 7305; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7306; EG-NEXT: BFE_INT T47.X, T39.W, 0.0, literal.x, 7307; EG-NEXT: ASHR T46.Y, PV.X, literal.y, 7308; EG-NEXT: ASHR T48.Z, T38.X, literal.x, 7309; EG-NEXT: ASHR * T39.W, T38.Y, literal.y, 7310; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7311; EG-NEXT: BFE_INT T48.X, T38.X, 0.0, literal.x, 7312; EG-NEXT: ASHR T47.Y, PV.X, literal.y, 7313; EG-NEXT: ASHR T39.Z, T38.Y, literal.x, 7314; EG-NEXT: ASHR * T49.W, T38.Z, literal.y, 7315; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7316; EG-NEXT: BFE_INT T39.X, T38.Y, 0.0, literal.x, 7317; EG-NEXT: ASHR T48.Y, PV.X, literal.y, 7318; EG-NEXT: ASHR T49.Z, T38.Z, literal.x, 7319; EG-NEXT: ASHR * T50.W, T38.W, literal.y, 7320; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7321; EG-NEXT: BFE_INT T49.X, T38.Z, 0.0, literal.x, 7322; EG-NEXT: ASHR T39.Y, PV.X, literal.y, 7323; EG-NEXT: ASHR * T50.Z, T38.W, literal.x, 7324; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7325; EG-NEXT: BFE_INT T50.X, T38.W, 0.0, literal.x, 7326; EG-NEXT: ASHR T49.Y, PV.X, literal.y, 7327; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 7328; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7329; EG-NEXT: 240(3.363116e-43), 0(0.000000e+00) 7330; EG-NEXT: LSHR T38.X, PV.W, literal.x, 7331; EG-NEXT: ASHR * T50.Y, PV.X, literal.y, 7332; EG-NEXT: 2(2.802597e-45), 31(4.344025e-44) 7333 %load = load <32 x i16>, <32 x i16> addrspace(4)* %in 7334 %ext = sext <32 x i16> %load to <32 x i64> 7335 store <32 x i64> %ext, <32 x i64> addrspace(1)* %out 7336 ret void 7337} 7338 7339; These trigger undefined register machine verifier errors 7340 7341; define amdgpu_kernel void @constant_zextload_v64i16_to_v64i64(<64 x i64> addrspace(1)* %out, <64 x i16> addrspace(4)* %in) #0 { 7342; %load = load <64 x i16>, <64 x i16> addrspace(4)* %in 7343; %ext = zext <64 x i16> %load to <64 x i64> 7344; store <64 x i64> %ext, <64 x i64> addrspace(1)* %out 7345; ret void 7346; } 7347 7348; define amdgpu_kernel void @constant_sextload_v64i16_to_v64i64(<64 x i64> addrspace(1)* %out, <64 x i16> addrspace(4)* %in) #0 { 7349; %load = load <64 x i16>, <64 x i16> addrspace(4)* %in 7350; %ext = sext <64 x i16> %load to <64 x i64> 7351; store <64 x i64> %ext, <64 x i64> addrspace(1)* %out 7352; ret void 7353; } 7354 7355attributes #0 = { nounwind } 7356