1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -amdgpu-scalarize-global-loads=false -march=amdgcn -verify-machineinstrs < %s | FileCheck -allow-deprecated-dag-overlap --check-prefix=GCN-NOHSA-SI %s 3; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn--amdhsa -mcpu=kaveri -verify-machineinstrs < %s | FileCheck -allow-deprecated-dag-overlap --check-prefix=GCN-HSA %s 4; RUN: llc -amdgpu-scalarize-global-loads=false -march=amdgcn -mcpu=tonga -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -allow-deprecated-dag-overlap --check-prefix=GCN-NOHSA-VI %s 5; RUN: llc -amdgpu-scalarize-global-loads=false -march=r600 -mcpu=redwood -verify-machineinstrs < %s | FileCheck -allow-deprecated-dag-overlap --check-prefix=EG %s 6; RUN: llc -amdgpu-scalarize-global-loads=false -march=r600 -mcpu=cayman -verify-machineinstrs < %s | FileCheck -allow-deprecated-dag-overlap --check-prefix=CM %s 7 8; FIXME: r600 is broken because the bigger testcases spill and it's not implemented 9 10define amdgpu_kernel void @global_load_i16(i16 addrspace(1)* %out, i16 addrspace(1)* %in) { 11; GCN-NOHSA-SI-LABEL: global_load_i16: 12; GCN-NOHSA-SI: ; %bb.0: ; %entry 13; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 14; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 15; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 16; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 17; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 18; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 19; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 20; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 21; GCN-NOHSA-SI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 22; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 23; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 24; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 25; GCN-NOHSA-SI-NEXT: buffer_store_short v0, off, s[4:7], 0 26; GCN-NOHSA-SI-NEXT: s_endpgm 27; 28; GCN-HSA-LABEL: global_load_i16: 29; GCN-HSA: ; %bb.0: ; %entry 30; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 31; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 32; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 33; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 34; GCN-HSA-NEXT: flat_load_ushort v2, v[0:1] 35; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 36; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 37; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 38; GCN-HSA-NEXT: flat_store_short v[0:1], v2 39; GCN-HSA-NEXT: s_endpgm 40; 41; GCN-NOHSA-VI-LABEL: global_load_i16: 42; GCN-NOHSA-VI: ; %bb.0: ; %entry 43; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 44; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 45; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 46; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 47; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 48; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 49; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 50; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 51; GCN-NOHSA-VI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 52; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 53; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 54; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 55; GCN-NOHSA-VI-NEXT: buffer_store_short v0, off, s[4:7], 0 56; GCN-NOHSA-VI-NEXT: s_endpgm 57; 58; EG-LABEL: global_load_i16: 59; EG: ; %bb.0: ; %entry 60; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 61; EG-NEXT: TEX 0 @6 62; EG-NEXT: ALU 11, @9, KC0[CB0:0-32], KC1[] 63; EG-NEXT: MEM_RAT MSKOR T0.XW, T1.X 64; EG-NEXT: CF_END 65; EG-NEXT: PAD 66; EG-NEXT: Fetch clause starting at 6: 67; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 68; EG-NEXT: ALU clause starting at 8: 69; EG-NEXT: MOV * T0.X, KC0[2].Z, 70; EG-NEXT: ALU clause starting at 9: 71; EG-NEXT: AND_INT T0.W, KC0[2].Y, literal.x, 72; EG-NEXT: AND_INT * T1.W, T0.X, literal.y, 73; EG-NEXT: 3(4.203895e-45), 65535(9.183409e-41) 74; EG-NEXT: LSHL * T0.W, PV.W, literal.x, 75; EG-NEXT: 3(4.203895e-45), 0(0.000000e+00) 76; EG-NEXT: LSHL T0.X, T1.W, PV.W, 77; EG-NEXT: LSHL * T0.W, literal.x, PV.W, 78; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 79; EG-NEXT: MOV T0.Y, 0.0, 80; EG-NEXT: MOV * T0.Z, 0.0, 81; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 82; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 83; 84; CM-LABEL: global_load_i16: 85; CM: ; %bb.0: ; %entry 86; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 87; CM-NEXT: TEX 0 @6 88; CM-NEXT: ALU 11, @9, KC0[CB0:0-32], KC1[] 89; CM-NEXT: MEM_RAT MSKOR T0.XW, T1.X 90; CM-NEXT: CF_END 91; CM-NEXT: PAD 92; CM-NEXT: Fetch clause starting at 6: 93; CM-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 94; CM-NEXT: ALU clause starting at 8: 95; CM-NEXT: MOV * T0.X, KC0[2].Z, 96; CM-NEXT: ALU clause starting at 9: 97; CM-NEXT: AND_INT * T0.W, KC0[2].Y, literal.x, 98; CM-NEXT: 3(4.203895e-45), 0(0.000000e+00) 99; CM-NEXT: AND_INT T0.Z, T0.X, literal.x, 100; CM-NEXT: LSHL * T0.W, PV.W, literal.y, 101; CM-NEXT: 65535(9.183409e-41), 3(4.203895e-45) 102; CM-NEXT: LSHL T0.X, PV.Z, PV.W, 103; CM-NEXT: LSHL * T0.W, literal.x, PV.W, 104; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 105; CM-NEXT: MOV T0.Y, 0.0, 106; CM-NEXT: MOV * T0.Z, 0.0, 107; CM-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 108; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 109entry: 110 %ld = load i16, i16 addrspace(1)* %in 111 store i16 %ld, i16 addrspace(1)* %out 112 ret void 113} 114 115define amdgpu_kernel void @global_load_v2i16(<2 x i16> addrspace(1)* %out, <2 x i16> addrspace(1)* %in) { 116; GCN-NOHSA-SI-LABEL: global_load_v2i16: 117; GCN-NOHSA-SI: ; %bb.0: ; %entry 118; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 119; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 120; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 121; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 122; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 123; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 124; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 125; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 126; GCN-NOHSA-SI-NEXT: buffer_load_dword v0, off, s[8:11], 0 127; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 128; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 129; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 130; GCN-NOHSA-SI-NEXT: buffer_store_dword v0, off, s[4:7], 0 131; GCN-NOHSA-SI-NEXT: s_endpgm 132; 133; GCN-HSA-LABEL: global_load_v2i16: 134; GCN-HSA: ; %bb.0: ; %entry 135; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 136; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 137; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 138; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 139; GCN-HSA-NEXT: flat_load_dword v2, v[0:1] 140; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 141; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 142; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 143; GCN-HSA-NEXT: flat_store_dword v[0:1], v2 144; GCN-HSA-NEXT: s_endpgm 145; 146; GCN-NOHSA-VI-LABEL: global_load_v2i16: 147; GCN-NOHSA-VI: ; %bb.0: ; %entry 148; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 149; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 150; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 151; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 152; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 153; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 154; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 155; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 156; GCN-NOHSA-VI-NEXT: buffer_load_dword v0, off, s[8:11], 0 157; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 158; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 159; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 160; GCN-NOHSA-VI-NEXT: buffer_store_dword v0, off, s[4:7], 0 161; GCN-NOHSA-VI-NEXT: s_endpgm 162; 163; EG-LABEL: global_load_v2i16: 164; EG: ; %bb.0: ; %entry 165; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 166; EG-NEXT: TEX 0 @6 167; EG-NEXT: ALU 1, @9, KC0[CB0:0-32], KC1[] 168; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1 169; EG-NEXT: CF_END 170; EG-NEXT: PAD 171; EG-NEXT: Fetch clause starting at 6: 172; EG-NEXT: VTX_READ_32 T0.X, T0.X, 0, #1 173; EG-NEXT: ALU clause starting at 8: 174; EG-NEXT: MOV * T0.X, KC0[2].Z, 175; EG-NEXT: ALU clause starting at 9: 176; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 177; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 178; 179; CM-LABEL: global_load_v2i16: 180; CM: ; %bb.0: ; %entry 181; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 182; CM-NEXT: TEX 0 @6 183; CM-NEXT: ALU 1, @9, KC0[CB0:0-32], KC1[] 184; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T0.X, T1.X 185; CM-NEXT: CF_END 186; CM-NEXT: PAD 187; CM-NEXT: Fetch clause starting at 6: 188; CM-NEXT: VTX_READ_32 T0.X, T0.X, 0, #1 189; CM-NEXT: ALU clause starting at 8: 190; CM-NEXT: MOV * T0.X, KC0[2].Z, 191; CM-NEXT: ALU clause starting at 9: 192; CM-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 193; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 194entry: 195 %ld = load <2 x i16>, <2 x i16> addrspace(1)* %in 196 store <2 x i16> %ld, <2 x i16> addrspace(1)* %out 197 ret void 198} 199 200define amdgpu_kernel void @global_load_v3i16(<3 x i16> addrspace(1)* %out, <3 x i16> addrspace(1)* %in) { 201; GCN-NOHSA-SI-LABEL: global_load_v3i16: 202; GCN-NOHSA-SI: ; %bb.0: ; %entry 203; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 204; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 205; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 206; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 207; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 208; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 209; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 210; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 211; GCN-NOHSA-SI-NEXT: buffer_load_dwordx2 v[0:1], off, s[8:11], 0 212; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 213; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 214; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 215; GCN-NOHSA-SI-NEXT: buffer_store_short v1, off, s[4:7], 0 offset:4 216; GCN-NOHSA-SI-NEXT: buffer_store_dword v0, off, s[4:7], 0 217; GCN-NOHSA-SI-NEXT: s_endpgm 218; 219; GCN-HSA-LABEL: global_load_v3i16: 220; GCN-HSA: ; %bb.0: ; %entry 221; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 222; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 223; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 224; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 225; GCN-HSA-NEXT: flat_load_dwordx2 v[0:1], v[0:1] 226; GCN-HSA-NEXT: s_add_u32 s2, s0, 4 227; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 228; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 229; GCN-HSA-NEXT: v_mov_b32_e32 v3, s1 230; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 231; GCN-HSA-NEXT: v_mov_b32_e32 v2, s0 232; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 233; GCN-HSA-NEXT: flat_store_short v[4:5], v1 234; GCN-HSA-NEXT: flat_store_dword v[2:3], v0 235; GCN-HSA-NEXT: s_endpgm 236; 237; GCN-NOHSA-VI-LABEL: global_load_v3i16: 238; GCN-NOHSA-VI: ; %bb.0: ; %entry 239; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 240; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 241; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 242; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 243; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 244; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 245; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 246; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 247; GCN-NOHSA-VI-NEXT: buffer_load_dwordx2 v[0:1], off, s[8:11], 0 248; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 249; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 250; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 251; GCN-NOHSA-VI-NEXT: buffer_store_short v1, off, s[4:7], 0 offset:4 252; GCN-NOHSA-VI-NEXT: buffer_store_dword v0, off, s[4:7], 0 253; GCN-NOHSA-VI-NEXT: s_endpgm 254; 255; EG-LABEL: global_load_v3i16: 256; EG: ; %bb.0: ; %entry 257; EG-NEXT: ALU 0, @12, KC0[CB0:0-32], KC1[] 258; EG-NEXT: TEX 2 @6 259; EG-NEXT: ALU 19, @13, KC0[CB0:0-32], KC1[] 260; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T6.X, T7.X, 0 261; EG-NEXT: MEM_RAT MSKOR T5.XW, T8.X 262; EG-NEXT: CF_END 263; EG-NEXT: Fetch clause starting at 6: 264; EG-NEXT: VTX_READ_16 T6.X, T5.X, 0, #1 265; EG-NEXT: VTX_READ_16 T7.X, T5.X, 2, #1 266; EG-NEXT: VTX_READ_16 T5.X, T5.X, 4, #1 267; EG-NEXT: ALU clause starting at 12: 268; EG-NEXT: MOV * T5.X, KC0[2].Z, 269; EG-NEXT: ALU clause starting at 13: 270; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 271; EG-NEXT: 4(5.605194e-45), 0(0.000000e+00) 272; EG-NEXT: AND_INT T1.W, PV.W, literal.x, 273; EG-NEXT: AND_INT * T2.W, T5.X, literal.y, 274; EG-NEXT: 3(4.203895e-45), 65535(9.183409e-41) 275; EG-NEXT: LSHL * T1.W, PV.W, literal.x, 276; EG-NEXT: 3(4.203895e-45), 0(0.000000e+00) 277; EG-NEXT: LSHL T5.X, T2.W, PV.W, 278; EG-NEXT: LSHL * T5.W, literal.x, PV.W, 279; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 280; EG-NEXT: MOV T5.Y, 0.0, 281; EG-NEXT: MOV * T5.Z, 0.0, 282; EG-NEXT: LSHR T8.X, T0.W, literal.x, 283; EG-NEXT: LSHL T0.W, T7.X, literal.y, 284; EG-NEXT: AND_INT * T1.W, T6.X, literal.z, 285; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 286; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 287; EG-NEXT: OR_INT T6.X, PV.W, PS, 288; EG-NEXT: LSHR * T7.X, KC0[2].Y, literal.x, 289; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 290; 291; CM-LABEL: global_load_v3i16: 292; CM: ; %bb.0: ; %entry 293; CM-NEXT: ALU 0, @12, KC0[CB0:0-32], KC1[] 294; CM-NEXT: TEX 2 @6 295; CM-NEXT: ALU 19, @13, KC0[CB0:0-32], KC1[] 296; CM-NEXT: MEM_RAT MSKOR T5.XW, T8.X 297; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T6.X, T7.X 298; CM-NEXT: CF_END 299; CM-NEXT: Fetch clause starting at 6: 300; CM-NEXT: VTX_READ_16 T6.X, T5.X, 0, #1 301; CM-NEXT: VTX_READ_16 T7.X, T5.X, 2, #1 302; CM-NEXT: VTX_READ_16 T5.X, T5.X, 4, #1 303; CM-NEXT: ALU clause starting at 12: 304; CM-NEXT: MOV * T5.X, KC0[2].Z, 305; CM-NEXT: ALU clause starting at 13: 306; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 307; CM-NEXT: 4(5.605194e-45), 0(0.000000e+00) 308; CM-NEXT: AND_INT * T1.W, PV.W, literal.x, 309; CM-NEXT: 3(4.203895e-45), 0(0.000000e+00) 310; CM-NEXT: AND_INT T0.Z, T5.X, literal.x, 311; CM-NEXT: LSHL * T1.W, PV.W, literal.y, 312; CM-NEXT: 65535(9.183409e-41), 3(4.203895e-45) 313; CM-NEXT: LSHL T5.X, PV.Z, PV.W, 314; CM-NEXT: LSHL * T5.W, literal.x, PV.W, 315; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 316; CM-NEXT: MOV T5.Y, 0.0, 317; CM-NEXT: MOV * T5.Z, 0.0, 318; CM-NEXT: LSHL T0.Z, T7.X, literal.x, 319; CM-NEXT: AND_INT * T1.W, T6.X, literal.y, BS:VEC_120/SCL_212 320; CM-NEXT: 16(2.242078e-44), 65535(9.183409e-41) 321; CM-NEXT: OR_INT * T6.X, PV.Z, PV.W, 322; CM-NEXT: LSHR * T7.X, KC0[2].Y, literal.x, 323; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 324; CM-NEXT: LSHR * T8.X, T0.W, literal.x, 325; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 326entry: 327 %ld = load <3 x i16>, <3 x i16> addrspace(1)* %in 328 store <3 x i16> %ld, <3 x i16> addrspace(1)* %out 329 ret void 330} 331 332define amdgpu_kernel void @global_load_v4i16(<4 x i16> addrspace(1)* %out, <4 x i16> addrspace(1)* %in) { 333; GCN-NOHSA-SI-LABEL: global_load_v4i16: 334; GCN-NOHSA-SI: ; %bb.0: ; %entry 335; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 336; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 337; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 338; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 339; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 340; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 341; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 342; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 343; GCN-NOHSA-SI-NEXT: buffer_load_dwordx2 v[0:1], off, s[8:11], 0 344; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 345; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 346; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 347; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 348; GCN-NOHSA-SI-NEXT: s_endpgm 349; 350; GCN-HSA-LABEL: global_load_v4i16: 351; GCN-HSA: ; %bb.0: ; %entry 352; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 353; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 354; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 355; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 356; GCN-HSA-NEXT: flat_load_dwordx2 v[0:1], v[0:1] 357; GCN-HSA-NEXT: v_mov_b32_e32 v2, s0 358; GCN-HSA-NEXT: v_mov_b32_e32 v3, s1 359; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 360; GCN-HSA-NEXT: flat_store_dwordx2 v[2:3], v[0:1] 361; GCN-HSA-NEXT: s_endpgm 362; 363; GCN-NOHSA-VI-LABEL: global_load_v4i16: 364; GCN-NOHSA-VI: ; %bb.0: ; %entry 365; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 366; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 367; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 368; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 369; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 370; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 371; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 372; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 373; GCN-NOHSA-VI-NEXT: buffer_load_dwordx2 v[0:1], off, s[8:11], 0 374; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 375; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 376; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 377; GCN-NOHSA-VI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 378; GCN-NOHSA-VI-NEXT: s_endpgm 379; 380; EG-LABEL: global_load_v4i16: 381; EG: ; %bb.0: ; %entry 382; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 383; EG-NEXT: TEX 0 @6 384; EG-NEXT: ALU 1, @9, KC0[CB0:0-32], KC1[] 385; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1 386; EG-NEXT: CF_END 387; EG-NEXT: PAD 388; EG-NEXT: Fetch clause starting at 6: 389; EG-NEXT: VTX_READ_64 T0.XY, T0.X, 0, #1 390; EG-NEXT: ALU clause starting at 8: 391; EG-NEXT: MOV * T0.X, KC0[2].Z, 392; EG-NEXT: ALU clause starting at 9: 393; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 394; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 395; 396; CM-LABEL: global_load_v4i16: 397; CM: ; %bb.0: ; %entry 398; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 399; CM-NEXT: TEX 0 @6 400; CM-NEXT: ALU 1, @9, KC0[CB0:0-32], KC1[] 401; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T0, T1.X 402; CM-NEXT: CF_END 403; CM-NEXT: PAD 404; CM-NEXT: Fetch clause starting at 6: 405; CM-NEXT: VTX_READ_64 T0.XY, T0.X, 0, #1 406; CM-NEXT: ALU clause starting at 8: 407; CM-NEXT: MOV * T0.X, KC0[2].Z, 408; CM-NEXT: ALU clause starting at 9: 409; CM-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 410; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 411entry: 412 %ld = load <4 x i16>, <4 x i16> addrspace(1)* %in 413 store <4 x i16> %ld, <4 x i16> addrspace(1)* %out 414 ret void 415} 416 417define amdgpu_kernel void @global_load_v8i16(<8 x i16> addrspace(1)* %out, <8 x i16> addrspace(1)* %in) { 418; GCN-NOHSA-SI-LABEL: global_load_v8i16: 419; GCN-NOHSA-SI: ; %bb.0: ; %entry 420; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 421; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 422; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 423; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 424; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 425; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 426; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 427; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 428; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 429; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 430; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 431; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 432; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 433; GCN-NOHSA-SI-NEXT: s_endpgm 434; 435; GCN-HSA-LABEL: global_load_v8i16: 436; GCN-HSA: ; %bb.0: ; %entry 437; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 438; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 439; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 440; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 441; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 442; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 443; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 444; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 445; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 446; GCN-HSA-NEXT: s_endpgm 447; 448; GCN-NOHSA-VI-LABEL: global_load_v8i16: 449; GCN-NOHSA-VI: ; %bb.0: ; %entry 450; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 451; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 452; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 453; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 454; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 455; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 456; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 457; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 458; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 459; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 460; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 461; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 462; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 463; GCN-NOHSA-VI-NEXT: s_endpgm 464; 465; EG-LABEL: global_load_v8i16: 466; EG: ; %bb.0: ; %entry 467; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 468; EG-NEXT: TEX 0 @6 469; EG-NEXT: ALU 1, @9, KC0[CB0:0-32], KC1[] 470; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T1.X, 1 471; EG-NEXT: CF_END 472; EG-NEXT: PAD 473; EG-NEXT: Fetch clause starting at 6: 474; EG-NEXT: VTX_READ_128 T0.XYZW, T0.X, 0, #1 475; EG-NEXT: ALU clause starting at 8: 476; EG-NEXT: MOV * T0.X, KC0[2].Z, 477; EG-NEXT: ALU clause starting at 9: 478; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 479; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 480; 481; CM-LABEL: global_load_v8i16: 482; CM: ; %bb.0: ; %entry 483; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 484; CM-NEXT: TEX 0 @6 485; CM-NEXT: ALU 1, @9, KC0[CB0:0-32], KC1[] 486; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T0, T1.X 487; CM-NEXT: CF_END 488; CM-NEXT: PAD 489; CM-NEXT: Fetch clause starting at 6: 490; CM-NEXT: VTX_READ_128 T0.XYZW, T0.X, 0, #1 491; CM-NEXT: ALU clause starting at 8: 492; CM-NEXT: MOV * T0.X, KC0[2].Z, 493; CM-NEXT: ALU clause starting at 9: 494; CM-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 495; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 496entry: 497 %ld = load <8 x i16>, <8 x i16> addrspace(1)* %in 498 store <8 x i16> %ld, <8 x i16> addrspace(1)* %out 499 ret void 500} 501 502define amdgpu_kernel void @global_load_v16i16(<16 x i16> addrspace(1)* %out, <16 x i16> addrspace(1)* %in) { 503; GCN-NOHSA-SI-LABEL: global_load_v16i16: 504; GCN-NOHSA-SI: ; %bb.0: ; %entry 505; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 506; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 507; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 508; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 509; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 510; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 511; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 512; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 513; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 offset:16 514; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 515; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 516; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 517; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(1) 518; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 offset:16 519; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(1) 520; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 521; GCN-NOHSA-SI-NEXT: s_endpgm 522; 523; GCN-HSA-LABEL: global_load_v16i16: 524; GCN-HSA: ; %bb.0: ; %entry 525; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 526; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 527; GCN-HSA-NEXT: s_add_u32 s4, s0, 16 528; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 529; GCN-HSA-NEXT: s_addc_u32 s5, s1, 0 530; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 531; GCN-HSA-NEXT: s_add_u32 s2, s2, 16 532; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0 533; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 534; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 535; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 536; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5] 537; GCN-HSA-NEXT: v_mov_b32_e32 v11, s5 538; GCN-HSA-NEXT: v_mov_b32_e32 v9, s1 539; GCN-HSA-NEXT: v_mov_b32_e32 v10, s4 540; GCN-HSA-NEXT: v_mov_b32_e32 v8, s0 541; GCN-HSA-NEXT: s_waitcnt vmcnt(1) 542; GCN-HSA-NEXT: flat_store_dwordx4 v[10:11], v[0:3] 543; GCN-HSA-NEXT: s_waitcnt vmcnt(1) 544; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[4:7] 545; GCN-HSA-NEXT: s_endpgm 546; 547; GCN-NOHSA-VI-LABEL: global_load_v16i16: 548; GCN-NOHSA-VI: ; %bb.0: ; %entry 549; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 550; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 551; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 552; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 553; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 554; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 555; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 556; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 557; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 offset:16 558; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 559; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 560; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 561; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(1) 562; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 offset:16 563; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(1) 564; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 565; GCN-NOHSA-VI-NEXT: s_endpgm 566; 567; EG-LABEL: global_load_v16i16: 568; EG: ; %bb.0: ; %entry 569; EG-NEXT: ALU 0, @12, KC0[CB0:0-32], KC1[] 570; EG-NEXT: TEX 0 @8 571; EG-NEXT: ALU 1, @13, KC0[CB0:0-32], KC1[] 572; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0 573; EG-NEXT: TEX 0 @10 574; EG-NEXT: ALU 3, @15, KC0[CB0:0-32], KC1[] 575; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T1.X, 1 576; EG-NEXT: CF_END 577; EG-NEXT: Fetch clause starting at 8: 578; EG-NEXT: VTX_READ_128 T1.XYZW, T0.X, 0, #1 579; EG-NEXT: Fetch clause starting at 10: 580; EG-NEXT: VTX_READ_128 T0.XYZW, T0.X, 16, #1 581; EG-NEXT: ALU clause starting at 12: 582; EG-NEXT: MOV * T0.X, KC0[2].Z, 583; EG-NEXT: ALU clause starting at 13: 584; EG-NEXT: LSHR * T2.X, KC0[2].Y, literal.x, 585; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 586; EG-NEXT: ALU clause starting at 15: 587; EG-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.x, 588; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 589; EG-NEXT: LSHR * T1.X, PV.W, literal.x, 590; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 591; 592; CM-LABEL: global_load_v16i16: 593; CM: ; %bb.0: ; %entry 594; CM-NEXT: ALU 0, @12, KC0[CB0:0-32], KC1[] 595; CM-NEXT: TEX 0 @8 596; CM-NEXT: ALU 1, @13, KC0[CB0:0-32], KC1[] 597; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T1, T2.X 598; CM-NEXT: TEX 0 @10 599; CM-NEXT: ALU 3, @15, KC0[CB0:0-32], KC1[] 600; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T0, T1.X 601; CM-NEXT: CF_END 602; CM-NEXT: Fetch clause starting at 8: 603; CM-NEXT: VTX_READ_128 T1.XYZW, T0.X, 0, #1 604; CM-NEXT: Fetch clause starting at 10: 605; CM-NEXT: VTX_READ_128 T0.XYZW, T0.X, 16, #1 606; CM-NEXT: ALU clause starting at 12: 607; CM-NEXT: MOV * T0.X, KC0[2].Z, 608; CM-NEXT: ALU clause starting at 13: 609; CM-NEXT: LSHR * T2.X, KC0[2].Y, literal.x, 610; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 611; CM-NEXT: ALU clause starting at 15: 612; CM-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.x, 613; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 614; CM-NEXT: LSHR * T1.X, PV.W, literal.x, 615; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 616entry: 617 %ld = load <16 x i16>, <16 x i16> addrspace(1)* %in 618 store <16 x i16> %ld, <16 x i16> addrspace(1)* %out 619 ret void 620} 621 622define amdgpu_kernel void @global_load_v16i16_align2(<16 x i16> addrspace(1)* %in, <16 x i16> addrspace(1)* %out) #0 { 623; GCN-NOHSA-SI-LABEL: global_load_v16i16_align2: 624; GCN-NOHSA-SI: ; %bb.0: ; %entry 625; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 626; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 627; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 628; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 629; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 630; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 631; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 632; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 633; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 634; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 635; GCN-NOHSA-SI-NEXT: buffer_load_ushort v0, off, s[4:7], 0 636; GCN-NOHSA-SI-NEXT: buffer_load_ushort v1, off, s[4:7], 0 offset:2 637; GCN-NOHSA-SI-NEXT: buffer_load_ushort v4, off, s[4:7], 0 offset:4 638; GCN-NOHSA-SI-NEXT: buffer_load_ushort v2, off, s[4:7], 0 offset:6 639; GCN-NOHSA-SI-NEXT: buffer_load_ushort v5, off, s[4:7], 0 offset:8 640; GCN-NOHSA-SI-NEXT: buffer_load_ushort v3, off, s[4:7], 0 offset:10 641; GCN-NOHSA-SI-NEXT: buffer_load_ushort v6, off, s[4:7], 0 offset:12 642; GCN-NOHSA-SI-NEXT: buffer_load_ushort v7, off, s[4:7], 0 offset:14 643; GCN-NOHSA-SI-NEXT: buffer_load_ushort v8, off, s[4:7], 0 offset:16 644; GCN-NOHSA-SI-NEXT: buffer_load_ushort v9, off, s[4:7], 0 offset:18 645; GCN-NOHSA-SI-NEXT: buffer_load_ushort v10, off, s[4:7], 0 offset:20 646; GCN-NOHSA-SI-NEXT: buffer_load_ushort v11, off, s[4:7], 0 offset:22 647; GCN-NOHSA-SI-NEXT: buffer_load_ushort v12, off, s[4:7], 0 offset:24 648; GCN-NOHSA-SI-NEXT: buffer_load_ushort v13, off, s[4:7], 0 offset:26 649; GCN-NOHSA-SI-NEXT: buffer_load_ushort v14, off, s[4:7], 0 offset:28 650; GCN-NOHSA-SI-NEXT: buffer_load_ushort v15, off, s[4:7], 0 offset:30 651; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(8) 652; GCN-NOHSA-SI-NEXT: v_lshlrev_b32_e32 v7, 16, v7 653; GCN-NOHSA-SI-NEXT: v_lshlrev_b32_e32 v16, 16, v3 654; GCN-NOHSA-SI-NEXT: v_lshlrev_b32_e32 v17, 16, v2 655; GCN-NOHSA-SI-NEXT: v_lshlrev_b32_e32 v18, 16, v1 656; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 657; GCN-NOHSA-SI-NEXT: v_lshlrev_b32_e32 v15, 16, v15 658; GCN-NOHSA-SI-NEXT: v_lshlrev_b32_e32 v13, 16, v13 659; GCN-NOHSA-SI-NEXT: v_lshlrev_b32_e32 v11, 16, v11 660; GCN-NOHSA-SI-NEXT: v_lshlrev_b32_e32 v9, 16, v9 661; GCN-NOHSA-SI-NEXT: v_or_b32_e32 v3, v7, v6 662; GCN-NOHSA-SI-NEXT: v_or_b32_e32 v2, v16, v5 663; GCN-NOHSA-SI-NEXT: v_or_b32_e32 v1, v17, v4 664; GCN-NOHSA-SI-NEXT: v_or_b32_e32 v0, v18, v0 665; GCN-NOHSA-SI-NEXT: v_or_b32_e32 v7, v15, v14 666; GCN-NOHSA-SI-NEXT: v_or_b32_e32 v6, v13, v12 667; GCN-NOHSA-SI-NEXT: v_or_b32_e32 v5, v11, v10 668; GCN-NOHSA-SI-NEXT: v_or_b32_e32 v4, v9, v8 669; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[8:11], 0 offset:16 670; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[8:11], 0 671; GCN-NOHSA-SI-NEXT: s_endpgm 672; 673; GCN-HSA-LABEL: global_load_v16i16_align2: 674; GCN-HSA: ; %bb.0: ; %entry 675; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 676; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 677; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 678; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 679; GCN-HSA-NEXT: s_add_u32 s0, s0, 16 680; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 681; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 682; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 683; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 684; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5] 685; GCN-HSA-NEXT: s_add_u32 s0, s2, 16 686; GCN-HSA-NEXT: s_addc_u32 s1, s3, 0 687; GCN-HSA-NEXT: v_mov_b32_e32 v11, s1 688; GCN-HSA-NEXT: v_mov_b32_e32 v9, s3 689; GCN-HSA-NEXT: v_mov_b32_e32 v10, s0 690; GCN-HSA-NEXT: v_mov_b32_e32 v8, s2 691; GCN-HSA-NEXT: s_waitcnt vmcnt(1) 692; GCN-HSA-NEXT: flat_store_dwordx4 v[10:11], v[0:3] 693; GCN-HSA-NEXT: s_waitcnt vmcnt(1) 694; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[4:7] 695; GCN-HSA-NEXT: s_endpgm 696; 697; GCN-NOHSA-VI-LABEL: global_load_v16i16_align2: 698; GCN-NOHSA-VI: ; %bb.0: ; %entry 699; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 700; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 701; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 702; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 703; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 704; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 705; GCN-NOHSA-VI-NEXT: buffer_load_ushort v0, off, s[4:7], 0 offset:14 706; GCN-NOHSA-VI-NEXT: buffer_load_ushort v1, off, s[4:7], 0 offset:10 707; GCN-NOHSA-VI-NEXT: buffer_load_ushort v2, off, s[4:7], 0 offset:6 708; GCN-NOHSA-VI-NEXT: buffer_load_ushort v3, off, s[4:7], 0 offset:2 709; GCN-NOHSA-VI-NEXT: buffer_load_ushort v4, off, s[4:7], 0 offset:30 710; GCN-NOHSA-VI-NEXT: buffer_load_ushort v5, off, s[4:7], 0 offset:26 711; GCN-NOHSA-VI-NEXT: buffer_load_ushort v6, off, s[4:7], 0 offset:22 712; GCN-NOHSA-VI-NEXT: buffer_load_ushort v7, off, s[4:7], 0 offset:18 713; GCN-NOHSA-VI-NEXT: buffer_load_ushort v8, off, s[4:7], 0 offset:12 714; GCN-NOHSA-VI-NEXT: buffer_load_ushort v9, off, s[4:7], 0 offset:8 715; GCN-NOHSA-VI-NEXT: buffer_load_ushort v10, off, s[4:7], 0 offset:4 716; GCN-NOHSA-VI-NEXT: buffer_load_ushort v11, off, s[4:7], 0 717; GCN-NOHSA-VI-NEXT: buffer_load_ushort v12, off, s[4:7], 0 offset:28 718; GCN-NOHSA-VI-NEXT: buffer_load_ushort v13, off, s[4:7], 0 offset:24 719; GCN-NOHSA-VI-NEXT: buffer_load_ushort v14, off, s[4:7], 0 offset:20 720; GCN-NOHSA-VI-NEXT: buffer_load_ushort v15, off, s[4:7], 0 offset:16 721; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s2 722; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s3 723; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(14) 724; GCN-NOHSA-VI-NEXT: v_lshlrev_b32_e32 v0, 16, v0 725; GCN-NOHSA-VI-NEXT: v_lshlrev_b32_e32 v1, 16, v1 726; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(13) 727; GCN-NOHSA-VI-NEXT: v_lshlrev_b32_e32 v16, 16, v2 728; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(12) 729; GCN-NOHSA-VI-NEXT: v_lshlrev_b32_e32 v17, 16, v3 730; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(11) 731; GCN-NOHSA-VI-NEXT: v_lshlrev_b32_e32 v4, 16, v4 732; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(10) 733; GCN-NOHSA-VI-NEXT: v_lshlrev_b32_e32 v5, 16, v5 734; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(9) 735; GCN-NOHSA-VI-NEXT: v_lshlrev_b32_e32 v18, 16, v6 736; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(8) 737; GCN-NOHSA-VI-NEXT: v_lshlrev_b32_e32 v19, 16, v7 738; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(7) 739; GCN-NOHSA-VI-NEXT: v_or_b32_e32 v3, v0, v8 740; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(6) 741; GCN-NOHSA-VI-NEXT: v_or_b32_e32 v2, v1, v9 742; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(5) 743; GCN-NOHSA-VI-NEXT: v_or_b32_e32 v1, v16, v10 744; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(4) 745; GCN-NOHSA-VI-NEXT: v_or_b32_e32 v0, v17, v11 746; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(3) 747; GCN-NOHSA-VI-NEXT: v_or_b32_e32 v7, v4, v12 748; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(2) 749; GCN-NOHSA-VI-NEXT: v_or_b32_e32 v6, v5, v13 750; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(1) 751; GCN-NOHSA-VI-NEXT: v_or_b32_e32 v5, v18, v14 752; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 753; GCN-NOHSA-VI-NEXT: v_or_b32_e32 v4, v19, v15 754; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 offset:16 755; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 756; GCN-NOHSA-VI-NEXT: s_endpgm 757; 758; EG-LABEL: global_load_v16i16_align2: 759; EG: ; %bb.0: ; %entry 760; EG-NEXT: ALU 0, @10, KC0[CB0:0-32], KC1[] 761; EG-NEXT: TEX 1 @6 762; EG-NEXT: ALU 4, @11, KC0[CB0:0-32], KC1[] 763; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T3.X, 0 764; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T2.X, 1 765; EG-NEXT: CF_END 766; EG-NEXT: Fetch clause starting at 6: 767; EG-NEXT: VTX_READ_128 T1.XYZW, T0.X, 16, #1 768; EG-NEXT: VTX_READ_128 T0.XYZW, T0.X, 0, #1 769; EG-NEXT: ALU clause starting at 10: 770; EG-NEXT: MOV * T0.X, KC0[2].Y, 771; EG-NEXT: ALU clause starting at 11: 772; EG-NEXT: LSHR T2.X, KC0[2].Z, literal.x, 773; EG-NEXT: ADD_INT * T2.W, KC0[2].Z, literal.y, 774; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 775; EG-NEXT: LSHR * T3.X, PV.W, literal.x, 776; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 777; 778; CM-LABEL: global_load_v16i16_align2: 779; CM: ; %bb.0: ; %entry 780; CM-NEXT: ALU 0, @10, KC0[CB0:0-32], KC1[] 781; CM-NEXT: TEX 1 @6 782; CM-NEXT: ALU 5, @11, KC0[CB0:0-32], KC1[] 783; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T0, T3.X 784; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T1, T2.X 785; CM-NEXT: CF_END 786; CM-NEXT: Fetch clause starting at 6: 787; CM-NEXT: VTX_READ_128 T1.XYZW, T0.X, 16, #1 788; CM-NEXT: VTX_READ_128 T0.XYZW, T0.X, 0, #1 789; CM-NEXT: ALU clause starting at 10: 790; CM-NEXT: MOV * T0.X, KC0[2].Y, 791; CM-NEXT: ALU clause starting at 11: 792; CM-NEXT: ADD_INT * T2.W, KC0[2].Z, literal.x, 793; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 794; CM-NEXT: LSHR * T2.X, PV.W, literal.x, 795; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 796; CM-NEXT: LSHR * T3.X, KC0[2].Z, literal.x, 797; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 798entry: 799 %ld = load <16 x i16>, <16 x i16> addrspace(1)* %in, align 2 800 store <16 x i16> %ld, <16 x i16> addrspace(1)* %out, align 32 801 ret void 802} 803 804define amdgpu_kernel void @global_zextload_i16_to_i32(i32 addrspace(1)* %out, i16 addrspace(1)* %in) #0 { 805; GCN-NOHSA-SI-LABEL: global_zextload_i16_to_i32: 806; GCN-NOHSA-SI: ; %bb.0: 807; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 808; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 809; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 810; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 811; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 812; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 813; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 814; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 815; GCN-NOHSA-SI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 816; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 817; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 818; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 819; GCN-NOHSA-SI-NEXT: buffer_store_dword v0, off, s[4:7], 0 820; GCN-NOHSA-SI-NEXT: s_endpgm 821; 822; GCN-HSA-LABEL: global_zextload_i16_to_i32: 823; GCN-HSA: ; %bb.0: 824; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 825; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 826; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 827; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 828; GCN-HSA-NEXT: flat_load_ushort v2, v[0:1] 829; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 830; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 831; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 832; GCN-HSA-NEXT: flat_store_dword v[0:1], v2 833; GCN-HSA-NEXT: s_endpgm 834; 835; GCN-NOHSA-VI-LABEL: global_zextload_i16_to_i32: 836; GCN-NOHSA-VI: ; %bb.0: 837; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 838; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 839; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 840; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 841; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 842; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 843; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 844; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 845; GCN-NOHSA-VI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 846; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 847; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 848; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 849; GCN-NOHSA-VI-NEXT: buffer_store_dword v0, off, s[4:7], 0 850; GCN-NOHSA-VI-NEXT: s_endpgm 851; 852; EG-LABEL: global_zextload_i16_to_i32: 853; EG: ; %bb.0: 854; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 855; EG-NEXT: TEX 0 @6 856; EG-NEXT: ALU 1, @9, KC0[CB0:0-32], KC1[] 857; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1 858; EG-NEXT: CF_END 859; EG-NEXT: PAD 860; EG-NEXT: Fetch clause starting at 6: 861; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 862; EG-NEXT: ALU clause starting at 8: 863; EG-NEXT: MOV * T0.X, KC0[2].Z, 864; EG-NEXT: ALU clause starting at 9: 865; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 866; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 867; 868; CM-LABEL: global_zextload_i16_to_i32: 869; CM: ; %bb.0: 870; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 871; CM-NEXT: TEX 0 @6 872; CM-NEXT: ALU 1, @9, KC0[CB0:0-32], KC1[] 873; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T0.X, T1.X 874; CM-NEXT: CF_END 875; CM-NEXT: PAD 876; CM-NEXT: Fetch clause starting at 6: 877; CM-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 878; CM-NEXT: ALU clause starting at 8: 879; CM-NEXT: MOV * T0.X, KC0[2].Z, 880; CM-NEXT: ALU clause starting at 9: 881; CM-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 882; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 883 %a = load i16, i16 addrspace(1)* %in 884 %ext = zext i16 %a to i32 885 store i32 %ext, i32 addrspace(1)* %out 886 ret void 887} 888 889define amdgpu_kernel void @global_sextload_i16_to_i32(i32 addrspace(1)* %out, i16 addrspace(1)* %in) #0 { 890; GCN-NOHSA-SI-LABEL: global_sextload_i16_to_i32: 891; GCN-NOHSA-SI: ; %bb.0: 892; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 893; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 894; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 895; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 896; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 897; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 898; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 899; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 900; GCN-NOHSA-SI-NEXT: buffer_load_sshort v0, off, s[8:11], 0 901; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 902; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 903; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 904; GCN-NOHSA-SI-NEXT: buffer_store_dword v0, off, s[4:7], 0 905; GCN-NOHSA-SI-NEXT: s_endpgm 906; 907; GCN-HSA-LABEL: global_sextload_i16_to_i32: 908; GCN-HSA: ; %bb.0: 909; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 910; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 911; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 912; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 913; GCN-HSA-NEXT: flat_load_sshort v2, v[0:1] 914; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 915; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 916; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 917; GCN-HSA-NEXT: flat_store_dword v[0:1], v2 918; GCN-HSA-NEXT: s_endpgm 919; 920; GCN-NOHSA-VI-LABEL: global_sextload_i16_to_i32: 921; GCN-NOHSA-VI: ; %bb.0: 922; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 923; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 924; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 925; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 926; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 927; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 928; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 929; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 930; GCN-NOHSA-VI-NEXT: buffer_load_sshort v0, off, s[8:11], 0 931; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 932; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 933; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 934; GCN-NOHSA-VI-NEXT: buffer_store_dword v0, off, s[4:7], 0 935; GCN-NOHSA-VI-NEXT: s_endpgm 936; 937; EG-LABEL: global_sextload_i16_to_i32: 938; EG: ; %bb.0: 939; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 940; EG-NEXT: TEX 0 @6 941; EG-NEXT: ALU 2, @9, KC0[CB0:0-32], KC1[] 942; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1 943; EG-NEXT: CF_END 944; EG-NEXT: PAD 945; EG-NEXT: Fetch clause starting at 6: 946; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 947; EG-NEXT: ALU clause starting at 8: 948; EG-NEXT: MOV * T0.X, KC0[2].Z, 949; EG-NEXT: ALU clause starting at 9: 950; EG-NEXT: BFE_INT T0.X, T0.X, 0.0, literal.x, 951; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.y, 952; EG-NEXT: 16(2.242078e-44), 2(2.802597e-45) 953; 954; CM-LABEL: global_sextload_i16_to_i32: 955; CM: ; %bb.0: 956; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 957; CM-NEXT: TEX 0 @6 958; CM-NEXT: ALU 3, @9, KC0[CB0:0-32], KC1[] 959; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T0.X, T1.X 960; CM-NEXT: CF_END 961; CM-NEXT: PAD 962; CM-NEXT: Fetch clause starting at 6: 963; CM-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 964; CM-NEXT: ALU clause starting at 8: 965; CM-NEXT: MOV * T0.X, KC0[2].Z, 966; CM-NEXT: ALU clause starting at 9: 967; CM-NEXT: BFE_INT * T0.X, T0.X, 0.0, literal.x, 968; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 969; CM-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 970; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 971 %a = load i16, i16 addrspace(1)* %in 972 %ext = sext i16 %a to i32 973 store i32 %ext, i32 addrspace(1)* %out 974 ret void 975} 976 977define amdgpu_kernel void @global_zextload_v1i16_to_v1i32(<1 x i32> addrspace(1)* %out, <1 x i16> addrspace(1)* %in) #0 { 978; GCN-NOHSA-SI-LABEL: global_zextload_v1i16_to_v1i32: 979; GCN-NOHSA-SI: ; %bb.0: 980; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 981; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 982; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 983; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 984; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 985; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 986; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 987; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 988; GCN-NOHSA-SI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 989; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 990; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 991; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 992; GCN-NOHSA-SI-NEXT: buffer_store_dword v0, off, s[4:7], 0 993; GCN-NOHSA-SI-NEXT: s_endpgm 994; 995; GCN-HSA-LABEL: global_zextload_v1i16_to_v1i32: 996; GCN-HSA: ; %bb.0: 997; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 998; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 999; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 1000; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 1001; GCN-HSA-NEXT: flat_load_ushort v2, v[0:1] 1002; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 1003; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 1004; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 1005; GCN-HSA-NEXT: flat_store_dword v[0:1], v2 1006; GCN-HSA-NEXT: s_endpgm 1007; 1008; GCN-NOHSA-VI-LABEL: global_zextload_v1i16_to_v1i32: 1009; GCN-NOHSA-VI: ; %bb.0: 1010; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 1011; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 1012; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 1013; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 1014; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 1015; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1016; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 1017; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 1018; GCN-NOHSA-VI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 1019; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 1020; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 1021; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 1022; GCN-NOHSA-VI-NEXT: buffer_store_dword v0, off, s[4:7], 0 1023; GCN-NOHSA-VI-NEXT: s_endpgm 1024; 1025; EG-LABEL: global_zextload_v1i16_to_v1i32: 1026; EG: ; %bb.0: 1027; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1028; EG-NEXT: TEX 0 @6 1029; EG-NEXT: ALU 1, @9, KC0[CB0:0-32], KC1[] 1030; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1 1031; EG-NEXT: CF_END 1032; EG-NEXT: PAD 1033; EG-NEXT: Fetch clause starting at 6: 1034; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 1035; EG-NEXT: ALU clause starting at 8: 1036; EG-NEXT: MOV * T0.X, KC0[2].Z, 1037; EG-NEXT: ALU clause starting at 9: 1038; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 1039; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1040; 1041; CM-LABEL: global_zextload_v1i16_to_v1i32: 1042; CM: ; %bb.0: 1043; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1044; CM-NEXT: TEX 0 @6 1045; CM-NEXT: ALU 1, @9, KC0[CB0:0-32], KC1[] 1046; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T0.X, T1.X 1047; CM-NEXT: CF_END 1048; CM-NEXT: PAD 1049; CM-NEXT: Fetch clause starting at 6: 1050; CM-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 1051; CM-NEXT: ALU clause starting at 8: 1052; CM-NEXT: MOV * T0.X, KC0[2].Z, 1053; CM-NEXT: ALU clause starting at 9: 1054; CM-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 1055; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1056 %load = load <1 x i16>, <1 x i16> addrspace(1)* %in 1057 %ext = zext <1 x i16> %load to <1 x i32> 1058 store <1 x i32> %ext, <1 x i32> addrspace(1)* %out 1059 ret void 1060} 1061 1062define amdgpu_kernel void @global_sextload_v1i16_to_v1i32(<1 x i32> addrspace(1)* %out, <1 x i16> addrspace(1)* %in) #0 { 1063; GCN-NOHSA-SI-LABEL: global_sextload_v1i16_to_v1i32: 1064; GCN-NOHSA-SI: ; %bb.0: 1065; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 1066; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 1067; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 1068; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 1069; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 1070; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1071; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 1072; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 1073; GCN-NOHSA-SI-NEXT: buffer_load_sshort v0, off, s[8:11], 0 1074; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 1075; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 1076; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 1077; GCN-NOHSA-SI-NEXT: buffer_store_dword v0, off, s[4:7], 0 1078; GCN-NOHSA-SI-NEXT: s_endpgm 1079; 1080; GCN-HSA-LABEL: global_sextload_v1i16_to_v1i32: 1081; GCN-HSA: ; %bb.0: 1082; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 1083; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1084; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 1085; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 1086; GCN-HSA-NEXT: flat_load_sshort v2, v[0:1] 1087; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 1088; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 1089; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 1090; GCN-HSA-NEXT: flat_store_dword v[0:1], v2 1091; GCN-HSA-NEXT: s_endpgm 1092; 1093; GCN-NOHSA-VI-LABEL: global_sextload_v1i16_to_v1i32: 1094; GCN-NOHSA-VI: ; %bb.0: 1095; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 1096; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 1097; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 1098; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 1099; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 1100; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1101; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 1102; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 1103; GCN-NOHSA-VI-NEXT: buffer_load_sshort v0, off, s[8:11], 0 1104; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 1105; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 1106; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 1107; GCN-NOHSA-VI-NEXT: buffer_store_dword v0, off, s[4:7], 0 1108; GCN-NOHSA-VI-NEXT: s_endpgm 1109; 1110; EG-LABEL: global_sextload_v1i16_to_v1i32: 1111; EG: ; %bb.0: 1112; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1113; EG-NEXT: TEX 0 @6 1114; EG-NEXT: ALU 2, @9, KC0[CB0:0-32], KC1[] 1115; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1 1116; EG-NEXT: CF_END 1117; EG-NEXT: PAD 1118; EG-NEXT: Fetch clause starting at 6: 1119; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 1120; EG-NEXT: ALU clause starting at 8: 1121; EG-NEXT: MOV * T0.X, KC0[2].Z, 1122; EG-NEXT: ALU clause starting at 9: 1123; EG-NEXT: BFE_INT T0.X, T0.X, 0.0, literal.x, 1124; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.y, 1125; EG-NEXT: 16(2.242078e-44), 2(2.802597e-45) 1126; 1127; CM-LABEL: global_sextload_v1i16_to_v1i32: 1128; CM: ; %bb.0: 1129; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1130; CM-NEXT: TEX 0 @6 1131; CM-NEXT: ALU 3, @9, KC0[CB0:0-32], KC1[] 1132; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T0.X, T1.X 1133; CM-NEXT: CF_END 1134; CM-NEXT: PAD 1135; CM-NEXT: Fetch clause starting at 6: 1136; CM-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 1137; CM-NEXT: ALU clause starting at 8: 1138; CM-NEXT: MOV * T0.X, KC0[2].Z, 1139; CM-NEXT: ALU clause starting at 9: 1140; CM-NEXT: BFE_INT * T0.X, T0.X, 0.0, literal.x, 1141; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1142; CM-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 1143; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1144 %load = load <1 x i16>, <1 x i16> addrspace(1)* %in 1145 %ext = sext <1 x i16> %load to <1 x i32> 1146 store <1 x i32> %ext, <1 x i32> addrspace(1)* %out 1147 ret void 1148} 1149 1150define amdgpu_kernel void @global_zextload_v2i16_to_v2i32(<2 x i32> addrspace(1)* %out, <2 x i16> addrspace(1)* %in) #0 { 1151; GCN-NOHSA-SI-LABEL: global_zextload_v2i16_to_v2i32: 1152; GCN-NOHSA-SI: ; %bb.0: 1153; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 1154; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 1155; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 1156; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 1157; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 1158; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1159; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 1160; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 1161; GCN-NOHSA-SI-NEXT: buffer_load_dword v0, off, s[8:11], 0 1162; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 1163; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 1164; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 1165; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v1, 16, v0 1166; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v0, 0xffff, v0 1167; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 1168; GCN-NOHSA-SI-NEXT: s_endpgm 1169; 1170; GCN-HSA-LABEL: global_zextload_v2i16_to_v2i32: 1171; GCN-HSA: ; %bb.0: 1172; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 1173; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1174; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 1175; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 1176; GCN-HSA-NEXT: flat_load_dword v2, v[0:1] 1177; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 1178; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 1179; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 1180; GCN-HSA-NEXT: v_lshrrev_b32_e32 v3, 16, v2 1181; GCN-HSA-NEXT: v_and_b32_e32 v2, 0xffff, v2 1182; GCN-HSA-NEXT: flat_store_dwordx2 v[0:1], v[2:3] 1183; GCN-HSA-NEXT: s_endpgm 1184; 1185; GCN-NOHSA-VI-LABEL: global_zextload_v2i16_to_v2i32: 1186; GCN-NOHSA-VI: ; %bb.0: 1187; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 1188; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 1189; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 1190; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 1191; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 1192; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1193; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 1194; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 1195; GCN-NOHSA-VI-NEXT: buffer_load_dword v0, off, s[8:11], 0 1196; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 1197; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 1198; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 1199; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v1, 16, v0 1200; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, 0xffff, v0 1201; GCN-NOHSA-VI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 1202; GCN-NOHSA-VI-NEXT: s_endpgm 1203; 1204; EG-LABEL: global_zextload_v2i16_to_v2i32: 1205; EG: ; %bb.0: 1206; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1207; EG-NEXT: TEX 0 @6 1208; EG-NEXT: ALU 4, @9, KC0[CB0:0-32], KC1[] 1209; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T4.XY, T5.X, 1 1210; EG-NEXT: CF_END 1211; EG-NEXT: PAD 1212; EG-NEXT: Fetch clause starting at 6: 1213; EG-NEXT: VTX_READ_32 T4.X, T4.X, 0, #1 1214; EG-NEXT: ALU clause starting at 8: 1215; EG-NEXT: MOV * T4.X, KC0[2].Z, 1216; EG-NEXT: ALU clause starting at 9: 1217; EG-NEXT: LSHR * T4.Y, T4.X, literal.x, 1218; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1219; EG-NEXT: AND_INT T4.X, T4.X, literal.x, 1220; EG-NEXT: LSHR * T5.X, KC0[2].Y, literal.y, 1221; EG-NEXT: 65535(9.183409e-41), 2(2.802597e-45) 1222; 1223; CM-LABEL: global_zextload_v2i16_to_v2i32: 1224; CM: ; %bb.0: 1225; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1226; CM-NEXT: TEX 0 @6 1227; CM-NEXT: ALU 5, @9, KC0[CB0:0-32], KC1[] 1228; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T4, T5.X 1229; CM-NEXT: CF_END 1230; CM-NEXT: PAD 1231; CM-NEXT: Fetch clause starting at 6: 1232; CM-NEXT: VTX_READ_32 T4.X, T4.X, 0, #1 1233; CM-NEXT: ALU clause starting at 8: 1234; CM-NEXT: MOV * T4.X, KC0[2].Z, 1235; CM-NEXT: ALU clause starting at 9: 1236; CM-NEXT: LSHR * T4.Y, T4.X, literal.x, 1237; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1238; CM-NEXT: AND_INT * T4.X, T4.X, literal.x, 1239; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 1240; CM-NEXT: LSHR * T5.X, KC0[2].Y, literal.x, 1241; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1242 %load = load <2 x i16>, <2 x i16> addrspace(1)* %in 1243 %ext = zext <2 x i16> %load to <2 x i32> 1244 store <2 x i32> %ext, <2 x i32> addrspace(1)* %out 1245 ret void 1246} 1247 1248; TODO: This should use ASHR instead of LSHR + BFE 1249define amdgpu_kernel void @global_sextload_v2i16_to_v2i32(<2 x i32> addrspace(1)* %out, <2 x i16> addrspace(1)* %in) #0 { 1250; GCN-NOHSA-SI-LABEL: global_sextload_v2i16_to_v2i32: 1251; GCN-NOHSA-SI: ; %bb.0: 1252; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 1253; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 1254; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 1255; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 1256; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 1257; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1258; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 1259; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 1260; GCN-NOHSA-SI-NEXT: buffer_load_dword v0, off, s[8:11], 0 1261; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 1262; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 1263; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 1264; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 16, v0 1265; GCN-NOHSA-SI-NEXT: v_bfe_i32 v0, v0, 0, 16 1266; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 1267; GCN-NOHSA-SI-NEXT: s_endpgm 1268; 1269; GCN-HSA-LABEL: global_sextload_v2i16_to_v2i32: 1270; GCN-HSA: ; %bb.0: 1271; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 1272; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1273; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 1274; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 1275; GCN-HSA-NEXT: flat_load_dword v2, v[0:1] 1276; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 1277; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 1278; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 1279; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 16, v2 1280; GCN-HSA-NEXT: v_bfe_i32 v2, v2, 0, 16 1281; GCN-HSA-NEXT: flat_store_dwordx2 v[0:1], v[2:3] 1282; GCN-HSA-NEXT: s_endpgm 1283; 1284; GCN-NOHSA-VI-LABEL: global_sextload_v2i16_to_v2i32: 1285; GCN-NOHSA-VI: ; %bb.0: 1286; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 1287; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 1288; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 1289; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 1290; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 1291; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1292; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 1293; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 1294; GCN-NOHSA-VI-NEXT: buffer_load_dword v0, off, s[8:11], 0 1295; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 1296; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 1297; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 1298; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 16, v0 1299; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v0, 0, 16 1300; GCN-NOHSA-VI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 1301; GCN-NOHSA-VI-NEXT: s_endpgm 1302; 1303; EG-LABEL: global_sextload_v2i16_to_v2i32: 1304; EG: ; %bb.0: 1305; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1306; EG-NEXT: TEX 0 @6 1307; EG-NEXT: ALU 5, @9, KC0[CB0:0-32], KC1[] 1308; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T5.XY, T4.X, 1 1309; EG-NEXT: CF_END 1310; EG-NEXT: PAD 1311; EG-NEXT: Fetch clause starting at 6: 1312; EG-NEXT: VTX_READ_32 T4.X, T4.X, 0, #1 1313; EG-NEXT: ALU clause starting at 8: 1314; EG-NEXT: MOV * T4.X, KC0[2].Z, 1315; EG-NEXT: ALU clause starting at 9: 1316; EG-NEXT: BFE_INT T5.X, T4.X, 0.0, literal.x, 1317; EG-NEXT: LSHR T0.W, T4.X, literal.x, 1318; EG-NEXT: LSHR * T4.X, KC0[2].Y, literal.y, 1319; EG-NEXT: 16(2.242078e-44), 2(2.802597e-45) 1320; EG-NEXT: BFE_INT * T5.Y, PV.W, 0.0, literal.x, 1321; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1322; 1323; CM-LABEL: global_sextload_v2i16_to_v2i32: 1324; CM: ; %bb.0: 1325; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1326; CM-NEXT: TEX 0 @6 1327; CM-NEXT: ALU 5, @9, KC0[CB0:0-32], KC1[] 1328; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T5, T4.X 1329; CM-NEXT: CF_END 1330; CM-NEXT: PAD 1331; CM-NEXT: Fetch clause starting at 6: 1332; CM-NEXT: VTX_READ_32 T4.X, T4.X, 0, #1 1333; CM-NEXT: ALU clause starting at 8: 1334; CM-NEXT: MOV * T4.X, KC0[2].Z, 1335; CM-NEXT: ALU clause starting at 9: 1336; CM-NEXT: BFE_INT T5.X, T4.X, 0.0, literal.x, 1337; CM-NEXT: LSHR * T0.W, T4.X, literal.x, 1338; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1339; CM-NEXT: LSHR T4.X, KC0[2].Y, literal.x, 1340; CM-NEXT: BFE_INT * T5.Y, PV.W, 0.0, literal.y, 1341; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 1342 %load = load <2 x i16>, <2 x i16> addrspace(1)* %in 1343 %ext = sext <2 x i16> %load to <2 x i32> 1344 store <2 x i32> %ext, <2 x i32> addrspace(1)* %out 1345 ret void 1346} 1347 1348define amdgpu_kernel void @global_zextload_v3i16_to_v3i32(<3 x i32> addrspace(1)* %out, <3 x i16> addrspace(1)* %in) { 1349; GCN-NOHSA-SI-LABEL: global_zextload_v3i16_to_v3i32: 1350; GCN-NOHSA-SI: ; %bb.0: ; %entry 1351; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 1352; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 1353; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 1354; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 1355; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 1356; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1357; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 1358; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 1359; GCN-NOHSA-SI-NEXT: buffer_load_dwordx2 v[0:1], off, s[8:11], 0 1360; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 1361; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 1362; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 1363; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v3, 16, v0 1364; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v2, 0xffff, v0 1365; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v0, 0xffff, v1 1366; GCN-NOHSA-SI-NEXT: buffer_store_dword v0, off, s[4:7], 0 offset:8 1367; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[2:3], off, s[4:7], 0 1368; GCN-NOHSA-SI-NEXT: s_endpgm 1369; 1370; GCN-HSA-LABEL: global_zextload_v3i16_to_v3i32: 1371; GCN-HSA: ; %bb.0: ; %entry 1372; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 1373; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1374; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 1375; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 1376; GCN-HSA-NEXT: flat_load_dwordx2 v[3:4], v[0:1] 1377; GCN-HSA-NEXT: v_mov_b32_e32 v5, s0 1378; GCN-HSA-NEXT: v_mov_b32_e32 v6, s1 1379; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 1380; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v3 1381; GCN-HSA-NEXT: v_and_b32_e32 v2, 0xffff, v4 1382; GCN-HSA-NEXT: v_and_b32_e32 v0, 0xffff, v3 1383; GCN-HSA-NEXT: flat_store_dwordx3 v[5:6], v[0:2] 1384; GCN-HSA-NEXT: s_endpgm 1385; 1386; GCN-NOHSA-VI-LABEL: global_zextload_v3i16_to_v3i32: 1387; GCN-NOHSA-VI: ; %bb.0: ; %entry 1388; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 1389; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 1390; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 1391; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 1392; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 1393; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1394; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 1395; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 1396; GCN-NOHSA-VI-NEXT: buffer_load_dwordx2 v[0:1], off, s[8:11], 0 1397; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 1398; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 1399; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 1400; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v2, 0xffff, v1 1401; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v1, 16, v0 1402; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, 0xffff, v0 1403; GCN-NOHSA-VI-NEXT: buffer_store_dwordx3 v[0:2], off, s[4:7], 0 1404; GCN-NOHSA-VI-NEXT: s_endpgm 1405; 1406; EG-LABEL: global_zextload_v3i16_to_v3i32: 1407; EG: ; %bb.0: ; %entry 1408; EG-NEXT: ALU 4, @12, KC0[CB0:0-32], KC1[] 1409; EG-NEXT: TEX 2 @6 1410; EG-NEXT: ALU 2, @17, KC0[], KC1[] 1411; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T2.X, T4.X, 0 1412; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T3.XY, T0.X, 1 1413; EG-NEXT: CF_END 1414; EG-NEXT: Fetch clause starting at 6: 1415; EG-NEXT: VTX_READ_16 T2.X, T1.X, 4, #1 1416; EG-NEXT: VTX_READ_16 T3.X, T1.X, 0, #1 1417; EG-NEXT: VTX_READ_16 T1.X, T1.X, 2, #1 1418; EG-NEXT: ALU clause starting at 12: 1419; EG-NEXT: LSHR T0.X, KC0[2].Y, literal.x, 1420; EG-NEXT: MOV * T1.X, KC0[2].Z, 1421; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1422; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 1423; EG-NEXT: 8(1.121039e-44), 0(0.000000e+00) 1424; EG-NEXT: ALU clause starting at 17: 1425; EG-NEXT: LSHR T4.X, T0.W, literal.x, 1426; EG-NEXT: MOV * T3.Y, T1.X, 1427; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1428; 1429; CM-LABEL: global_zextload_v3i16_to_v3i32: 1430; CM: ; %bb.0: ; %entry 1431; CM-NEXT: ALU 4, @12, KC0[CB0:0-32], KC1[] 1432; CM-NEXT: TEX 2 @6 1433; CM-NEXT: ALU 2, @17, KC0[CB0:0-32], KC1[] 1434; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T3, T4.X 1435; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T2.X, T0.X 1436; CM-NEXT: CF_END 1437; CM-NEXT: Fetch clause starting at 6: 1438; CM-NEXT: VTX_READ_16 T2.X, T1.X, 4, #1 1439; CM-NEXT: VTX_READ_16 T3.X, T1.X, 0, #1 1440; CM-NEXT: VTX_READ_16 T1.X, T1.X, 2, #1 1441; CM-NEXT: ALU clause starting at 12: 1442; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 1443; CM-NEXT: 8(1.121039e-44), 0(0.000000e+00) 1444; CM-NEXT: LSHR * T0.X, PV.W, literal.x, 1445; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1446; CM-NEXT: MOV * T1.X, KC0[2].Z, 1447; CM-NEXT: ALU clause starting at 17: 1448; CM-NEXT: LSHR T4.X, KC0[2].Y, literal.x, 1449; CM-NEXT: MOV * T3.Y, T1.X, 1450; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1451entry: 1452 %ld = load <3 x i16>, <3 x i16> addrspace(1)* %in 1453 %ext = zext <3 x i16> %ld to <3 x i32> 1454 store <3 x i32> %ext, <3 x i32> addrspace(1)* %out 1455 ret void 1456} 1457 1458define amdgpu_kernel void @global_sextload_v3i16_to_v3i32(<3 x i32> addrspace(1)* %out, <3 x i16> addrspace(1)* %in) { 1459; GCN-NOHSA-SI-LABEL: global_sextload_v3i16_to_v3i32: 1460; GCN-NOHSA-SI: ; %bb.0: ; %entry 1461; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 1462; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 1463; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 1464; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 1465; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 1466; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1467; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 1468; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 1469; GCN-NOHSA-SI-NEXT: buffer_load_dwordx2 v[0:1], off, s[8:11], 0 1470; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 1471; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 1472; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 1473; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v3, 16, v0 1474; GCN-NOHSA-SI-NEXT: v_bfe_i32 v2, v0, 0, 16 1475; GCN-NOHSA-SI-NEXT: v_bfe_i32 v0, v1, 0, 16 1476; GCN-NOHSA-SI-NEXT: buffer_store_dword v0, off, s[4:7], 0 offset:8 1477; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[2:3], off, s[4:7], 0 1478; GCN-NOHSA-SI-NEXT: s_endpgm 1479; 1480; GCN-HSA-LABEL: global_sextload_v3i16_to_v3i32: 1481; GCN-HSA: ; %bb.0: ; %entry 1482; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 1483; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1484; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 1485; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 1486; GCN-HSA-NEXT: flat_load_dwordx2 v[3:4], v[0:1] 1487; GCN-HSA-NEXT: v_mov_b32_e32 v5, s0 1488; GCN-HSA-NEXT: v_mov_b32_e32 v6, s1 1489; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 1490; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 16, v3 1491; GCN-HSA-NEXT: v_bfe_i32 v2, v4, 0, 16 1492; GCN-HSA-NEXT: v_bfe_i32 v0, v3, 0, 16 1493; GCN-HSA-NEXT: flat_store_dwordx3 v[5:6], v[0:2] 1494; GCN-HSA-NEXT: s_endpgm 1495; 1496; GCN-NOHSA-VI-LABEL: global_sextload_v3i16_to_v3i32: 1497; GCN-NOHSA-VI: ; %bb.0: ; %entry 1498; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 1499; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 1500; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 1501; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 1502; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 1503; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1504; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 1505; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 1506; GCN-NOHSA-VI-NEXT: buffer_load_dwordx2 v[3:4], off, s[8:11], 0 1507; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 1508; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 1509; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 1510; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 16, v3 1511; GCN-NOHSA-VI-NEXT: v_bfe_i32 v2, v4, 0, 16 1512; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v3, 0, 16 1513; GCN-NOHSA-VI-NEXT: buffer_store_dwordx3 v[0:2], off, s[4:7], 0 1514; GCN-NOHSA-VI-NEXT: s_endpgm 1515; 1516; EG-LABEL: global_sextload_v3i16_to_v3i32: 1517; EG: ; %bb.0: ; %entry 1518; EG-NEXT: ALU 0, @12, KC0[CB0:0-32], KC1[] 1519; EG-NEXT: TEX 2 @6 1520; EG-NEXT: ALU 9, @13, KC0[CB0:0-32], KC1[] 1521; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T2.X, T3.X, 0 1522; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1 1523; EG-NEXT: CF_END 1524; EG-NEXT: Fetch clause starting at 6: 1525; EG-NEXT: VTX_READ_16 T1.X, T0.X, 2, #1 1526; EG-NEXT: VTX_READ_16 T2.X, T0.X, 4, #1 1527; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 1528; EG-NEXT: ALU clause starting at 12: 1529; EG-NEXT: MOV * T0.X, KC0[2].Z, 1530; EG-NEXT: ALU clause starting at 13: 1531; EG-NEXT: BFE_INT * T0.Y, T1.X, 0.0, literal.x, 1532; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1533; EG-NEXT: BFE_INT T0.X, T0.X, 0.0, literal.x, 1534; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.y, 1535; EG-NEXT: 16(2.242078e-44), 2(2.802597e-45) 1536; EG-NEXT: BFE_INT T2.X, T2.X, 0.0, literal.x, 1537; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 1538; EG-NEXT: 16(2.242078e-44), 8(1.121039e-44) 1539; EG-NEXT: LSHR * T3.X, PV.W, literal.x, 1540; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1541; 1542; CM-LABEL: global_sextload_v3i16_to_v3i32: 1543; CM: ; %bb.0: ; %entry 1544; CM-NEXT: ALU 0, @12, KC0[CB0:0-32], KC1[] 1545; CM-NEXT: TEX 2 @6 1546; CM-NEXT: ALU 9, @13, KC0[CB0:0-32], KC1[] 1547; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T0, T2.X 1548; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T1.X, T3.X 1549; CM-NEXT: CF_END 1550; CM-NEXT: Fetch clause starting at 6: 1551; CM-NEXT: VTX_READ_16 T1.X, T0.X, 4, #1 1552; CM-NEXT: VTX_READ_16 T2.X, T0.X, 0, #1 1553; CM-NEXT: VTX_READ_16 T0.X, T0.X, 2, #1 1554; CM-NEXT: ALU clause starting at 12: 1555; CM-NEXT: MOV * T0.X, KC0[2].Z, 1556; CM-NEXT: ALU clause starting at 13: 1557; CM-NEXT: BFE_INT T1.X, T1.X, 0.0, literal.x, 1558; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 1559; CM-NEXT: 16(2.242078e-44), 8(1.121039e-44) 1560; CM-NEXT: LSHR T3.X, PV.W, literal.x, 1561; CM-NEXT: BFE_INT * T0.Y, T0.X, 0.0, literal.y, 1562; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 1563; CM-NEXT: BFE_INT * T0.X, T2.X, 0.0, literal.x, 1564; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1565; CM-NEXT: LSHR * T2.X, KC0[2].Y, literal.x, 1566; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1567entry: 1568 %ld = load <3 x i16>, <3 x i16> addrspace(1)* %in 1569 %ext = sext <3 x i16> %ld to <3 x i32> 1570 store <3 x i32> %ext, <3 x i32> addrspace(1)* %out 1571 ret void 1572} 1573 1574; TODO: This should use DST, but for some there are redundant MOVs 1575define amdgpu_kernel void @global_zextload_v4i16_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x i16> addrspace(1)* %in) #0 { 1576; GCN-NOHSA-SI-LABEL: global_zextload_v4i16_to_v4i32: 1577; GCN-NOHSA-SI: ; %bb.0: 1578; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 1579; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 1580; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 1581; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 1582; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 1583; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1584; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 1585; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 1586; GCN-NOHSA-SI-NEXT: buffer_load_dwordx2 v[4:5], off, s[8:11], 0 1587; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 1588; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 1589; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 1590; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v3, 16, v5 1591; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v1, 16, v4 1592; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v2, 0xffff, v5 1593; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v0, 0xffff, v4 1594; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 1595; GCN-NOHSA-SI-NEXT: s_endpgm 1596; 1597; GCN-HSA-LABEL: global_zextload_v4i16_to_v4i32: 1598; GCN-HSA: ; %bb.0: 1599; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 1600; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1601; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 1602; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 1603; GCN-HSA-NEXT: flat_load_dwordx2 v[4:5], v[0:1] 1604; GCN-HSA-NEXT: v_mov_b32_e32 v6, s0 1605; GCN-HSA-NEXT: v_mov_b32_e32 v7, s1 1606; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 1607; GCN-HSA-NEXT: v_lshrrev_b32_e32 v3, 16, v5 1608; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v4 1609; GCN-HSA-NEXT: v_and_b32_e32 v2, 0xffff, v5 1610; GCN-HSA-NEXT: v_and_b32_e32 v0, 0xffff, v4 1611; GCN-HSA-NEXT: flat_store_dwordx4 v[6:7], v[0:3] 1612; GCN-HSA-NEXT: s_endpgm 1613; 1614; GCN-NOHSA-VI-LABEL: global_zextload_v4i16_to_v4i32: 1615; GCN-NOHSA-VI: ; %bb.0: 1616; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 1617; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 1618; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 1619; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 1620; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 1621; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1622; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 1623; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 1624; GCN-NOHSA-VI-NEXT: buffer_load_dwordx2 v[0:1], off, s[8:11], 0 1625; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 1626; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 1627; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 1628; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v3, 16, v1 1629; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v2, 0xffff, v1 1630; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v1, 16, v0 1631; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, 0xffff, v0 1632; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 1633; GCN-NOHSA-VI-NEXT: s_endpgm 1634; 1635; EG-LABEL: global_zextload_v4i16_to_v4i32: 1636; EG: ; %bb.0: 1637; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1638; EG-NEXT: TEX 0 @6 1639; EG-NEXT: ALU 12, @9, KC0[CB0:0-32], KC1[] 1640; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T6.X, 1 1641; EG-NEXT: CF_END 1642; EG-NEXT: PAD 1643; EG-NEXT: Fetch clause starting at 6: 1644; EG-NEXT: VTX_READ_64 T5.XY, T5.X, 0, #1 1645; EG-NEXT: ALU clause starting at 8: 1646; EG-NEXT: MOV * T5.X, KC0[2].Z, 1647; EG-NEXT: ALU clause starting at 9: 1648; EG-NEXT: MOV T2.X, T5.X, 1649; EG-NEXT: MOV * T3.X, T5.Y, 1650; EG-NEXT: MOV T0.Y, PV.X, 1651; EG-NEXT: MOV * T0.Z, PS, 1652; EG-NEXT: LSHR * T5.W, PV.Z, literal.x, 1653; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1654; EG-NEXT: AND_INT * T5.Z, T0.Z, literal.x, 1655; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 1656; EG-NEXT: LSHR * T5.Y, T0.Y, literal.x, 1657; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1658; EG-NEXT: AND_INT T5.X, T0.Y, literal.x, 1659; EG-NEXT: LSHR * T6.X, KC0[2].Y, literal.y, 1660; EG-NEXT: 65535(9.183409e-41), 2(2.802597e-45) 1661; 1662; CM-LABEL: global_zextload_v4i16_to_v4i32: 1663; CM: ; %bb.0: 1664; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1665; CM-NEXT: TEX 0 @6 1666; CM-NEXT: ALU 13, @9, KC0[CB0:0-32], KC1[] 1667; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T5, T6.X 1668; CM-NEXT: CF_END 1669; CM-NEXT: PAD 1670; CM-NEXT: Fetch clause starting at 6: 1671; CM-NEXT: VTX_READ_64 T5.XY, T5.X, 0, #1 1672; CM-NEXT: ALU clause starting at 8: 1673; CM-NEXT: MOV * T5.X, KC0[2].Z, 1674; CM-NEXT: ALU clause starting at 9: 1675; CM-NEXT: MOV * T2.X, T5.X, 1676; CM-NEXT: MOV T3.X, T5.Y, 1677; CM-NEXT: MOV * T0.Y, PV.X, 1678; CM-NEXT: MOV * T0.Z, PV.X, 1679; CM-NEXT: LSHR * T5.W, PV.Z, literal.x, 1680; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1681; CM-NEXT: AND_INT * T5.Z, T0.Z, literal.x, 1682; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 1683; CM-NEXT: LSHR * T5.Y, T0.Y, literal.x, 1684; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1685; CM-NEXT: AND_INT * T5.X, T0.Y, literal.x, 1686; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 1687; CM-NEXT: LSHR * T6.X, KC0[2].Y, literal.x, 1688; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1689 %load = load <4 x i16>, <4 x i16> addrspace(1)* %in 1690 %ext = zext <4 x i16> %load to <4 x i32> 1691 store <4 x i32> %ext, <4 x i32> addrspace(1)* %out 1692 ret void 1693} 1694 1695; TODO: We should use ASHR instead of LSHR + BFE 1696; TODO: This should use DST, but for some there are redundant MOVs 1697define amdgpu_kernel void @global_sextload_v4i16_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x i16> addrspace(1)* %in) #0 { 1698; GCN-NOHSA-SI-LABEL: global_sextload_v4i16_to_v4i32: 1699; GCN-NOHSA-SI: ; %bb.0: 1700; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 1701; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 1702; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 1703; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 1704; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 1705; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1706; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 1707; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 1708; GCN-NOHSA-SI-NEXT: buffer_load_dwordx2 v[3:4], off, s[8:11], 0 1709; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 1710; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 1711; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 1712; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 16, v3 1713; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[5:6], v[3:4], 48 1714; GCN-NOHSA-SI-NEXT: v_bfe_i32 v2, v4, 0, 16 1715; GCN-NOHSA-SI-NEXT: v_bfe_i32 v0, v3, 0, 16 1716; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, v5 1717; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 1718; GCN-NOHSA-SI-NEXT: s_endpgm 1719; 1720; GCN-HSA-LABEL: global_sextload_v4i16_to_v4i32: 1721; GCN-HSA: ; %bb.0: 1722; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 1723; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1724; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 1725; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 1726; GCN-HSA-NEXT: flat_load_dwordx2 v[3:4], v[0:1] 1727; GCN-HSA-NEXT: v_mov_b32_e32 v5, s0 1728; GCN-HSA-NEXT: v_mov_b32_e32 v6, s1 1729; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 1730; GCN-HSA-NEXT: v_ashr_i64 v[7:8], v[3:4], 48 1731; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 16, v3 1732; GCN-HSA-NEXT: v_bfe_i32 v2, v4, 0, 16 1733; GCN-HSA-NEXT: v_bfe_i32 v0, v3, 0, 16 1734; GCN-HSA-NEXT: v_mov_b32_e32 v3, v7 1735; GCN-HSA-NEXT: flat_store_dwordx4 v[5:6], v[0:3] 1736; GCN-HSA-NEXT: s_endpgm 1737; 1738; GCN-NOHSA-VI-LABEL: global_sextload_v4i16_to_v4i32: 1739; GCN-NOHSA-VI: ; %bb.0: 1740; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 1741; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 1742; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 1743; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 1744; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 1745; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1746; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 1747; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 1748; GCN-NOHSA-VI-NEXT: buffer_load_dwordx2 v[4:5], off, s[8:11], 0 1749; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 1750; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 1751; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 1752; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v3, 16, v5 1753; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 16, v4 1754; GCN-NOHSA-VI-NEXT: v_bfe_i32 v2, v5, 0, 16 1755; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v4, 0, 16 1756; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 1757; GCN-NOHSA-VI-NEXT: s_endpgm 1758; 1759; EG-LABEL: global_sextload_v4i16_to_v4i32: 1760; EG: ; %bb.0: 1761; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1762; EG-NEXT: TEX 0 @6 1763; EG-NEXT: ALU 14, @9, KC0[CB0:0-32], KC1[] 1764; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T6.X, 1 1765; EG-NEXT: CF_END 1766; EG-NEXT: PAD 1767; EG-NEXT: Fetch clause starting at 6: 1768; EG-NEXT: VTX_READ_64 T5.XY, T5.X, 0, #1 1769; EG-NEXT: ALU clause starting at 8: 1770; EG-NEXT: MOV * T5.X, KC0[2].Z, 1771; EG-NEXT: ALU clause starting at 9: 1772; EG-NEXT: MOV T2.X, T5.X, 1773; EG-NEXT: MOV * T3.X, T5.Y, 1774; EG-NEXT: MOV T0.Y, PV.X, 1775; EG-NEXT: MOV * T0.Z, PS, 1776; EG-NEXT: BFE_INT * T5.Z, PV.Z, 0.0, literal.x, 1777; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1778; EG-NEXT: BFE_INT T5.X, T0.Y, 0.0, literal.x, 1779; EG-NEXT: LSHR * T0.W, T0.Z, literal.x, 1780; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1781; EG-NEXT: BFE_INT T5.W, PV.W, 0.0, literal.x, 1782; EG-NEXT: LSHR * T0.W, T0.Y, literal.x, 1783; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1784; EG-NEXT: LSHR T6.X, KC0[2].Y, literal.x, 1785; EG-NEXT: BFE_INT * T5.Y, PS, 0.0, literal.y, 1786; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 1787; 1788; CM-LABEL: global_sextload_v4i16_to_v4i32: 1789; CM: ; %bb.0: 1790; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1791; CM-NEXT: TEX 0 @6 1792; CM-NEXT: ALU 14, @9, KC0[CB0:0-32], KC1[] 1793; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T5, T6.X 1794; CM-NEXT: CF_END 1795; CM-NEXT: PAD 1796; CM-NEXT: Fetch clause starting at 6: 1797; CM-NEXT: VTX_READ_64 T5.XY, T5.X, 0, #1 1798; CM-NEXT: ALU clause starting at 8: 1799; CM-NEXT: MOV * T5.X, KC0[2].Z, 1800; CM-NEXT: ALU clause starting at 9: 1801; CM-NEXT: MOV * T2.X, T5.X, 1802; CM-NEXT: MOV T3.X, T5.Y, 1803; CM-NEXT: MOV * T0.Y, PV.X, 1804; CM-NEXT: MOV * T0.Z, PV.X, 1805; CM-NEXT: BFE_INT * T5.Z, PV.Z, 0.0, literal.x, 1806; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1807; CM-NEXT: BFE_INT T5.X, T0.Y, 0.0, literal.x, 1808; CM-NEXT: LSHR * T0.W, T0.Z, literal.x, 1809; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1810; CM-NEXT: LSHR T0.Z, T0.Y, literal.x, 1811; CM-NEXT: BFE_INT * T5.W, PV.W, 0.0, literal.x, 1812; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1813; CM-NEXT: LSHR T6.X, KC0[2].Y, literal.x, 1814; CM-NEXT: BFE_INT * T5.Y, PV.Z, 0.0, literal.y, 1815; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 1816 %load = load <4 x i16>, <4 x i16> addrspace(1)* %in 1817 %ext = sext <4 x i16> %load to <4 x i32> 1818 store <4 x i32> %ext, <4 x i32> addrspace(1)* %out 1819 ret void 1820} 1821 1822; TODO: These should use LSHR instead of BFE_UINT 1823define amdgpu_kernel void @global_zextload_v8i16_to_v8i32(<8 x i32> addrspace(1)* %out, <8 x i16> addrspace(1)* %in) #0 { 1824; GCN-NOHSA-SI-LABEL: global_zextload_v8i16_to_v8i32: 1825; GCN-NOHSA-SI: ; %bb.0: 1826; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 1827; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 1828; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 1829; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 1830; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 1831; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1832; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 1833; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 1834; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 1835; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 1836; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 1837; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 1838; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v7, 16, v1 1839; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v5, 16, v0 1840; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v11, 16, v3 1841; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v9, 16, v2 1842; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v6, 0xffff, v1 1843; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v4, 0xffff, v0 1844; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v10, 0xffff, v3 1845; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v8, 0xffff, v2 1846; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[4:7], 0 offset:16 1847; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 1848; GCN-NOHSA-SI-NEXT: s_endpgm 1849; 1850; GCN-HSA-LABEL: global_zextload_v8i16_to_v8i32: 1851; GCN-HSA: ; %bb.0: 1852; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 1853; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1854; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 1855; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 1856; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 1857; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 1858; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 1859; GCN-HSA-NEXT: v_mov_b32_e32 v15, s3 1860; GCN-HSA-NEXT: v_mov_b32_e32 v13, s1 1861; GCN-HSA-NEXT: v_mov_b32_e32 v14, s2 1862; GCN-HSA-NEXT: v_mov_b32_e32 v12, s0 1863; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 1864; GCN-HSA-NEXT: v_lshrrev_b32_e32 v11, 16, v3 1865; GCN-HSA-NEXT: v_lshrrev_b32_e32 v9, 16, v2 1866; GCN-HSA-NEXT: v_and_b32_e32 v10, 0xffff, v3 1867; GCN-HSA-NEXT: v_and_b32_e32 v8, 0xffff, v2 1868; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v1 1869; GCN-HSA-NEXT: v_lshrrev_b32_e32 v5, 16, v0 1870; GCN-HSA-NEXT: v_and_b32_e32 v6, 0xffff, v1 1871; GCN-HSA-NEXT: v_and_b32_e32 v4, 0xffff, v0 1872; GCN-HSA-NEXT: flat_store_dwordx4 v[14:15], v[8:11] 1873; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[4:7] 1874; GCN-HSA-NEXT: s_endpgm 1875; 1876; GCN-NOHSA-VI-LABEL: global_zextload_v8i16_to_v8i32: 1877; GCN-NOHSA-VI: ; %bb.0: 1878; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 1879; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 1880; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 1881; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 1882; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 1883; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1884; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 1885; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 1886; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 1887; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 1888; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 1889; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 1890; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v11, 16, v3 1891; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v10, 0xffff, v3 1892; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v9, 16, v2 1893; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v8, 0xffff, v2 1894; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v7, 16, v1 1895; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v6, 0xffff, v1 1896; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v5, 16, v0 1897; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v4, 0xffff, v0 1898; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[8:11], off, s[4:7], 0 offset:16 1899; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 1900; GCN-NOHSA-VI-NEXT: s_endpgm 1901; 1902; EG-LABEL: global_zextload_v8i16_to_v8i32: 1903; EG: ; %bb.0: 1904; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1905; EG-NEXT: TEX 0 @6 1906; EG-NEXT: ALU 17, @9, KC0[CB0:0-32], KC1[] 1907; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T10.X, 0 1908; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T7.X, 1 1909; EG-NEXT: CF_END 1910; EG-NEXT: Fetch clause starting at 6: 1911; EG-NEXT: VTX_READ_128 T7.XYZW, T7.X, 0, #1 1912; EG-NEXT: ALU clause starting at 8: 1913; EG-NEXT: MOV * T7.X, KC0[2].Z, 1914; EG-NEXT: ALU clause starting at 9: 1915; EG-NEXT: LSHR * T8.W, T7.Y, literal.x, 1916; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1917; EG-NEXT: AND_INT * T8.Z, T7.Y, literal.x, 1918; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 1919; EG-NEXT: LSHR T8.Y, T7.X, literal.x, 1920; EG-NEXT: LSHR * T9.W, T7.W, literal.x, 1921; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1922; EG-NEXT: AND_INT T8.X, T7.X, literal.x, 1923; EG-NEXT: AND_INT T9.Z, T7.W, literal.x, 1924; EG-NEXT: LSHR * T7.X, KC0[2].Y, literal.y, 1925; EG-NEXT: 65535(9.183409e-41), 2(2.802597e-45) 1926; EG-NEXT: LSHR * T9.Y, T7.Z, literal.x, 1927; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1928; EG-NEXT: AND_INT T9.X, T7.Z, literal.x, 1929; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 1930; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 1931; EG-NEXT: LSHR * T10.X, PV.W, literal.x, 1932; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1933; 1934; CM-LABEL: global_zextload_v8i16_to_v8i32: 1935; CM: ; %bb.0: 1936; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1937; CM-NEXT: TEX 0 @6 1938; CM-NEXT: ALU 17, @9, KC0[CB0:0-32], KC1[] 1939; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T7, T10.X 1940; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T8, T9.X 1941; CM-NEXT: CF_END 1942; CM-NEXT: Fetch clause starting at 6: 1943; CM-NEXT: VTX_READ_128 T7.XYZW, T7.X, 0, #1 1944; CM-NEXT: ALU clause starting at 8: 1945; CM-NEXT: MOV * T7.X, KC0[2].Z, 1946; CM-NEXT: ALU clause starting at 9: 1947; CM-NEXT: LSHR * T8.W, T7.W, literal.x, 1948; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1949; CM-NEXT: AND_INT * T8.Z, T7.W, literal.x, 1950; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 1951; CM-NEXT: LSHR T8.Y, T7.Z, literal.x, 1952; CM-NEXT: LSHR * T7.W, T7.Y, literal.x, 1953; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1954; CM-NEXT: AND_INT T8.X, T7.Z, literal.x, 1955; CM-NEXT: AND_INT T7.Z, T7.Y, literal.x, 1956; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 1957; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 1958; CM-NEXT: LSHR T9.X, PV.W, literal.x, 1959; CM-NEXT: LSHR * T7.Y, T7.X, literal.y, 1960; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 1961; CM-NEXT: AND_INT * T7.X, T7.X, literal.x, 1962; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 1963; CM-NEXT: LSHR * T10.X, KC0[2].Y, literal.x, 1964; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1965 %load = load <8 x i16>, <8 x i16> addrspace(1)* %in 1966 %ext = zext <8 x i16> %load to <8 x i32> 1967 store <8 x i32> %ext, <8 x i32> addrspace(1)* %out 1968 ret void 1969} 1970 1971; TODO: These should use ASHR instead of LSHR + BFE_INT 1972define amdgpu_kernel void @global_sextload_v8i16_to_v8i32(<8 x i32> addrspace(1)* %out, <8 x i16> addrspace(1)* %in) #0 { 1973; GCN-NOHSA-SI-LABEL: global_sextload_v8i16_to_v8i32: 1974; GCN-NOHSA-SI: ; %bb.0: 1975; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 1976; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 1977; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 1978; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 1979; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 1980; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1981; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 1982; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 1983; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 1984; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 1985; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 1986; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 1987; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v7, 16, v1 1988; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v5, 16, v0 1989; GCN-NOHSA-SI-NEXT: v_bfe_i32 v6, v1, 0, 16 1990; GCN-NOHSA-SI-NEXT: v_bfe_i32 v4, v0, 0, 16 1991; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v11, 16, v3 1992; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v9, 16, v2 1993; GCN-NOHSA-SI-NEXT: v_bfe_i32 v10, v3, 0, 16 1994; GCN-NOHSA-SI-NEXT: v_bfe_i32 v8, v2, 0, 16 1995; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[4:7], 0 offset:16 1996; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 1997; GCN-NOHSA-SI-NEXT: s_endpgm 1998; 1999; GCN-HSA-LABEL: global_sextload_v8i16_to_v8i32: 2000; GCN-HSA: ; %bb.0: 2001; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 2002; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 2003; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 2004; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 2005; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 2006; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 2007; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2008; GCN-HSA-NEXT: v_mov_b32_e32 v15, s3 2009; GCN-HSA-NEXT: v_mov_b32_e32 v13, s1 2010; GCN-HSA-NEXT: v_mov_b32_e32 v14, s2 2011; GCN-HSA-NEXT: v_mov_b32_e32 v12, s0 2012; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 2013; GCN-HSA-NEXT: v_ashrrev_i32_e32 v11, 16, v3 2014; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 16, v2 2015; GCN-HSA-NEXT: v_bfe_i32 v10, v3, 0, 16 2016; GCN-HSA-NEXT: v_bfe_i32 v8, v2, 0, 16 2017; GCN-HSA-NEXT: v_ashrrev_i32_e32 v7, 16, v1 2018; GCN-HSA-NEXT: v_ashrrev_i32_e32 v5, 16, v0 2019; GCN-HSA-NEXT: v_bfe_i32 v6, v1, 0, 16 2020; GCN-HSA-NEXT: v_bfe_i32 v4, v0, 0, 16 2021; GCN-HSA-NEXT: flat_store_dwordx4 v[14:15], v[8:11] 2022; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[4:7] 2023; GCN-HSA-NEXT: s_endpgm 2024; 2025; GCN-NOHSA-VI-LABEL: global_sextload_v8i16_to_v8i32: 2026; GCN-NOHSA-VI: ; %bb.0: 2027; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 2028; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 2029; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 2030; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 2031; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 2032; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 2033; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 2034; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 2035; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 2036; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 2037; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 2038; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 2039; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v11, 16, v3 2040; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v9, 16, v2 2041; GCN-NOHSA-VI-NEXT: v_bfe_i32 v10, v3, 0, 16 2042; GCN-NOHSA-VI-NEXT: v_bfe_i32 v8, v2, 0, 16 2043; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v7, 16, v1 2044; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v5, 16, v0 2045; GCN-NOHSA-VI-NEXT: v_bfe_i32 v6, v1, 0, 16 2046; GCN-NOHSA-VI-NEXT: v_bfe_i32 v4, v0, 0, 16 2047; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[8:11], off, s[4:7], 0 offset:16 2048; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 2049; GCN-NOHSA-VI-NEXT: s_endpgm 2050; 2051; EG-LABEL: global_sextload_v8i16_to_v8i32: 2052; EG: ; %bb.0: 2053; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 2054; EG-NEXT: TEX 0 @6 2055; EG-NEXT: ALU 19, @9, KC0[CB0:0-32], KC1[] 2056; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T10.X, 0 2057; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T7.X, 1 2058; EG-NEXT: CF_END 2059; EG-NEXT: Fetch clause starting at 6: 2060; EG-NEXT: VTX_READ_128 T7.XYZW, T7.X, 0, #1 2061; EG-NEXT: ALU clause starting at 8: 2062; EG-NEXT: MOV * T7.X, KC0[2].Z, 2063; EG-NEXT: ALU clause starting at 9: 2064; EG-NEXT: BFE_INT * T8.Z, T7.Y, 0.0, literal.x, 2065; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2066; EG-NEXT: BFE_INT T8.X, T7.X, 0.0, literal.x, 2067; EG-NEXT: BFE_INT T9.Z, T7.W, 0.0, literal.x, 2068; EG-NEXT: LSHR * T0.W, T7.Y, literal.x, 2069; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2070; EG-NEXT: BFE_INT T9.X, T7.Z, 0.0, literal.x, 2071; EG-NEXT: LSHR T0.Z, T7.W, literal.x, 2072; EG-NEXT: BFE_INT T8.W, PV.W, 0.0, literal.x, 2073; EG-NEXT: LSHR * T0.W, T7.X, literal.x, 2074; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2075; EG-NEXT: LSHR T7.X, KC0[2].Y, literal.x, 2076; EG-NEXT: BFE_INT T8.Y, PS, 0.0, literal.y, 2077; EG-NEXT: LSHR T1.Z, T7.Z, literal.y, 2078; EG-NEXT: BFE_INT T9.W, PV.Z, 0.0, literal.y, 2079; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2080; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2081; EG-NEXT: LSHR T10.X, PS, literal.x, 2082; EG-NEXT: BFE_INT * T9.Y, PV.Z, 0.0, literal.y, 2083; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2084; 2085; CM-LABEL: global_sextload_v8i16_to_v8i32: 2086; CM: ; %bb.0: 2087; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 2088; CM-NEXT: TEX 0 @6 2089; CM-NEXT: ALU 19, @9, KC0[CB0:0-32], KC1[] 2090; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T9, T7.X 2091; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T8, T10.X 2092; CM-NEXT: CF_END 2093; CM-NEXT: Fetch clause starting at 6: 2094; CM-NEXT: VTX_READ_128 T7.XYZW, T7.X, 0, #1 2095; CM-NEXT: ALU clause starting at 8: 2096; CM-NEXT: MOV * T7.X, KC0[2].Z, 2097; CM-NEXT: ALU clause starting at 9: 2098; CM-NEXT: BFE_INT * T8.Z, T7.W, 0.0, literal.x, 2099; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2100; CM-NEXT: BFE_INT T8.X, T7.Z, 0.0, literal.x, 2101; CM-NEXT: LSHR T0.Y, T7.Y, literal.x, 2102; CM-NEXT: BFE_INT T9.Z, T7.Y, 0.0, literal.x, 2103; CM-NEXT: LSHR * T0.W, T7.W, literal.x, 2104; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2105; CM-NEXT: BFE_INT T9.X, T7.X, 0.0, literal.x, 2106; CM-NEXT: LSHR T1.Y, T7.Z, literal.x, 2107; CM-NEXT: ADD_INT T0.Z, KC0[2].Y, literal.x, 2108; CM-NEXT: BFE_INT * T8.W, PV.W, 0.0, literal.x, 2109; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2110; CM-NEXT: LSHR T10.X, PV.Z, literal.x, 2111; CM-NEXT: BFE_INT T8.Y, PV.Y, 0.0, literal.y, 2112; CM-NEXT: LSHR T0.Z, T7.X, literal.y, 2113; CM-NEXT: BFE_INT * T9.W, T0.Y, 0.0, literal.y, 2114; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2115; CM-NEXT: LSHR T7.X, KC0[2].Y, literal.x, 2116; CM-NEXT: BFE_INT * T9.Y, PV.Z, 0.0, literal.y, 2117; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2118 %load = load <8 x i16>, <8 x i16> addrspace(1)* %in 2119 %ext = sext <8 x i16> %load to <8 x i32> 2120 store <8 x i32> %ext, <8 x i32> addrspace(1)* %out 2121 ret void 2122} 2123 2124define amdgpu_kernel void @global_zextload_v16i16_to_v16i32(<16 x i32> addrspace(1)* %out, <16 x i16> addrspace(1)* %in) #0 { 2125; GCN-NOHSA-SI-LABEL: global_zextload_v16i16_to_v16i32: 2126; GCN-NOHSA-SI: ; %bb.0: 2127; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 2128; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 2129; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 2130; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s2 2131; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s3 2132; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 2133; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s6 2134; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s7 2135; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 2136; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 2137; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 2138; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 2139; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(1) 2140; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v11, 16, v1 2141; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v9, 16, v0 2142; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v15, 16, v3 2143; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v13, 16, v2 2144; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 2145; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v19, 16, v5 2146; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v17, 16, v4 2147; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v10, 0xffff, v1 2148; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v8, 0xffff, v0 2149; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v14, 0xffff, v3 2150; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v12, 0xffff, v2 2151; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v3, 16, v7 2152; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v1, 16, v6 2153; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v18, 0xffff, v5 2154; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v16, 0xffff, v4 2155; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v2, 0xffff, v7 2156; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v0, 0xffff, v6 2157; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 2158; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:32 2159; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:16 2160; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 2161; GCN-NOHSA-SI-NEXT: s_endpgm 2162; 2163; GCN-HSA-LABEL: global_zextload_v16i16_to_v16i32: 2164; GCN-HSA: ; %bb.0: 2165; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 2166; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 2167; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 2168; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 2169; GCN-HSA-NEXT: s_add_u32 s2, s2, 16 2170; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0 2171; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 2172; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 2173; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 2174; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5] 2175; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 2176; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2177; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 2178; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 2179; GCN-HSA-NEXT: s_add_u32 s2, s0, 48 2180; GCN-HSA-NEXT: v_mov_b32_e32 v17, s1 2181; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2182; GCN-HSA-NEXT: v_mov_b32_e32 v16, s0 2183; GCN-HSA-NEXT: s_add_u32 s0, s0, 32 2184; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 2185; GCN-HSA-NEXT: v_mov_b32_e32 v19, s3 2186; GCN-HSA-NEXT: v_mov_b32_e32 v18, s2 2187; GCN-HSA-NEXT: s_waitcnt vmcnt(1) 2188; GCN-HSA-NEXT: v_lshrrev_b32_e32 v11, 16, v3 2189; GCN-HSA-NEXT: v_lshrrev_b32_e32 v9, 16, v2 2190; GCN-HSA-NEXT: v_and_b32_e32 v10, 0xffff, v3 2191; GCN-HSA-NEXT: v_and_b32_e32 v8, 0xffff, v2 2192; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[8:11] 2193; GCN-HSA-NEXT: s_waitcnt vmcnt(1) 2194; GCN-HSA-NEXT: v_lshrrev_b32_e32 v13, 16, v6 2195; GCN-HSA-NEXT: v_lshrrev_b32_e32 v11, 16, v5 2196; GCN-HSA-NEXT: v_lshrrev_b32_e32 v9, 16, v4 2197; GCN-HSA-NEXT: v_and_b32_e32 v10, 0xffff, v5 2198; GCN-HSA-NEXT: v_and_b32_e32 v8, 0xffff, v4 2199; GCN-HSA-NEXT: v_and_b32_e32 v12, 0xffff, v6 2200; GCN-HSA-NEXT: v_lshrrev_b32_e32 v4, 16, v1 2201; GCN-HSA-NEXT: v_lshrrev_b32_e32 v2, 16, v0 2202; GCN-HSA-NEXT: v_and_b32_e32 v3, 0xffff, v1 2203; GCN-HSA-NEXT: v_and_b32_e32 v1, 0xffff, v0 2204; GCN-HSA-NEXT: v_mov_b32_e32 v6, s1 2205; GCN-HSA-NEXT: v_lshrrev_b32_e32 v15, 16, v7 2206; GCN-HSA-NEXT: v_and_b32_e32 v14, 0xffff, v7 2207; GCN-HSA-NEXT: v_mov_b32_e32 v5, s0 2208; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[1:4] 2209; GCN-HSA-NEXT: flat_store_dwordx4 v[18:19], v[12:15] 2210; GCN-HSA-NEXT: flat_store_dwordx4 v[5:6], v[8:11] 2211; GCN-HSA-NEXT: s_endpgm 2212; 2213; GCN-NOHSA-VI-LABEL: global_zextload_v16i16_to_v16i32: 2214; GCN-NOHSA-VI: ; %bb.0: 2215; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 2216; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 2217; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 2218; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s2 2219; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s3 2220; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 2221; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s6 2222; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s7 2223; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 2224; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 2225; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 2226; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 2227; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(1) 2228; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v11, 16, v1 2229; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 2230; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v19, 16, v7 2231; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v18, 0xffff, v7 2232; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v17, 16, v6 2233; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v16, 0xffff, v6 2234; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v10, 0xffff, v1 2235; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v9, 16, v0 2236; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v8, 0xffff, v0 2237; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v15, 16, v3 2238; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v14, 0xffff, v3 2239; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v13, 16, v2 2240; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v12, 0xffff, v2 2241; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v3, 16, v5 2242; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v2, 0xffff, v5 2243; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v1, 16, v4 2244; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, 0xffff, v4 2245; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:48 2246; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 2247; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:16 2248; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 2249; GCN-NOHSA-VI-NEXT: s_endpgm 2250; 2251; EG-LABEL: global_zextload_v16i16_to_v16i32: 2252; EG: ; %bb.0: 2253; EG-NEXT: ALU 0, @12, KC0[CB0:0-32], KC1[] 2254; EG-NEXT: TEX 1 @8 2255; EG-NEXT: ALU 35, @13, KC0[CB0:0-32], KC1[] 2256; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T18.X, 0 2257; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T15.XYZW, T11.X, 0 2258; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T16.X, 0 2259; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T12.X, 1 2260; EG-NEXT: CF_END 2261; EG-NEXT: Fetch clause starting at 8: 2262; EG-NEXT: VTX_READ_128 T12.XYZW, T11.X, 0, #1 2263; EG-NEXT: VTX_READ_128 T11.XYZW, T11.X, 16, #1 2264; EG-NEXT: ALU clause starting at 12: 2265; EG-NEXT: MOV * T11.X, KC0[2].Z, 2266; EG-NEXT: ALU clause starting at 13: 2267; EG-NEXT: LSHR * T13.W, T12.Y, literal.x, 2268; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2269; EG-NEXT: AND_INT * T13.Z, T12.Y, literal.x, 2270; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2271; EG-NEXT: LSHR T13.Y, T12.X, literal.x, 2272; EG-NEXT: LSHR * T14.W, T12.W, literal.x, 2273; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2274; EG-NEXT: AND_INT T13.X, T12.X, literal.x, 2275; EG-NEXT: AND_INT T14.Z, T12.W, literal.x, 2276; EG-NEXT: LSHR * T12.X, KC0[2].Y, literal.y, 2277; EG-NEXT: 65535(9.183409e-41), 2(2.802597e-45) 2278; EG-NEXT: LSHR T14.Y, T12.Z, literal.x, 2279; EG-NEXT: LSHR * T15.W, T11.Y, literal.x, 2280; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2281; EG-NEXT: AND_INT T14.X, T12.Z, literal.x, 2282; EG-NEXT: AND_INT T15.Z, T11.Y, literal.x, 2283; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2284; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 2285; EG-NEXT: LSHR T16.X, PV.W, literal.x, 2286; EG-NEXT: LSHR T15.Y, T11.X, literal.y, 2287; EG-NEXT: LSHR T17.W, T11.W, literal.y, 2288; EG-NEXT: AND_INT * T15.X, T11.X, literal.z, 2289; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2290; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2291; EG-NEXT: AND_INT T17.Z, T11.W, literal.x, 2292; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2293; EG-NEXT: 65535(9.183409e-41), 32(4.484155e-44) 2294; EG-NEXT: LSHR T11.X, PV.W, literal.x, 2295; EG-NEXT: LSHR T17.Y, T11.Z, literal.y, 2296; EG-NEXT: AND_INT * T17.X, T11.Z, literal.z, 2297; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2298; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2299; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 2300; EG-NEXT: 48(6.726233e-44), 0(0.000000e+00) 2301; EG-NEXT: LSHR * T18.X, PV.W, literal.x, 2302; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 2303; 2304; CM-LABEL: global_zextload_v16i16_to_v16i32: 2305; CM: ; %bb.0: 2306; CM-NEXT: ALU 0, @12, KC0[CB0:0-32], KC1[] 2307; CM-NEXT: TEX 1 @8 2308; CM-NEXT: ALU 33, @13, KC0[CB0:0-32], KC1[] 2309; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T11, T18.X 2310; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T15, T17.X 2311; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T12, T16.X 2312; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T13, T14.X 2313; CM-NEXT: CF_END 2314; CM-NEXT: Fetch clause starting at 8: 2315; CM-NEXT: VTX_READ_128 T12.XYZW, T11.X, 16, #1 2316; CM-NEXT: VTX_READ_128 T11.XYZW, T11.X, 0, #1 2317; CM-NEXT: ALU clause starting at 12: 2318; CM-NEXT: MOV * T11.X, KC0[2].Z, 2319; CM-NEXT: ALU clause starting at 13: 2320; CM-NEXT: LSHR * T13.W, T12.W, literal.x, 2321; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2322; CM-NEXT: AND_INT * T13.Z, T12.W, literal.x, 2323; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2324; CM-NEXT: LSHR T13.Y, T12.Z, literal.x, 2325; CM-NEXT: LSHR * T12.W, T12.Y, literal.x, 2326; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2327; CM-NEXT: AND_INT T13.X, T12.Z, literal.x, 2328; CM-NEXT: AND_INT T12.Z, T12.Y, literal.x, 2329; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2330; CM-NEXT: 65535(9.183409e-41), 48(6.726233e-44) 2331; CM-NEXT: LSHR T14.X, PV.W, literal.x, 2332; CM-NEXT: LSHR T12.Y, T12.X, literal.y, 2333; CM-NEXT: LSHR * T15.W, T11.W, literal.y, 2334; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2335; CM-NEXT: AND_INT T12.X, T12.X, literal.x, 2336; CM-NEXT: AND_INT T15.Z, T11.W, literal.x, 2337; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2338; CM-NEXT: 65535(9.183409e-41), 32(4.484155e-44) 2339; CM-NEXT: LSHR T16.X, PV.W, literal.x, 2340; CM-NEXT: LSHR T15.Y, T11.Z, literal.y, 2341; CM-NEXT: LSHR * T11.W, T11.Y, literal.y, 2342; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2343; CM-NEXT: AND_INT T15.X, T11.Z, literal.x, 2344; CM-NEXT: AND_INT T11.Z, T11.Y, literal.x, 2345; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2346; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 2347; CM-NEXT: LSHR T17.X, PV.W, literal.x, 2348; CM-NEXT: LSHR * T11.Y, T11.X, literal.y, 2349; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2350; CM-NEXT: AND_INT * T11.X, T11.X, literal.x, 2351; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2352; CM-NEXT: LSHR * T18.X, KC0[2].Y, literal.x, 2353; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 2354 %load = load <16 x i16>, <16 x i16> addrspace(1)* %in 2355 %ext = zext <16 x i16> %load to <16 x i32> 2356 store <16 x i32> %ext, <16 x i32> addrspace(1)* %out 2357 ret void 2358} 2359 2360define amdgpu_kernel void @global_sextload_v16i16_to_v16i32(<16 x i32> addrspace(1)* %out, <16 x i16> addrspace(1)* %in) #0 { 2361; GCN-NOHSA-SI-LABEL: global_sextload_v16i16_to_v16i32: 2362; GCN-NOHSA-SI: ; %bb.0: 2363; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 2364; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 2365; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 2366; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s2 2367; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s3 2368; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 2369; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s6 2370; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s7 2371; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 2372; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 2373; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 2374; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 2375; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(1) 2376; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v11, 16, v1 2377; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v9, 16, v0 2378; GCN-NOHSA-SI-NEXT: v_bfe_i32 v10, v1, 0, 16 2379; GCN-NOHSA-SI-NEXT: v_bfe_i32 v8, v0, 0, 16 2380; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v15, 16, v3 2381; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v13, 16, v2 2382; GCN-NOHSA-SI-NEXT: v_bfe_i32 v14, v3, 0, 16 2383; GCN-NOHSA-SI-NEXT: v_bfe_i32 v12, v2, 0, 16 2384; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 2385; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v3, 16, v5 2386; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 16, v4 2387; GCN-NOHSA-SI-NEXT: v_bfe_i32 v2, v5, 0, 16 2388; GCN-NOHSA-SI-NEXT: v_bfe_i32 v0, v4, 0, 16 2389; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v19, 16, v7 2390; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v17, 16, v6 2391; GCN-NOHSA-SI-NEXT: v_bfe_i32 v18, v7, 0, 16 2392; GCN-NOHSA-SI-NEXT: v_bfe_i32 v16, v6, 0, 16 2393; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:48 2394; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 2395; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:16 2396; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 2397; GCN-NOHSA-SI-NEXT: s_endpgm 2398; 2399; GCN-HSA-LABEL: global_sextload_v16i16_to_v16i32: 2400; GCN-HSA: ; %bb.0: 2401; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 2402; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 2403; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 2404; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 2405; GCN-HSA-NEXT: s_add_u32 s2, s2, 16 2406; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0 2407; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 2408; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 2409; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 2410; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5] 2411; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 2412; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2413; GCN-HSA-NEXT: v_mov_b32_e32 v19, s3 2414; GCN-HSA-NEXT: v_mov_b32_e32 v18, s2 2415; GCN-HSA-NEXT: s_add_u32 s2, s0, 48 2416; GCN-HSA-NEXT: v_mov_b32_e32 v17, s1 2417; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2418; GCN-HSA-NEXT: v_mov_b32_e32 v16, s0 2419; GCN-HSA-NEXT: s_add_u32 s0, s0, 32 2420; GCN-HSA-NEXT: v_mov_b32_e32 v21, s3 2421; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 2422; GCN-HSA-NEXT: v_mov_b32_e32 v20, s2 2423; GCN-HSA-NEXT: v_mov_b32_e32 v23, s1 2424; GCN-HSA-NEXT: v_mov_b32_e32 v22, s0 2425; GCN-HSA-NEXT: s_waitcnt vmcnt(1) 2426; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 16, v0 2427; GCN-HSA-NEXT: v_bfe_i32 v10, v1, 0, 16 2428; GCN-HSA-NEXT: v_bfe_i32 v8, v0, 0, 16 2429; GCN-HSA-NEXT: v_ashrrev_i32_e32 v15, 16, v3 2430; GCN-HSA-NEXT: v_ashrrev_i32_e32 v13, 16, v2 2431; GCN-HSA-NEXT: v_bfe_i32 v14, v3, 0, 16 2432; GCN-HSA-NEXT: v_bfe_i32 v12, v2, 0, 16 2433; GCN-HSA-NEXT: v_ashrrev_i32_e32 v11, 16, v1 2434; GCN-HSA-NEXT: flat_store_dwordx4 v[18:19], v[12:15] 2435; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[8:11] 2436; GCN-HSA-NEXT: s_waitcnt vmcnt(2) 2437; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 16, v5 2438; GCN-HSA-NEXT: v_ashrrev_i32_e32 v10, 16, v7 2439; GCN-HSA-NEXT: v_ashrrev_i32_e32 v8, 16, v6 2440; GCN-HSA-NEXT: v_bfe_i32 v9, v7, 0, 16 2441; GCN-HSA-NEXT: v_bfe_i32 v7, v6, 0, 16 2442; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 16, v4 2443; GCN-HSA-NEXT: v_bfe_i32 v2, v5, 0, 16 2444; GCN-HSA-NEXT: v_bfe_i32 v0, v4, 0, 16 2445; GCN-HSA-NEXT: flat_store_dwordx4 v[20:21], v[7:10] 2446; GCN-HSA-NEXT: flat_store_dwordx4 v[22:23], v[0:3] 2447; GCN-HSA-NEXT: s_endpgm 2448; 2449; GCN-NOHSA-VI-LABEL: global_sextload_v16i16_to_v16i32: 2450; GCN-NOHSA-VI: ; %bb.0: 2451; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 2452; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 2453; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 2454; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s2 2455; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s3 2456; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 2457; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s6 2458; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s7 2459; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 2460; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 2461; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 2462; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 2463; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(1) 2464; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v11, 16, v1 2465; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 2466; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v19, 16, v7 2467; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v17, 16, v6 2468; GCN-NOHSA-VI-NEXT: v_bfe_i32 v18, v7, 0, 16 2469; GCN-NOHSA-VI-NEXT: v_bfe_i32 v16, v6, 0, 16 2470; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v9, 16, v0 2471; GCN-NOHSA-VI-NEXT: v_bfe_i32 v10, v1, 0, 16 2472; GCN-NOHSA-VI-NEXT: v_bfe_i32 v8, v0, 0, 16 2473; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v15, 16, v3 2474; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v13, 16, v2 2475; GCN-NOHSA-VI-NEXT: v_bfe_i32 v14, v3, 0, 16 2476; GCN-NOHSA-VI-NEXT: v_bfe_i32 v12, v2, 0, 16 2477; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v3, 16, v5 2478; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 16, v4 2479; GCN-NOHSA-VI-NEXT: v_bfe_i32 v2, v5, 0, 16 2480; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v4, 0, 16 2481; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:48 2482; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 2483; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:16 2484; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 2485; GCN-NOHSA-VI-NEXT: s_endpgm 2486; 2487; EG-LABEL: global_sextload_v16i16_to_v16i32: 2488; EG: ; %bb.0: 2489; EG-NEXT: ALU 0, @12, KC0[CB0:0-32], KC1[] 2490; EG-NEXT: TEX 1 @8 2491; EG-NEXT: ALU 39, @13, KC0[CB0:0-32], KC1[] 2492; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T18.XYZW, T12.X, 0 2493; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T11.X, 0 2494; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T16.XYZW, T14.X, 0 2495; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T15.XYZW, T13.X, 1 2496; EG-NEXT: CF_END 2497; EG-NEXT: Fetch clause starting at 8: 2498; EG-NEXT: VTX_READ_128 T12.XYZW, T11.X, 16, #1 2499; EG-NEXT: VTX_READ_128 T11.XYZW, T11.X, 0, #1 2500; EG-NEXT: ALU clause starting at 12: 2501; EG-NEXT: MOV * T11.X, KC0[2].Z, 2502; EG-NEXT: ALU clause starting at 13: 2503; EG-NEXT: LSHR T13.X, KC0[2].Y, literal.x, 2504; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2505; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2506; EG-NEXT: LSHR T14.X, PV.W, literal.x, 2507; EG-NEXT: BFE_INT * T15.Z, T11.Y, 0.0, literal.y, 2508; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2509; EG-NEXT: BFE_INT T15.X, T11.X, 0.0, literal.x, 2510; EG-NEXT: LSHR T0.Y, T12.W, literal.x, 2511; EG-NEXT: BFE_INT T16.Z, T11.W, 0.0, literal.x, BS:VEC_120/SCL_212 2512; EG-NEXT: LSHR T0.W, T12.Y, literal.x, 2513; EG-NEXT: LSHR * T1.W, T11.Y, literal.x, 2514; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2515; EG-NEXT: BFE_INT T16.X, T11.Z, 0.0, literal.x, 2516; EG-NEXT: LSHR T1.Y, T11.W, literal.x, 2517; EG-NEXT: BFE_INT T17.Z, T12.Y, 0.0, literal.x, 2518; EG-NEXT: BFE_INT T15.W, PS, 0.0, literal.x, 2519; EG-NEXT: LSHR * T1.W, T11.X, literal.x, 2520; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2521; EG-NEXT: BFE_INT T17.X, T12.X, 0.0, literal.x, 2522; EG-NEXT: BFE_INT T15.Y, PS, 0.0, literal.x, 2523; EG-NEXT: BFE_INT T18.Z, T12.W, 0.0, literal.x, 2524; EG-NEXT: BFE_INT T16.W, PV.Y, 0.0, literal.x, 2525; EG-NEXT: LSHR * T1.W, T11.Z, literal.x, 2526; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2527; EG-NEXT: BFE_INT T18.X, T12.Z, 0.0, literal.x, 2528; EG-NEXT: BFE_INT T16.Y, PS, 0.0, literal.x, 2529; EG-NEXT: LSHR T0.Z, T12.X, literal.x, 2530; EG-NEXT: BFE_INT T17.W, T0.W, 0.0, literal.x, 2531; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2532; EG-NEXT: 16(2.242078e-44), 32(4.484155e-44) 2533; EG-NEXT: LSHR T11.X, PS, literal.x, 2534; EG-NEXT: BFE_INT T17.Y, PV.Z, 0.0, literal.y, 2535; EG-NEXT: LSHR T0.Z, T12.Z, literal.y, 2536; EG-NEXT: BFE_INT T18.W, T0.Y, 0.0, literal.y, 2537; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 2538; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2539; EG-NEXT: 48(6.726233e-44), 0(0.000000e+00) 2540; EG-NEXT: LSHR T12.X, PS, literal.x, 2541; EG-NEXT: BFE_INT * T18.Y, PV.Z, 0.0, literal.y, 2542; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2543; 2544; CM-LABEL: global_sextload_v16i16_to_v16i32: 2545; CM: ; %bb.0: 2546; CM-NEXT: ALU 0, @12, KC0[CB0:0-32], KC1[] 2547; CM-NEXT: TEX 1 @8 2548; CM-NEXT: ALU 40, @13, KC0[CB0:0-32], KC1[] 2549; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T17, T11.X 2550; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T12, T18.X 2551; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T16, T14.X 2552; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T15, T13.X 2553; CM-NEXT: CF_END 2554; CM-NEXT: Fetch clause starting at 8: 2555; CM-NEXT: VTX_READ_128 T12.XYZW, T11.X, 16, #1 2556; CM-NEXT: VTX_READ_128 T11.XYZW, T11.X, 0, #1 2557; CM-NEXT: ALU clause starting at 12: 2558; CM-NEXT: MOV * T11.X, KC0[2].Z, 2559; CM-NEXT: ALU clause starting at 13: 2560; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 2561; CM-NEXT: 48(6.726233e-44), 0(0.000000e+00) 2562; CM-NEXT: LSHR T13.X, PV.W, literal.x, 2563; CM-NEXT: LSHR T0.Y, T11.Y, literal.y, 2564; CM-NEXT: LSHR T0.Z, T11.Z, literal.y, 2565; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 2566; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2567; CM-NEXT: 32(4.484155e-44), 0(0.000000e+00) 2568; CM-NEXT: LSHR T14.X, PV.W, literal.x, 2569; CM-NEXT: LSHR T1.Y, T11.W, literal.y, 2570; CM-NEXT: BFE_INT T15.Z, T12.W, 0.0, literal.y, BS:VEC_120/SCL_212 2571; CM-NEXT: LSHR * T0.W, T12.X, literal.y, 2572; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2573; CM-NEXT: BFE_INT T15.X, T12.Z, 0.0, literal.x, 2574; CM-NEXT: LSHR T2.Y, T12.Y, literal.x, 2575; CM-NEXT: BFE_INT T16.Z, T12.Y, 0.0, literal.x, 2576; CM-NEXT: LSHR * T1.W, T12.W, literal.x, 2577; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2578; CM-NEXT: BFE_INT T16.X, T12.X, 0.0, literal.x, 2579; CM-NEXT: LSHR T3.Y, T12.Z, literal.x, 2580; CM-NEXT: BFE_INT T12.Z, T11.W, 0.0, literal.x, 2581; CM-NEXT: BFE_INT * T15.W, PV.W, 0.0, literal.x, 2582; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2583; CM-NEXT: BFE_INT T12.X, T11.Z, 0.0, literal.x, 2584; CM-NEXT: BFE_INT T15.Y, PV.Y, 0.0, literal.x, 2585; CM-NEXT: BFE_INT T17.Z, T11.Y, 0.0, literal.x, 2586; CM-NEXT: BFE_INT * T16.W, T2.Y, 0.0, literal.x, BS:VEC_120/SCL_212 2587; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2588; CM-NEXT: BFE_INT T17.X, T11.X, 0.0, literal.x, 2589; CM-NEXT: BFE_INT T16.Y, T0.W, 0.0, literal.x, 2590; CM-NEXT: ADD_INT T1.Z, KC0[2].Y, literal.x, 2591; CM-NEXT: BFE_INT * T12.W, T1.Y, 0.0, literal.x, 2592; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2593; CM-NEXT: LSHR T18.X, PV.Z, literal.x, 2594; CM-NEXT: BFE_INT T12.Y, T0.Z, 0.0, literal.y, 2595; CM-NEXT: LSHR T0.Z, T11.X, literal.y, 2596; CM-NEXT: BFE_INT * T17.W, T0.Y, 0.0, literal.y, 2597; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2598; CM-NEXT: LSHR T11.X, KC0[2].Y, literal.x, 2599; CM-NEXT: BFE_INT * T17.Y, PV.Z, 0.0, literal.y, 2600; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2601 %load = load <16 x i16>, <16 x i16> addrspace(1)* %in 2602 %ext = sext <16 x i16> %load to <16 x i32> 2603 store <16 x i32> %ext, <16 x i32> addrspace(1)* %out 2604 ret void 2605} 2606 2607define amdgpu_kernel void @global_zextload_v32i16_to_v32i32(<32 x i32> addrspace(1)* %out, <32 x i16> addrspace(1)* %in) #0 { 2608; GCN-NOHSA-SI-LABEL: global_zextload_v32i16_to_v32i32: 2609; GCN-NOHSA-SI: ; %bb.0: 2610; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 2611; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 2612; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 2613; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s2 2614; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s3 2615; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 2616; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s6 2617; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s7 2618; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 2619; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 2620; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[8:11], off, s[8:11], 0 offset:32 2621; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[12:15], off, s[8:11], 0 offset:48 2622; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(3) 2623; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v19, 16, v3 2624; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v17, 16, v2 2625; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v23, 16, v1 2626; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v21, 16, v0 2627; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(2) 2628; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v27, 16, v7 2629; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v25, 16, v6 2630; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v18, 0xffff, v3 2631; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v16, 0xffff, v2 2632; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v22, 0xffff, v1 2633; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v20, 0xffff, v0 2634; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v3, 16, v5 2635; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v1, 16, v4 2636; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v26, 0xffff, v7 2637; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v24, 0xffff, v6 2638; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v2, 0xffff, v5 2639; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v0, 0xffff, v4 2640; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(1) 2641; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v7, 16, v11 2642; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v5, 16, v10 2643; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v31, 16, v9 2644; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v29, 16, v8 2645; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v6, 0xffff, v11 2646; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v4, 0xffff, v10 2647; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v30, 0xffff, v9 2648; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v28, 0xffff, v8 2649; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 2650; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v11, 16, v15 2651; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v9, 16, v14 2652; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v35, 16, v13 2653; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v33, 16, v12 2654; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v10, 0xffff, v15 2655; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v8, 0xffff, v14 2656; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v34, 0xffff, v13 2657; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v32, 0xffff, v12 2658; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 2659; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 2660; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[32:35], off, s[0:3], 0 offset:96 2661; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:112 2662; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:64 2663; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:80 2664; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 2665; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:48 2666; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[20:23], off, s[0:3], 0 2667; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:16 2668; GCN-NOHSA-SI-NEXT: s_endpgm 2669; 2670; GCN-HSA-LABEL: global_zextload_v32i16_to_v32i32: 2671; GCN-HSA: ; %bb.0: 2672; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 2673; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 2674; GCN-HSA-NEXT: s_add_u32 s4, s2, 16 2675; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 2676; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 2677; GCN-HSA-NEXT: v_mov_b32_e32 v1, s5 2678; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 2679; GCN-HSA-NEXT: s_add_u32 s4, s2, 32 2680; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 2681; GCN-HSA-NEXT: v_mov_b32_e32 v4, s4 2682; GCN-HSA-NEXT: v_mov_b32_e32 v5, s5 2683; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5] 2684; GCN-HSA-NEXT: v_mov_b32_e32 v9, s3 2685; GCN-HSA-NEXT: v_mov_b32_e32 v8, s2 2686; GCN-HSA-NEXT: s_add_u32 s2, s2, 48 2687; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0 2688; GCN-HSA-NEXT: flat_load_dwordx4 v[8:11], v[8:9] 2689; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 2690; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 2691; GCN-HSA-NEXT: flat_load_dwordx4 v[12:15], v[12:13] 2692; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 2693; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2694; GCN-HSA-NEXT: s_add_u32 s4, s0, 0x60 2695; GCN-HSA-NEXT: s_addc_u32 s5, s1, 0 2696; GCN-HSA-NEXT: s_add_u32 s6, s0, 0x70 2697; GCN-HSA-NEXT: s_addc_u32 s7, s1, 0 2698; GCN-HSA-NEXT: s_add_u32 s8, s0, 64 2699; GCN-HSA-NEXT: s_addc_u32 s9, s1, 0 2700; GCN-HSA-NEXT: s_add_u32 s10, s0, 0x50 2701; GCN-HSA-NEXT: s_addc_u32 s11, s1, 0 2702; GCN-HSA-NEXT: s_add_u32 s12, s0, 32 2703; GCN-HSA-NEXT: s_addc_u32 s13, s1, 0 2704; GCN-HSA-NEXT: v_mov_b32_e32 v21, s3 2705; GCN-HSA-NEXT: v_mov_b32_e32 v20, s2 2706; GCN-HSA-NEXT: v_mov_b32_e32 v23, s7 2707; GCN-HSA-NEXT: v_mov_b32_e32 v22, s6 2708; GCN-HSA-NEXT: s_waitcnt vmcnt(3) 2709; GCN-HSA-NEXT: v_lshrrev_b32_e32 v19, 16, v1 2710; GCN-HSA-NEXT: v_lshrrev_b32_e32 v17, 16, v0 2711; GCN-HSA-NEXT: v_and_b32_e32 v18, 0xffff, v1 2712; GCN-HSA-NEXT: v_and_b32_e32 v16, 0xffff, v0 2713; GCN-HSA-NEXT: v_mov_b32_e32 v0, s12 2714; GCN-HSA-NEXT: v_mov_b32_e32 v1, s13 2715; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[16:19] 2716; GCN-HSA-NEXT: v_mov_b32_e32 v0, s8 2717; GCN-HSA-NEXT: s_waitcnt vmcnt(3) 2718; GCN-HSA-NEXT: v_lshrrev_b32_e32 v19, 16, v5 2719; GCN-HSA-NEXT: v_lshrrev_b32_e32 v17, 16, v4 2720; GCN-HSA-NEXT: v_and_b32_e32 v18, 0xffff, v5 2721; GCN-HSA-NEXT: v_and_b32_e32 v16, 0xffff, v4 2722; GCN-HSA-NEXT: v_mov_b32_e32 v1, s9 2723; GCN-HSA-NEXT: v_mov_b32_e32 v4, s10 2724; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[16:19] 2725; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 2726; GCN-HSA-NEXT: v_lshrrev_b32_e32 v19, 16, v7 2727; GCN-HSA-NEXT: v_lshrrev_b32_e32 v17, 16, v6 2728; GCN-HSA-NEXT: v_and_b32_e32 v18, 0xffff, v7 2729; GCN-HSA-NEXT: v_and_b32_e32 v16, 0xffff, v6 2730; GCN-HSA-NEXT: v_mov_b32_e32 v5, s11 2731; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 2732; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[16:19] 2733; GCN-HSA-NEXT: s_waitcnt vmcnt(4) 2734; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v9 2735; GCN-HSA-NEXT: v_lshrrev_b32_e32 v5, 16, v8 2736; GCN-HSA-NEXT: v_and_b32_e32 v6, 0xffff, v9 2737; GCN-HSA-NEXT: v_and_b32_e32 v4, 0xffff, v8 2738; GCN-HSA-NEXT: s_add_u32 s0, s0, 48 2739; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[4:7] 2740; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 2741; GCN-HSA-NEXT: v_lshrrev_b32_e32 v19, 16, v11 2742; GCN-HSA-NEXT: v_lshrrev_b32_e32 v17, 16, v10 2743; GCN-HSA-NEXT: v_and_b32_e32 v18, 0xffff, v11 2744; GCN-HSA-NEXT: v_and_b32_e32 v16, 0xffff, v10 2745; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 2746; GCN-HSA-NEXT: v_mov_b32_e32 v1, s5 2747; GCN-HSA-NEXT: flat_store_dwordx4 v[20:21], v[16:19] 2748; GCN-HSA-NEXT: s_waitcnt vmcnt(5) 2749; GCN-HSA-NEXT: v_lshrrev_b32_e32 v10, 16, v15 2750; GCN-HSA-NEXT: v_lshrrev_b32_e32 v18, 16, v13 2751; GCN-HSA-NEXT: v_lshrrev_b32_e32 v16, 16, v12 2752; GCN-HSA-NEXT: v_and_b32_e32 v9, 0xffff, v15 2753; GCN-HSA-NEXT: v_and_b32_e32 v17, 0xffff, v13 2754; GCN-HSA-NEXT: v_and_b32_e32 v15, 0xffff, v12 2755; GCN-HSA-NEXT: v_mov_b32_e32 v12, s1 2756; GCN-HSA-NEXT: v_lshrrev_b32_e32 v6, 16, v3 2757; GCN-HSA-NEXT: v_lshrrev_b32_e32 v4, 16, v2 2758; GCN-HSA-NEXT: v_and_b32_e32 v5, 0xffff, v3 2759; GCN-HSA-NEXT: v_and_b32_e32 v3, 0xffff, v2 2760; GCN-HSA-NEXT: v_lshrrev_b32_e32 v8, 16, v14 2761; GCN-HSA-NEXT: v_and_b32_e32 v7, 0xffff, v14 2762; GCN-HSA-NEXT: v_mov_b32_e32 v11, s0 2763; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[15:18] 2764; GCN-HSA-NEXT: flat_store_dwordx4 v[22:23], v[7:10] 2765; GCN-HSA-NEXT: flat_store_dwordx4 v[11:12], v[3:6] 2766; GCN-HSA-NEXT: s_endpgm 2767; 2768; GCN-NOHSA-VI-LABEL: global_zextload_v32i16_to_v32i32: 2769; GCN-NOHSA-VI: ; %bb.0: 2770; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 2771; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 2772; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 2773; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s2 2774; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s3 2775; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 2776; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s6 2777; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s7 2778; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 2779; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 2780; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[8:11], off, s[8:11], 0 offset:32 2781; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[12:15], off, s[8:11], 0 offset:48 2782; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 2783; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 2784; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(3) 2785; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v19, 16, v3 2786; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v18, 0xffff, v3 2787; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v17, 16, v2 2788; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 2789; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v31, 16, v15 2790; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v30, 0xffff, v15 2791; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v29, 16, v14 2792; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v28, 0xffff, v14 2793; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v15, 16, v13 2794; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v14, 0xffff, v13 2795; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v13, 16, v12 2796; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v12, 0xffff, v12 2797; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v16, 0xffff, v2 2798; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v3, 16, v1 2799; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v2, 0xffff, v1 2800; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v1, 16, v0 2801; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, 0xffff, v0 2802; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v23, 16, v7 2803; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v22, 0xffff, v7 2804; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v21, 16, v6 2805; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v20, 0xffff, v6 2806; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v7, 16, v5 2807; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v6, 0xffff, v5 2808; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v5, 16, v4 2809; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v4, 0xffff, v4 2810; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v27, 16, v11 2811; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v26, 0xffff, v11 2812; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v25, 16, v10 2813; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v24, 0xffff, v10 2814; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v11, 16, v9 2815; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v10, 0xffff, v9 2816; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v9, 16, v8 2817; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v8, 0xffff, v8 2818; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:96 2819; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:112 2820; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:64 2821; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:80 2822; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:32 2823; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[20:23], off, s[0:3], 0 offset:48 2824; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 2825; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:16 2826; GCN-NOHSA-VI-NEXT: s_endpgm 2827; 2828; EG-LABEL: global_zextload_v32i16_to_v32i32: 2829; EG: ; %bb.0: 2830; EG-NEXT: ALU 0, @20, KC0[CB0:0-32], KC1[] 2831; EG-NEXT: TEX 3 @12 2832; EG-NEXT: ALU 72, @21, KC0[CB0:0-32], KC1[] 2833; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T34.X, 0 2834; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T31.XYZW, T33.X, 0 2835; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T22.XYZW, T32.X, 0 2836; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T28.XYZW, T30.X, 0 2837; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T29.X, 0 2838; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T27.X, 0 2839; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T26.X, 0 2840; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T24.X, 1 2841; EG-NEXT: CF_END 2842; EG-NEXT: Fetch clause starting at 12: 2843; EG-NEXT: VTX_READ_128 T20.XYZW, T19.X, 0, #1 2844; EG-NEXT: VTX_READ_128 T21.XYZW, T19.X, 48, #1 2845; EG-NEXT: VTX_READ_128 T22.XYZW, T19.X, 32, #1 2846; EG-NEXT: VTX_READ_128 T19.XYZW, T19.X, 16, #1 2847; EG-NEXT: ALU clause starting at 20: 2848; EG-NEXT: MOV * T19.X, KC0[2].Z, 2849; EG-NEXT: ALU clause starting at 21: 2850; EG-NEXT: LSHR * T23.W, T20.W, literal.x, 2851; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2852; EG-NEXT: AND_INT * T23.Z, T20.W, literal.x, 2853; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2854; EG-NEXT: LSHR T23.Y, T20.Z, literal.x, 2855; EG-NEXT: LSHR * T20.W, T20.Y, literal.x, 2856; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2857; EG-NEXT: AND_INT T23.X, T20.Z, literal.x, 2858; EG-NEXT: AND_INT T20.Z, T20.Y, literal.x, 2859; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2860; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 2861; EG-NEXT: LSHR T24.X, PV.W, literal.x, 2862; EG-NEXT: LSHR T20.Y, T20.X, literal.y, 2863; EG-NEXT: LSHR T25.W, T19.W, literal.y, 2864; EG-NEXT: AND_INT * T20.X, T20.X, literal.z, 2865; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2866; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2867; EG-NEXT: AND_INT * T25.Z, T19.W, literal.x, 2868; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2869; EG-NEXT: LSHR T26.X, KC0[2].Y, literal.x, 2870; EG-NEXT: LSHR T25.Y, T19.Z, literal.y, 2871; EG-NEXT: LSHR T19.W, T19.Y, literal.y, 2872; EG-NEXT: AND_INT * T25.X, T19.Z, literal.z, 2873; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2874; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2875; EG-NEXT: AND_INT T19.Z, T19.Y, literal.x, 2876; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2877; EG-NEXT: 65535(9.183409e-41), 48(6.726233e-44) 2878; EG-NEXT: LSHR T27.X, PV.W, literal.x, 2879; EG-NEXT: LSHR T19.Y, T19.X, literal.y, 2880; EG-NEXT: LSHR T28.W, T22.W, literal.y, 2881; EG-NEXT: AND_INT * T19.X, T19.X, literal.z, 2882; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2883; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2884; EG-NEXT: AND_INT T28.Z, T22.W, literal.x, 2885; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2886; EG-NEXT: 65535(9.183409e-41), 32(4.484155e-44) 2887; EG-NEXT: LSHR T29.X, PV.W, literal.x, 2888; EG-NEXT: LSHR T28.Y, T22.Z, literal.y, 2889; EG-NEXT: LSHR T22.W, T22.Y, literal.y, 2890; EG-NEXT: AND_INT * T28.X, T22.Z, literal.z, 2891; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2892; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2893; EG-NEXT: AND_INT T22.Z, T22.Y, literal.x, 2894; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2895; EG-NEXT: 65535(9.183409e-41), 80(1.121039e-43) 2896; EG-NEXT: LSHR T30.X, PV.W, literal.x, 2897; EG-NEXT: LSHR T22.Y, T22.X, literal.y, 2898; EG-NEXT: LSHR T31.W, T21.W, literal.y, 2899; EG-NEXT: AND_INT * T22.X, T22.X, literal.z, 2900; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2901; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2902; EG-NEXT: AND_INT T31.Z, T21.W, literal.x, 2903; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2904; EG-NEXT: 65535(9.183409e-41), 64(8.968310e-44) 2905; EG-NEXT: LSHR T32.X, PV.W, literal.x, 2906; EG-NEXT: LSHR T31.Y, T21.Z, literal.y, 2907; EG-NEXT: LSHR T21.W, T21.Y, literal.y, 2908; EG-NEXT: AND_INT * T31.X, T21.Z, literal.z, 2909; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2910; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2911; EG-NEXT: AND_INT T21.Z, T21.Y, literal.x, 2912; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2913; EG-NEXT: 65535(9.183409e-41), 112(1.569454e-43) 2914; EG-NEXT: LSHR T33.X, PV.W, literal.x, 2915; EG-NEXT: LSHR T21.Y, T21.X, literal.y, 2916; EG-NEXT: AND_INT * T21.X, T21.X, literal.z, 2917; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2918; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2919; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 2920; EG-NEXT: 96(1.345247e-43), 0(0.000000e+00) 2921; EG-NEXT: LSHR * T34.X, PV.W, literal.x, 2922; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 2923; 2924; CM-LABEL: global_zextload_v32i16_to_v32i32: 2925; CM: ; %bb.0: 2926; CM-NEXT: ALU 0, @20, KC0[CB0:0-32], KC1[] 2927; CM-NEXT: TEX 3 @12 2928; CM-NEXT: ALU 65, @21, KC0[CB0:0-32], KC1[] 2929; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T33, T34.X 2930; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T31, T21.X 2931; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T30, T32.X 2932; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T28, T22.X 2933; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T27, T29.X 2934; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T25, T19.X 2935; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T24, T26.X 2936; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T23, T20.X 2937; CM-NEXT: CF_END 2938; CM-NEXT: Fetch clause starting at 12: 2939; CM-NEXT: VTX_READ_128 T20.XYZW, T19.X, 48, #1 2940; CM-NEXT: VTX_READ_128 T21.XYZW, T19.X, 0, #1 2941; CM-NEXT: VTX_READ_128 T22.XYZW, T19.X, 16, #1 2942; CM-NEXT: VTX_READ_128 T19.XYZW, T19.X, 32, #1 2943; CM-NEXT: ALU clause starting at 20: 2944; CM-NEXT: MOV * T19.X, KC0[2].Z, 2945; CM-NEXT: ALU clause starting at 21: 2946; CM-NEXT: LSHR * T23.W, T20.Y, literal.x, 2947; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2948; CM-NEXT: AND_INT * T23.Z, T20.Y, literal.x, 2949; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2950; CM-NEXT: LSHR T23.Y, T20.X, literal.x, 2951; CM-NEXT: LSHR * T24.W, T20.W, literal.x, 2952; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2953; CM-NEXT: AND_INT T23.X, T20.X, literal.x, 2954; CM-NEXT: AND_INT T24.Z, T20.W, literal.x, 2955; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2956; CM-NEXT: 65535(9.183409e-41), 96(1.345247e-43) 2957; CM-NEXT: LSHR T20.X, PV.W, literal.x, 2958; CM-NEXT: LSHR T24.Y, T20.Z, literal.y, 2959; CM-NEXT: LSHR * T25.W, T19.Y, literal.y, 2960; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2961; CM-NEXT: AND_INT T24.X, T20.Z, literal.x, 2962; CM-NEXT: AND_INT T25.Z, T19.Y, literal.x, 2963; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2964; CM-NEXT: 65535(9.183409e-41), 112(1.569454e-43) 2965; CM-NEXT: LSHR T26.X, PV.W, literal.x, 2966; CM-NEXT: LSHR T25.Y, T19.X, literal.y, 2967; CM-NEXT: LSHR * T27.W, T19.W, literal.y, 2968; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2969; CM-NEXT: AND_INT T25.X, T19.X, literal.x, 2970; CM-NEXT: AND_INT T27.Z, T19.W, literal.x, 2971; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2972; CM-NEXT: 65535(9.183409e-41), 64(8.968310e-44) 2973; CM-NEXT: LSHR T19.X, PV.W, literal.x, 2974; CM-NEXT: LSHR T27.Y, T19.Z, literal.y, 2975; CM-NEXT: LSHR * T28.W, T22.Y, literal.y, 2976; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2977; CM-NEXT: AND_INT T27.X, T19.Z, literal.x, 2978; CM-NEXT: AND_INT T28.Z, T22.Y, literal.x, 2979; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2980; CM-NEXT: 65535(9.183409e-41), 80(1.121039e-43) 2981; CM-NEXT: LSHR T29.X, PV.W, literal.x, 2982; CM-NEXT: LSHR T28.Y, T22.X, literal.y, 2983; CM-NEXT: LSHR * T30.W, T22.W, literal.y, 2984; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2985; CM-NEXT: AND_INT T28.X, T22.X, literal.x, 2986; CM-NEXT: AND_INT T30.Z, T22.W, literal.x, 2987; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2988; CM-NEXT: 65535(9.183409e-41), 32(4.484155e-44) 2989; CM-NEXT: LSHR T22.X, PV.W, literal.x, 2990; CM-NEXT: LSHR T30.Y, T22.Z, literal.y, 2991; CM-NEXT: LSHR * T31.W, T21.Y, literal.y, 2992; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2993; CM-NEXT: AND_INT T30.X, T22.Z, literal.x, 2994; CM-NEXT: AND_INT T31.Z, T21.Y, literal.x, 2995; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2996; CM-NEXT: 65535(9.183409e-41), 48(6.726233e-44) 2997; CM-NEXT: LSHR T32.X, PV.W, literal.x, 2998; CM-NEXT: LSHR T31.Y, T21.X, literal.y, 2999; CM-NEXT: LSHR * T33.W, T21.W, literal.y, 3000; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3001; CM-NEXT: AND_INT T31.X, T21.X, literal.x, 3002; CM-NEXT: AND_INT * T33.Z, T21.W, literal.x, 3003; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3004; CM-NEXT: LSHR T21.X, KC0[2].Y, literal.x, 3005; CM-NEXT: LSHR * T33.Y, T21.Z, literal.y, 3006; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3007; CM-NEXT: AND_INT T33.X, T21.Z, literal.x, 3008; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3009; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 3010; CM-NEXT: LSHR * T34.X, PV.W, literal.x, 3011; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 3012 %load = load <32 x i16>, <32 x i16> addrspace(1)* %in 3013 %ext = zext <32 x i16> %load to <32 x i32> 3014 store <32 x i32> %ext, <32 x i32> addrspace(1)* %out 3015 ret void 3016} 3017 3018define amdgpu_kernel void @global_sextload_v32i16_to_v32i32(<32 x i32> addrspace(1)* %out, <32 x i16> addrspace(1)* %in) #0 { 3019; GCN-NOHSA-SI-LABEL: global_sextload_v32i16_to_v32i32: 3020; GCN-NOHSA-SI: ; %bb.0: 3021; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 3022; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 3023; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 3024; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s2 3025; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s3 3026; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 3027; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s6 3028; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s7 3029; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 3030; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 3031; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[8:11], off, s[8:11], 0 offset:32 3032; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[12:15], off, s[8:11], 0 offset:48 3033; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(3) 3034; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v19, 16, v3 3035; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v17, 16, v2 3036; GCN-NOHSA-SI-NEXT: v_bfe_i32 v18, v3, 0, 16 3037; GCN-NOHSA-SI-NEXT: v_bfe_i32 v16, v2, 0, 16 3038; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v23, 16, v1 3039; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v21, 16, v0 3040; GCN-NOHSA-SI-NEXT: v_bfe_i32 v22, v1, 0, 16 3041; GCN-NOHSA-SI-NEXT: v_bfe_i32 v20, v0, 0, 16 3042; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(2) 3043; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v3, 16, v7 3044; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 16, v6 3045; GCN-NOHSA-SI-NEXT: v_bfe_i32 v2, v7, 0, 16 3046; GCN-NOHSA-SI-NEXT: v_bfe_i32 v0, v6, 0, 16 3047; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v27, 16, v5 3048; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v25, 16, v4 3049; GCN-NOHSA-SI-NEXT: v_bfe_i32 v26, v5, 0, 16 3050; GCN-NOHSA-SI-NEXT: v_bfe_i32 v24, v4, 0, 16 3051; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(1) 3052; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v7, 16, v11 3053; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v5, 16, v10 3054; GCN-NOHSA-SI-NEXT: v_bfe_i32 v6, v11, 0, 16 3055; GCN-NOHSA-SI-NEXT: v_bfe_i32 v4, v10, 0, 16 3056; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v31, 16, v9 3057; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v29, 16, v8 3058; GCN-NOHSA-SI-NEXT: v_bfe_i32 v30, v9, 0, 16 3059; GCN-NOHSA-SI-NEXT: v_bfe_i32 v28, v8, 0, 16 3060; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 3061; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v11, 16, v15 3062; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v9, 16, v14 3063; GCN-NOHSA-SI-NEXT: v_bfe_i32 v10, v15, 0, 16 3064; GCN-NOHSA-SI-NEXT: v_bfe_i32 v8, v14, 0, 16 3065; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v35, 16, v13 3066; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v33, 16, v12 3067; GCN-NOHSA-SI-NEXT: v_bfe_i32 v34, v13, 0, 16 3068; GCN-NOHSA-SI-NEXT: v_bfe_i32 v32, v12, 0, 16 3069; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 3070; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 3071; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[32:35], off, s[0:3], 0 offset:96 3072; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:112 3073; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:64 3074; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:80 3075; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:32 3076; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 3077; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[20:23], off, s[0:3], 0 3078; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:16 3079; GCN-NOHSA-SI-NEXT: s_endpgm 3080; 3081; GCN-HSA-LABEL: global_sextload_v32i16_to_v32i32: 3082; GCN-HSA: ; %bb.0: 3083; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 3084; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 3085; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 3086; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 3087; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 3088; GCN-HSA-NEXT: s_add_u32 s4, s2, 48 3089; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 3090; GCN-HSA-NEXT: v_mov_b32_e32 v4, s4 3091; GCN-HSA-NEXT: v_mov_b32_e32 v5, s5 3092; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5] 3093; GCN-HSA-NEXT: s_add_u32 s4, s2, 32 3094; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 3095; GCN-HSA-NEXT: s_add_u32 s2, s2, 16 3096; GCN-HSA-NEXT: v_mov_b32_e32 v9, s5 3097; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0 3098; GCN-HSA-NEXT: v_mov_b32_e32 v8, s4 3099; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 3100; GCN-HSA-NEXT: flat_load_dwordx4 v[8:11], v[8:9] 3101; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 3102; GCN-HSA-NEXT: flat_load_dwordx4 v[12:15], v[12:13] 3103; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 3104; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3105; GCN-HSA-NEXT: s_waitcnt vmcnt(3) 3106; GCN-HSA-NEXT: v_ashrrev_i32_e32 v19, 16, v1 3107; GCN-HSA-NEXT: v_ashrrev_i32_e32 v17, 16, v0 3108; GCN-HSA-NEXT: v_bfe_i32 v18, v1, 0, 16 3109; GCN-HSA-NEXT: v_bfe_i32 v16, v0, 0, 16 3110; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 3111; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 3112; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[16:19] 3113; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 3114; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 3115; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x60 3116; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3117; GCN-HSA-NEXT: v_mov_b32_e32 v21, s3 3118; GCN-HSA-NEXT: v_mov_b32_e32 v20, s2 3119; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x70 3120; GCN-HSA-NEXT: v_ashrrev_i32_e32 v19, 16, v3 3121; GCN-HSA-NEXT: v_ashrrev_i32_e32 v17, 16, v2 3122; GCN-HSA-NEXT: v_bfe_i32 v18, v3, 0, 16 3123; GCN-HSA-NEXT: v_bfe_i32 v16, v2, 0, 16 3124; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3125; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[16:19] 3126; GCN-HSA-NEXT: s_waitcnt vmcnt(4) 3127; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 16, v5 3128; GCN-HSA-NEXT: v_mov_b32_e32 v17, s3 3129; GCN-HSA-NEXT: v_mov_b32_e32 v16, s2 3130; GCN-HSA-NEXT: s_add_u32 s2, s0, 64 3131; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3132; GCN-HSA-NEXT: v_mov_b32_e32 v19, s3 3133; GCN-HSA-NEXT: v_mov_b32_e32 v18, s2 3134; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x50 3135; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 16, v4 3136; GCN-HSA-NEXT: v_bfe_i32 v2, v5, 0, 16 3137; GCN-HSA-NEXT: v_bfe_i32 v0, v4, 0, 16 3138; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3139; GCN-HSA-NEXT: flat_store_dwordx4 v[20:21], v[0:3] 3140; GCN-HSA-NEXT: v_mov_b32_e32 v21, s3 3141; GCN-HSA-NEXT: v_mov_b32_e32 v20, s2 3142; GCN-HSA-NEXT: s_add_u32 s2, s0, 32 3143; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3144; GCN-HSA-NEXT: s_add_u32 s0, s0, 48 3145; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 16, v7 3146; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 16, v6 3147; GCN-HSA-NEXT: v_bfe_i32 v2, v7, 0, 16 3148; GCN-HSA-NEXT: v_bfe_i32 v0, v6, 0, 16 3149; GCN-HSA-NEXT: s_waitcnt vmcnt(4) 3150; GCN-HSA-NEXT: v_ashrrev_i32_e32 v7, 16, v9 3151; GCN-HSA-NEXT: v_ashrrev_i32_e32 v5, 16, v8 3152; GCN-HSA-NEXT: v_bfe_i32 v6, v9, 0, 16 3153; GCN-HSA-NEXT: v_bfe_i32 v4, v8, 0, 16 3154; GCN-HSA-NEXT: v_mov_b32_e32 v9, s3 3155; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 3156; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[0:3] 3157; GCN-HSA-NEXT: v_mov_b32_e32 v8, s2 3158; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 16, v11 3159; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 16, v10 3160; GCN-HSA-NEXT: v_bfe_i32 v2, v11, 0, 16 3161; GCN-HSA-NEXT: v_bfe_i32 v0, v10, 0, 16 3162; GCN-HSA-NEXT: v_mov_b32_e32 v11, s1 3163; GCN-HSA-NEXT: flat_store_dwordx4 v[18:19], v[4:7] 3164; GCN-HSA-NEXT: flat_store_dwordx4 v[20:21], v[0:3] 3165; GCN-HSA-NEXT: s_waitcnt vmcnt(6) 3166; GCN-HSA-NEXT: v_ashrrev_i32_e32 v7, 16, v13 3167; GCN-HSA-NEXT: v_ashrrev_i32_e32 v5, 16, v12 3168; GCN-HSA-NEXT: v_bfe_i32 v6, v13, 0, 16 3169; GCN-HSA-NEXT: v_bfe_i32 v4, v12, 0, 16 3170; GCN-HSA-NEXT: v_mov_b32_e32 v10, s0 3171; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 16, v15 3172; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 16, v14 3173; GCN-HSA-NEXT: v_bfe_i32 v2, v15, 0, 16 3174; GCN-HSA-NEXT: v_bfe_i32 v0, v14, 0, 16 3175; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[4:7] 3176; GCN-HSA-NEXT: flat_store_dwordx4 v[10:11], v[0:3] 3177; GCN-HSA-NEXT: s_endpgm 3178; 3179; GCN-NOHSA-VI-LABEL: global_sextload_v32i16_to_v32i32: 3180; GCN-NOHSA-VI: ; %bb.0: 3181; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 3182; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 3183; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 3184; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s2 3185; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s3 3186; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 3187; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s6 3188; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s7 3189; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 3190; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 3191; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[8:11], off, s[8:11], 0 offset:32 3192; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[12:15], off, s[8:11], 0 offset:48 3193; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 3194; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 3195; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(3) 3196; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v19, 16, v3 3197; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v17, 16, v2 3198; GCN-NOHSA-VI-NEXT: v_bfe_i32 v18, v3, 0, 16 3199; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 3200; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v35, 16, v13 3201; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v33, 16, v12 3202; GCN-NOHSA-VI-NEXT: v_bfe_i32 v34, v13, 0, 16 3203; GCN-NOHSA-VI-NEXT: v_bfe_i32 v32, v12, 0, 16 3204; GCN-NOHSA-VI-NEXT: v_bfe_i32 v16, v2, 0, 16 3205; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v23, 16, v1 3206; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v21, 16, v0 3207; GCN-NOHSA-VI-NEXT: v_bfe_i32 v22, v1, 0, 16 3208; GCN-NOHSA-VI-NEXT: v_bfe_i32 v20, v0, 0, 16 3209; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v3, 16, v7 3210; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 16, v6 3211; GCN-NOHSA-VI-NEXT: v_bfe_i32 v2, v7, 0, 16 3212; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v6, 0, 16 3213; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v27, 16, v5 3214; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v25, 16, v4 3215; GCN-NOHSA-VI-NEXT: v_bfe_i32 v26, v5, 0, 16 3216; GCN-NOHSA-VI-NEXT: v_bfe_i32 v24, v4, 0, 16 3217; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v7, 16, v11 3218; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v5, 16, v10 3219; GCN-NOHSA-VI-NEXT: v_bfe_i32 v6, v11, 0, 16 3220; GCN-NOHSA-VI-NEXT: v_bfe_i32 v4, v10, 0, 16 3221; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v31, 16, v9 3222; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v29, 16, v8 3223; GCN-NOHSA-VI-NEXT: v_bfe_i32 v30, v9, 0, 16 3224; GCN-NOHSA-VI-NEXT: v_bfe_i32 v28, v8, 0, 16 3225; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v11, 16, v15 3226; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v9, 16, v14 3227; GCN-NOHSA-VI-NEXT: v_bfe_i32 v10, v15, 0, 16 3228; GCN-NOHSA-VI-NEXT: v_bfe_i32 v8, v14, 0, 16 3229; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[32:35], off, s[0:3], 0 offset:96 3230; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:112 3231; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:64 3232; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:80 3233; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:32 3234; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 3235; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[20:23], off, s[0:3], 0 3236; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:16 3237; GCN-NOHSA-VI-NEXT: s_endpgm 3238; 3239; EG-LABEL: global_sextload_v32i16_to_v32i32: 3240; EG: ; %bb.0: 3241; EG-NEXT: ALU 9, @20, KC0[CB0:0-32], KC1[] 3242; EG-NEXT: TEX 3 @12 3243; EG-NEXT: ALU 73, @30, KC0[CB0:0-32], KC1[] 3244; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T22.X, 0 3245; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T33.XYZW, T34.X, 0 3246; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T28.X, 0 3247; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T32.XYZW, T27.X, 0 3248; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T26.X, 0 3249; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T31.XYZW, T21.X, 0 3250; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T30.XYZW, T20.X, 0 3251; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T29.XYZW, T19.X, 1 3252; EG-NEXT: CF_END 3253; EG-NEXT: Fetch clause starting at 12: 3254; EG-NEXT: VTX_READ_128 T23.XYZW, T22.X, 16, #1 3255; EG-NEXT: VTX_READ_128 T24.XYZW, T22.X, 32, #1 3256; EG-NEXT: VTX_READ_128 T25.XYZW, T22.X, 0, #1 3257; EG-NEXT: VTX_READ_128 T22.XYZW, T22.X, 48, #1 3258; EG-NEXT: ALU clause starting at 20: 3259; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 3260; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3261; EG-NEXT: LSHR T19.X, PV.W, literal.x, 3262; EG-NEXT: LSHR * T20.X, KC0[2].Y, literal.x, 3263; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 3264; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 3265; EG-NEXT: 48(6.726233e-44), 0(0.000000e+00) 3266; EG-NEXT: LSHR T21.X, PV.W, literal.x, 3267; EG-NEXT: MOV * T22.X, KC0[2].Z, 3268; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 3269; EG-NEXT: ALU clause starting at 30: 3270; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 3271; EG-NEXT: 32(4.484155e-44), 0(0.000000e+00) 3272; EG-NEXT: LSHR T26.X, PV.W, literal.x, 3273; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3274; EG-NEXT: 2(2.802597e-45), 80(1.121039e-43) 3275; EG-NEXT: LSHR T27.X, PV.W, literal.x, 3276; EG-NEXT: LSHR T0.W, T22.Y, literal.y, 3277; EG-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 3278; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3279; EG-NEXT: 64(8.968310e-44), 0(0.000000e+00) 3280; EG-NEXT: LSHR T28.X, PS, literal.x, 3281; EG-NEXT: LSHR T0.Y, T22.W, literal.y, 3282; EG-NEXT: BFE_INT T29.Z, T25.W, 0.0, literal.y, BS:VEC_120/SCL_212 3283; EG-NEXT: LSHR T1.W, T24.Y, literal.y, 3284; EG-NEXT: LSHR * T2.W, T24.W, literal.y, 3285; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3286; EG-NEXT: BFE_INT T29.X, T25.Z, 0.0, literal.x, 3287; EG-NEXT: LSHR T1.Y, T23.Y, literal.x, 3288; EG-NEXT: BFE_INT T30.Z, T25.Y, 0.0, literal.x, BS:VEC_120/SCL_212 3289; EG-NEXT: LSHR T3.W, T23.W, literal.x, 3290; EG-NEXT: LSHR * T4.W, T25.W, literal.x, 3291; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3292; EG-NEXT: BFE_INT T30.X, T25.X, 0.0, literal.x, 3293; EG-NEXT: LSHR T2.Y, T25.Y, literal.x, 3294; EG-NEXT: BFE_INT T31.Z, T23.W, 0.0, literal.x, 3295; EG-NEXT: BFE_INT T29.W, PS, 0.0, literal.x, 3296; EG-NEXT: LSHR * T4.W, T25.Z, literal.x, 3297; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3298; EG-NEXT: BFE_INT T31.X, T23.Z, 0.0, literal.x, 3299; EG-NEXT: BFE_INT T29.Y, PS, 0.0, literal.x, 3300; EG-NEXT: BFE_INT T25.Z, T23.Y, 0.0, literal.x, 3301; EG-NEXT: BFE_INT T30.W, PV.Y, 0.0, literal.x, 3302; EG-NEXT: LSHR * T4.W, T25.X, literal.x, 3303; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3304; EG-NEXT: BFE_INT T25.X, T23.X, 0.0, literal.x, 3305; EG-NEXT: BFE_INT T30.Y, PS, 0.0, literal.x, 3306; EG-NEXT: BFE_INT T32.Z, T24.W, 0.0, literal.x, 3307; EG-NEXT: BFE_INT T31.W, T3.W, 0.0, literal.x, BS:VEC_120/SCL_212 3308; EG-NEXT: LSHR * T3.W, T23.Z, literal.x, 3309; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3310; EG-NEXT: BFE_INT T32.X, T24.Z, 0.0, literal.x, 3311; EG-NEXT: BFE_INT T31.Y, PS, 0.0, literal.x, 3312; EG-NEXT: BFE_INT T23.Z, T24.Y, 0.0, literal.x, 3313; EG-NEXT: BFE_INT T25.W, T1.Y, 0.0, literal.x, BS:VEC_120/SCL_212 3314; EG-NEXT: LSHR * T3.W, T23.X, literal.x, 3315; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3316; EG-NEXT: BFE_INT T23.X, T24.X, 0.0, literal.x, 3317; EG-NEXT: BFE_INT T25.Y, PS, 0.0, literal.x, 3318; EG-NEXT: BFE_INT T33.Z, T22.W, 0.0, literal.x, 3319; EG-NEXT: BFE_INT T32.W, T2.W, 0.0, literal.x, BS:VEC_120/SCL_212 3320; EG-NEXT: LSHR * T2.W, T24.Z, literal.x, 3321; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3322; EG-NEXT: BFE_INT T33.X, T22.Z, 0.0, literal.x, 3323; EG-NEXT: BFE_INT T32.Y, PS, 0.0, literal.x, 3324; EG-NEXT: BFE_INT T24.Z, T22.Y, 0.0, literal.x, 3325; EG-NEXT: BFE_INT T23.W, T1.W, 0.0, literal.x, 3326; EG-NEXT: LSHR * T1.W, T24.X, literal.x, 3327; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3328; EG-NEXT: BFE_INT T24.X, T22.X, 0.0, literal.x, 3329; EG-NEXT: BFE_INT T23.Y, PS, 0.0, literal.x, 3330; EG-NEXT: LSHR T0.Z, T22.Z, literal.x, 3331; EG-NEXT: BFE_INT T33.W, T0.Y, 0.0, literal.x, 3332; EG-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.y, 3333; EG-NEXT: 16(2.242078e-44), 112(1.569454e-43) 3334; EG-NEXT: LSHR T34.X, PS, literal.x, 3335; EG-NEXT: BFE_INT T33.Y, PV.Z, 0.0, literal.y, 3336; EG-NEXT: LSHR T0.Z, T22.X, literal.y, 3337; EG-NEXT: BFE_INT T24.W, T0.W, 0.0, literal.y, 3338; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 3339; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3340; EG-NEXT: 96(1.345247e-43), 0(0.000000e+00) 3341; EG-NEXT: LSHR T22.X, PS, literal.x, 3342; EG-NEXT: BFE_INT * T24.Y, PV.Z, 0.0, literal.y, 3343; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3344; 3345; CM-LABEL: global_sextload_v32i16_to_v32i32: 3346; CM: ; %bb.0: 3347; CM-NEXT: ALU 0, @22, KC0[CB0:0-32], KC1[] 3348; CM-NEXT: TEX 0 @14 3349; CM-NEXT: ALU 7, @23, KC0[CB0:0-32], KC1[] 3350; CM-NEXT: TEX 2 @16 3351; CM-NEXT: ALU 76, @31, KC0[CB0:0-32], KC1[] 3352; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T33, T34.X 3353; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T19, T20.X 3354; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T32, T28.X 3355; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T23, T27.X 3356; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T31, T26.X 3357; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T22, T25.X 3358; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T30, T24.X 3359; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T29, T21.X 3360; CM-NEXT: CF_END 3361; CM-NEXT: Fetch clause starting at 14: 3362; CM-NEXT: VTX_READ_128 T20.XYZW, T19.X, 0, #1 3363; CM-NEXT: Fetch clause starting at 16: 3364; CM-NEXT: VTX_READ_128 T22.XYZW, T19.X, 48, #1 3365; CM-NEXT: VTX_READ_128 T23.XYZW, T19.X, 32, #1 3366; CM-NEXT: VTX_READ_128 T19.XYZW, T19.X, 16, #1 3367; CM-NEXT: ALU clause starting at 22: 3368; CM-NEXT: MOV * T19.X, KC0[2].Z, 3369; CM-NEXT: ALU clause starting at 23: 3370; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 3371; CM-NEXT: 96(1.345247e-43), 0(0.000000e+00) 3372; CM-NEXT: LSHR T21.X, PV.W, literal.x, 3373; CM-NEXT: LSHR T0.Y, T20.Z, literal.y, 3374; CM-NEXT: LSHR T0.Z, T20.W, literal.y, 3375; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 3376; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3377; CM-NEXT: 112(1.569454e-43), 0(0.000000e+00) 3378; CM-NEXT: ALU clause starting at 31: 3379; CM-NEXT: LSHR T24.X, T0.W, literal.x, 3380; CM-NEXT: LSHR T1.Y, T20.Y, literal.y, 3381; CM-NEXT: LSHR T1.Z, T19.Z, literal.y, 3382; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 3383; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3384; CM-NEXT: 64(8.968310e-44), 0(0.000000e+00) 3385; CM-NEXT: LSHR T25.X, PV.W, literal.x, 3386; CM-NEXT: LSHR T2.Y, T19.W, literal.y, 3387; CM-NEXT: LSHR T2.Z, T19.X, literal.y, 3388; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 3389; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3390; CM-NEXT: 80(1.121039e-43), 0(0.000000e+00) 3391; CM-NEXT: LSHR T26.X, PV.W, literal.x, 3392; CM-NEXT: LSHR T3.Y, T19.Y, literal.y, 3393; CM-NEXT: LSHR T3.Z, T23.Z, literal.y, 3394; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 3395; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3396; CM-NEXT: 32(4.484155e-44), 0(0.000000e+00) 3397; CM-NEXT: LSHR T27.X, PV.W, literal.x, 3398; CM-NEXT: LSHR T4.Y, T23.W, literal.y, 3399; CM-NEXT: LSHR T4.Z, T23.X, literal.y, 3400; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 3401; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3402; CM-NEXT: 48(6.726233e-44), 0(0.000000e+00) 3403; CM-NEXT: LSHR T28.X, PV.W, literal.x, 3404; CM-NEXT: LSHR T5.Y, T23.Y, literal.y, 3405; CM-NEXT: BFE_INT T29.Z, T22.Y, 0.0, literal.y, BS:VEC_120/SCL_212 3406; CM-NEXT: LSHR * T0.W, T22.Z, literal.y, 3407; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3408; CM-NEXT: BFE_INT T29.X, T22.X, 0.0, literal.x, 3409; CM-NEXT: LSHR T6.Y, T22.W, literal.x, 3410; CM-NEXT: BFE_INT T30.Z, T22.W, 0.0, literal.x, 3411; CM-NEXT: LSHR * T1.W, T22.Y, literal.x, 3412; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3413; CM-NEXT: BFE_INT T30.X, T22.Z, 0.0, literal.x, 3414; CM-NEXT: LSHR T7.Y, T22.X, literal.x, 3415; CM-NEXT: BFE_INT T22.Z, T23.Y, 0.0, literal.x, 3416; CM-NEXT: BFE_INT * T29.W, PV.W, 0.0, literal.x, 3417; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3418; CM-NEXT: BFE_INT T22.X, T23.X, 0.0, literal.x, 3419; CM-NEXT: BFE_INT T29.Y, PV.Y, 0.0, literal.x, 3420; CM-NEXT: BFE_INT T31.Z, T23.W, 0.0, literal.x, 3421; CM-NEXT: BFE_INT * T30.W, T6.Y, 0.0, literal.x, 3422; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3423; CM-NEXT: BFE_INT T31.X, T23.Z, 0.0, literal.x, 3424; CM-NEXT: BFE_INT T30.Y, T0.W, 0.0, literal.x, 3425; CM-NEXT: BFE_INT T23.Z, T19.Y, 0.0, literal.x, 3426; CM-NEXT: BFE_INT * T22.W, T5.Y, 0.0, literal.x, BS:VEC_120/SCL_212 3427; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3428; CM-NEXT: BFE_INT T23.X, T19.X, 0.0, literal.x, 3429; CM-NEXT: BFE_INT T22.Y, T4.Z, 0.0, literal.x, 3430; CM-NEXT: BFE_INT T32.Z, T19.W, 0.0, literal.x, 3431; CM-NEXT: BFE_INT * T31.W, T4.Y, 0.0, literal.x, 3432; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3433; CM-NEXT: BFE_INT T32.X, T19.Z, 0.0, literal.x, 3434; CM-NEXT: BFE_INT T31.Y, T3.Z, 0.0, literal.x, BS:VEC_120/SCL_212 3435; CM-NEXT: BFE_INT T19.Z, T20.Y, 0.0, literal.x, 3436; CM-NEXT: BFE_INT * T23.W, T3.Y, 0.0, literal.x, BS:VEC_120/SCL_212 3437; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3438; CM-NEXT: BFE_INT T19.X, T20.X, 0.0, literal.x, 3439; CM-NEXT: BFE_INT T23.Y, T2.Z, 0.0, literal.x, 3440; CM-NEXT: BFE_INT T33.Z, T20.W, 0.0, literal.x, 3441; CM-NEXT: BFE_INT * T32.W, T2.Y, 0.0, literal.x, 3442; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3443; CM-NEXT: BFE_INT T33.X, T20.Z, 0.0, literal.x, 3444; CM-NEXT: BFE_INT T32.Y, T1.Z, 0.0, literal.x, BS:VEC_120/SCL_212 3445; CM-NEXT: LSHR T1.Z, T20.X, literal.x, 3446; CM-NEXT: BFE_INT * T19.W, T1.Y, 0.0, literal.x, 3447; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3448; CM-NEXT: LSHR T20.X, KC0[2].Y, literal.x, 3449; CM-NEXT: BFE_INT T19.Y, PV.Z, 0.0, literal.y, 3450; CM-NEXT: ADD_INT T1.Z, KC0[2].Y, literal.y, 3451; CM-NEXT: BFE_INT * T33.W, T0.Z, 0.0, literal.y, 3452; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3453; CM-NEXT: LSHR T34.X, PV.Z, literal.x, 3454; CM-NEXT: BFE_INT * T33.Y, T0.Y, 0.0, literal.y, 3455; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3456 %load = load <32 x i16>, <32 x i16> addrspace(1)* %in 3457 %ext = sext <32 x i16> %load to <32 x i32> 3458 store <32 x i32> %ext, <32 x i32> addrspace(1)* %out 3459 ret void 3460} 3461 3462define amdgpu_kernel void @global_zextload_v64i16_to_v64i32(<64 x i32> addrspace(1)* %out, <64 x i16> addrspace(1)* %in) #0 { 3463; GCN-NOHSA-SI-LABEL: global_zextload_v64i16_to_v64i32: 3464; GCN-NOHSA-SI: ; %bb.0: 3465; GCN-NOHSA-SI-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD0 3466; GCN-NOHSA-SI-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD1 3467; GCN-NOHSA-SI-NEXT: s_mov_b32 s14, -1 3468; GCN-NOHSA-SI-NEXT: s_mov_b32 s15, 0xe8f000 3469; GCN-NOHSA-SI-NEXT: s_add_u32 s12, s12, s3 3470; GCN-NOHSA-SI-NEXT: s_addc_u32 s13, s13, 0 3471; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 3472; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 3473; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 3474; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s2 3475; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s3 3476; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 3477; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s6 3478; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s7 3479; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[12:15], off, s[8:11], 0 3480; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[16:19], off, s[8:11], 0 offset:16 3481; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(1) 3482; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v3, 16, v15 3483; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v1, 16, v14 3484; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v6, 16, v13 3485; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v4, 16, v12 3486; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 3487; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v9, 16, v19 3488; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v7, 16, v18 3489; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v2, 0xffff, v15 3490; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v0, 0xffff, v14 3491; GCN-NOHSA-SI-NEXT: buffer_store_dword v0, off, s[12:15], 0 offset:4 ; 4-byte Folded Spill 3492; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 3493; GCN-NOHSA-SI-NEXT: buffer_store_dword v1, off, s[12:15], 0 offset:8 ; 4-byte Folded Spill 3494; GCN-NOHSA-SI-NEXT: buffer_store_dword v2, off, s[12:15], 0 offset:12 ; 4-byte Folded Spill 3495; GCN-NOHSA-SI-NEXT: buffer_store_dword v3, off, s[12:15], 0 offset:16 ; 4-byte Folded Spill 3496; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v5, 0xffff, v13 3497; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3498; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v3, 0xffff, v12 3499; GCN-NOHSA-SI-NEXT: buffer_store_dword v3, off, s[12:15], 0 offset:20 ; 4-byte Folded Spill 3500; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 3501; GCN-NOHSA-SI-NEXT: buffer_store_dword v4, off, s[12:15], 0 offset:24 ; 4-byte Folded Spill 3502; GCN-NOHSA-SI-NEXT: buffer_store_dword v5, off, s[12:15], 0 offset:28 ; 4-byte Folded Spill 3503; GCN-NOHSA-SI-NEXT: buffer_store_dword v6, off, s[12:15], 0 offset:32 ; 4-byte Folded Spill 3504; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v15, 16, v17 3505; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v13, 16, v16 3506; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v8, 0xffff, v19 3507; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3508; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v6, 0xffff, v18 3509; GCN-NOHSA-SI-NEXT: buffer_store_dword v6, off, s[12:15], 0 offset:36 ; 4-byte Folded Spill 3510; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 3511; GCN-NOHSA-SI-NEXT: buffer_store_dword v7, off, s[12:15], 0 offset:40 ; 4-byte Folded Spill 3512; GCN-NOHSA-SI-NEXT: buffer_store_dword v8, off, s[12:15], 0 offset:44 ; 4-byte Folded Spill 3513; GCN-NOHSA-SI-NEXT: buffer_store_dword v9, off, s[12:15], 0 offset:48 ; 4-byte Folded Spill 3514; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[24:27], off, s[8:11], 0 offset:32 3515; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v14, 0xffff, v17 3516; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v12, 0xffff, v16 3517; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[28:31], off, s[8:11], 0 offset:48 3518; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(1) 3519; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v19, 16, v27 3520; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v17, 16, v26 3521; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v23, 16, v25 3522; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v21, 16, v24 3523; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v18, 0xffff, v27 3524; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v16, 0xffff, v26 3525; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v22, 0xffff, v25 3526; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v20, 0xffff, v24 3527; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 3528; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v27, 16, v31 3529; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v25, 16, v30 3530; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v34, 16, v29 3531; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v32, 16, v28 3532; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v26, 0xffff, v31 3533; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v24, 0xffff, v30 3534; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[35:38], off, s[8:11], 0 offset:64 3535; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v33, 0xffff, v29 3536; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v31, 0xffff, v28 3537; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[39:42], off, s[8:11], 0 offset:80 3538; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(1) 3539; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v46, 16, v38 3540; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v44, 16, v37 3541; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v50, 16, v36 3542; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v48, 16, v35 3543; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v45, 0xffff, v38 3544; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v43, 0xffff, v37 3545; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v49, 0xffff, v36 3546; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v47, 0xffff, v35 3547; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 3548; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v38, 16, v42 3549; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v36, 16, v41 3550; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v54, 16, v40 3551; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v52, 16, v39 3552; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v37, 0xffff, v42 3553; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v35, 0xffff, v41 3554; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[55:58], off, s[8:11], 0 offset:96 3555; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v53, 0xffff, v40 3556; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v51, 0xffff, v39 3557; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[39:42], off, s[8:11], 0 offset:112 3558; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(1) 3559; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v61, 16, v58 3560; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v59, 16, v57 3561; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v11, 16, v56 3562; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3563; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v9, 16, v55 3564; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v60, 0xffff, v58 3565; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v58, 0xffff, v57 3566; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v10, 0xffff, v56 3567; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v8, 0xffff, v55 3568; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 3569; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v7, 16, v42 3570; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v5, 16, v41 3571; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v3, 16, v40 3572; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v1, 16, v39 3573; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v6, 0xffff, v42 3574; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v4, 0xffff, v41 3575; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v2, 0xffff, v40 3576; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v0, 0xffff, v39 3577; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 3578; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 3579; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:224 3580; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:240 3581; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:192 3582; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[58:61], off, s[0:3], 0 offset:208 3583; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[51:54], off, s[0:3], 0 offset:160 3584; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[35:38], off, s[0:3], 0 offset:176 3585; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[47:50], off, s[0:3], 0 offset:128 3586; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[43:46], off, s[0:3], 0 offset:144 3587; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[31:34], off, s[0:3], 0 offset:96 3588; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:112 3589; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[20:23], off, s[0:3], 0 offset:64 3590; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:80 3591; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:32 3592; GCN-NOHSA-SI-NEXT: buffer_load_dword v0, off, s[12:15], 0 offset:36 ; 4-byte Folded Reload 3593; GCN-NOHSA-SI-NEXT: buffer_load_dword v1, off, s[12:15], 0 offset:40 ; 4-byte Folded Reload 3594; GCN-NOHSA-SI-NEXT: buffer_load_dword v2, off, s[12:15], 0 offset:44 ; 4-byte Folded Reload 3595; GCN-NOHSA-SI-NEXT: buffer_load_dword v3, off, s[12:15], 0 offset:48 ; 4-byte Folded Reload 3596; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 3597; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 3598; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3599; GCN-NOHSA-SI-NEXT: buffer_load_dword v0, off, s[12:15], 0 offset:20 ; 4-byte Folded Reload 3600; GCN-NOHSA-SI-NEXT: buffer_load_dword v1, off, s[12:15], 0 offset:24 ; 4-byte Folded Reload 3601; GCN-NOHSA-SI-NEXT: buffer_load_dword v2, off, s[12:15], 0 offset:28 ; 4-byte Folded Reload 3602; GCN-NOHSA-SI-NEXT: buffer_load_dword v3, off, s[12:15], 0 offset:32 ; 4-byte Folded Reload 3603; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 3604; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 3605; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3606; GCN-NOHSA-SI-NEXT: buffer_load_dword v0, off, s[12:15], 0 offset:4 ; 4-byte Folded Reload 3607; GCN-NOHSA-SI-NEXT: buffer_load_dword v1, off, s[12:15], 0 offset:8 ; 4-byte Folded Reload 3608; GCN-NOHSA-SI-NEXT: buffer_load_dword v2, off, s[12:15], 0 offset:12 ; 4-byte Folded Reload 3609; GCN-NOHSA-SI-NEXT: buffer_load_dword v3, off, s[12:15], 0 offset:16 ; 4-byte Folded Reload 3610; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 3611; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 3612; GCN-NOHSA-SI-NEXT: s_endpgm 3613; 3614; GCN-HSA-LABEL: global_zextload_v64i16_to_v64i32: 3615; GCN-HSA: ; %bb.0: 3616; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 3617; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 3618; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 3619; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 3620; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 3621; GCN-HSA-NEXT: s_add_u32 s4, s2, 0x50 3622; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 3623; GCN-HSA-NEXT: v_mov_b32_e32 v4, s4 3624; GCN-HSA-NEXT: v_mov_b32_e32 v5, s5 3625; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5] 3626; GCN-HSA-NEXT: s_add_u32 s4, s2, 0x60 3627; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 3628; GCN-HSA-NEXT: v_mov_b32_e32 v9, s5 3629; GCN-HSA-NEXT: v_mov_b32_e32 v8, s4 3630; GCN-HSA-NEXT: s_add_u32 s4, s2, 0x70 3631; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 3632; GCN-HSA-NEXT: v_mov_b32_e32 v13, s5 3633; GCN-HSA-NEXT: v_mov_b32_e32 v12, s4 3634; GCN-HSA-NEXT: s_add_u32 s4, s2, 16 3635; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 3636; GCN-HSA-NEXT: s_add_u32 s6, s2, 32 3637; GCN-HSA-NEXT: s_addc_u32 s7, s3, 0 3638; GCN-HSA-NEXT: s_add_u32 s8, s2, 48 3639; GCN-HSA-NEXT: flat_load_dwordx4 v[8:11], v[8:9] 3640; GCN-HSA-NEXT: s_addc_u32 s9, s3, 0 3641; GCN-HSA-NEXT: s_add_u32 s2, s2, 64 3642; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0 3643; GCN-HSA-NEXT: flat_load_dwordx4 v[12:15], v[12:13] 3644; GCN-HSA-NEXT: v_mov_b32_e32 v17, s3 3645; GCN-HSA-NEXT: v_mov_b32_e32 v16, s2 3646; GCN-HSA-NEXT: flat_load_dwordx4 v[16:19], v[16:17] 3647; GCN-HSA-NEXT: v_mov_b32_e32 v21, s9 3648; GCN-HSA-NEXT: v_mov_b32_e32 v20, s8 3649; GCN-HSA-NEXT: flat_load_dwordx4 v[20:23], v[20:21] 3650; GCN-HSA-NEXT: v_mov_b32_e32 v29, s5 3651; GCN-HSA-NEXT: v_mov_b32_e32 v28, s4 3652; GCN-HSA-NEXT: flat_load_dwordx4 v[28:31], v[28:29] 3653; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 3654; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3655; GCN-HSA-NEXT: v_mov_b32_e32 v37, s1 3656; GCN-HSA-NEXT: v_mov_b32_e32 v36, s0 3657; GCN-HSA-NEXT: s_waitcnt vmcnt(6) 3658; GCN-HSA-NEXT: v_lshrrev_b32_e32 v27, 16, v1 3659; GCN-HSA-NEXT: v_lshrrev_b32_e32 v25, 16, v0 3660; GCN-HSA-NEXT: v_and_b32_e32 v26, 0xffff, v1 3661; GCN-HSA-NEXT: v_and_b32_e32 v24, 0xffff, v0 3662; GCN-HSA-NEXT: v_mov_b32_e32 v0, s6 3663; GCN-HSA-NEXT: v_mov_b32_e32 v1, s7 3664; GCN-HSA-NEXT: flat_load_dwordx4 v[32:35], v[0:1] 3665; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 3666; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 3667; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xe0 3668; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3669; GCN-HSA-NEXT: s_add_u32 s4, s0, 0xf0 3670; GCN-HSA-NEXT: s_addc_u32 s5, s1, 0 3671; GCN-HSA-NEXT: s_add_u32 s6, s0, 0xc0 3672; GCN-HSA-NEXT: s_addc_u32 s7, s1, 0 3673; GCN-HSA-NEXT: s_add_u32 s8, s0, 0xd0 3674; GCN-HSA-NEXT: s_addc_u32 s9, s1, 0 3675; GCN-HSA-NEXT: flat_store_dwordx4 v[36:37], v[24:27] 3676; GCN-HSA-NEXT: s_add_u32 s10, s0, 0xa0 3677; GCN-HSA-NEXT: v_lshrrev_b32_e32 v27, 16, v3 3678; GCN-HSA-NEXT: v_lshrrev_b32_e32 v25, 16, v2 3679; GCN-HSA-NEXT: v_and_b32_e32 v26, 0xffff, v3 3680; GCN-HSA-NEXT: v_and_b32_e32 v24, 0xffff, v2 3681; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[24:27] 3682; GCN-HSA-NEXT: s_addc_u32 s11, s1, 0 3683; GCN-HSA-NEXT: v_mov_b32_e32 v25, s3 3684; GCN-HSA-NEXT: s_waitcnt vmcnt(8) 3685; GCN-HSA-NEXT: v_lshrrev_b32_e32 v3, 16, v5 3686; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v4 3687; GCN-HSA-NEXT: v_and_b32_e32 v2, 0xffff, v5 3688; GCN-HSA-NEXT: v_and_b32_e32 v0, 0xffff, v4 3689; GCN-HSA-NEXT: v_mov_b32_e32 v4, s10 3690; GCN-HSA-NEXT: v_mov_b32_e32 v24, s2 3691; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xb0 3692; GCN-HSA-NEXT: v_mov_b32_e32 v5, s11 3693; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3694; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 3695; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 3696; GCN-HSA-NEXT: v_lshrrev_b32_e32 v3, 16, v7 3697; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v6 3698; GCN-HSA-NEXT: v_and_b32_e32 v2, 0xffff, v7 3699; GCN-HSA-NEXT: v_and_b32_e32 v0, 0xffff, v6 3700; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 3701; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 3702; GCN-HSA-NEXT: v_mov_b32_e32 v4, s6 3703; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x80 3704; GCN-HSA-NEXT: v_mov_b32_e32 v5, s7 3705; GCN-HSA-NEXT: s_waitcnt vmcnt(9) 3706; GCN-HSA-NEXT: v_lshrrev_b32_e32 v3, 16, v9 3707; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v8 3708; GCN-HSA-NEXT: v_and_b32_e32 v2, 0xffff, v9 3709; GCN-HSA-NEXT: v_and_b32_e32 v0, 0xffff, v8 3710; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3711; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 3712; GCN-HSA-NEXT: v_mov_b32_e32 v4, s8 3713; GCN-HSA-NEXT: v_lshrrev_b32_e32 v3, 16, v11 3714; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v10 3715; GCN-HSA-NEXT: v_and_b32_e32 v2, 0xffff, v11 3716; GCN-HSA-NEXT: v_and_b32_e32 v0, 0xffff, v10 3717; GCN-HSA-NEXT: v_mov_b32_e32 v11, s3 3718; GCN-HSA-NEXT: v_mov_b32_e32 v5, s9 3719; GCN-HSA-NEXT: v_mov_b32_e32 v10, s2 3720; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x90 3721; GCN-HSA-NEXT: v_mov_b32_e32 v9, s5 3722; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 3723; GCN-HSA-NEXT: s_waitcnt vmcnt(10) 3724; GCN-HSA-NEXT: v_lshrrev_b32_e32 v5, 16, v14 3725; GCN-HSA-NEXT: v_lshrrev_b32_e32 v3, 16, v13 3726; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v12 3727; GCN-HSA-NEXT: v_and_b32_e32 v2, 0xffff, v13 3728; GCN-HSA-NEXT: v_and_b32_e32 v0, 0xffff, v12 3729; GCN-HSA-NEXT: v_and_b32_e32 v6, 0xffff, v15 3730; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3731; GCN-HSA-NEXT: v_mov_b32_e32 v8, s4 3732; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v15 3733; GCN-HSA-NEXT: v_and_b32_e32 v4, 0xffff, v14 3734; GCN-HSA-NEXT: flat_store_dwordx4 v[24:25], v[0:3] 3735; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[4:7] 3736; GCN-HSA-NEXT: s_waitcnt vmcnt(11) 3737; GCN-HSA-NEXT: v_lshrrev_b32_e32 v3, 16, v17 3738; GCN-HSA-NEXT: v_mov_b32_e32 v6, s3 3739; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v16 3740; GCN-HSA-NEXT: v_and_b32_e32 v2, 0xffff, v17 3741; GCN-HSA-NEXT: v_and_b32_e32 v0, 0xffff, v16 3742; GCN-HSA-NEXT: v_mov_b32_e32 v5, s2 3743; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x60 3744; GCN-HSA-NEXT: v_lshrrev_b32_e32 v4, 16, v19 3745; GCN-HSA-NEXT: flat_store_dwordx4 v[10:11], v[0:3] 3746; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3747; GCN-HSA-NEXT: v_lshrrev_b32_e32 v2, 16, v18 3748; GCN-HSA-NEXT: v_and_b32_e32 v3, 0xffff, v19 3749; GCN-HSA-NEXT: v_and_b32_e32 v1, 0xffff, v18 3750; GCN-HSA-NEXT: flat_store_dwordx4 v[5:6], v[1:4] 3751; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 3752; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 3753; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x70 3754; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3755; GCN-HSA-NEXT: v_mov_b32_e32 v9, s3 3756; GCN-HSA-NEXT: v_mov_b32_e32 v8, s2 3757; GCN-HSA-NEXT: s_add_u32 s2, s0, 64 3758; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3759; GCN-HSA-NEXT: v_mov_b32_e32 v17, s3 3760; GCN-HSA-NEXT: v_mov_b32_e32 v16, s2 3761; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x50 3762; GCN-HSA-NEXT: s_waitcnt vmcnt(10) 3763; GCN-HSA-NEXT: v_lshrrev_b32_e32 v15, 16, v33 3764; GCN-HSA-NEXT: v_lshrrev_b32_e32 v13, 16, v32 3765; GCN-HSA-NEXT: v_and_b32_e32 v14, 0xffff, v33 3766; GCN-HSA-NEXT: v_and_b32_e32 v12, 0xffff, v32 3767; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3768; GCN-HSA-NEXT: v_lshrrev_b32_e32 v3, 16, v21 3769; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v20 3770; GCN-HSA-NEXT: v_and_b32_e32 v2, 0xffff, v21 3771; GCN-HSA-NEXT: v_and_b32_e32 v0, 0xffff, v20 3772; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[12:15] 3773; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 3774; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 3775; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v23 3776; GCN-HSA-NEXT: v_lshrrev_b32_e32 v5, 16, v22 3777; GCN-HSA-NEXT: v_and_b32_e32 v6, 0xffff, v23 3778; GCN-HSA-NEXT: v_and_b32_e32 v4, 0xffff, v22 3779; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 3780; GCN-HSA-NEXT: s_add_u32 s2, s0, 32 3781; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[4:7] 3782; GCN-HSA-NEXT: v_lshrrev_b32_e32 v11, 16, v35 3783; GCN-HSA-NEXT: v_lshrrev_b32_e32 v9, 16, v34 3784; GCN-HSA-NEXT: v_and_b32_e32 v10, 0xffff, v35 3785; GCN-HSA-NEXT: v_and_b32_e32 v8, 0xffff, v34 3786; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3787; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[8:11] 3788; GCN-HSA-NEXT: s_add_u32 s0, s0, 48 3789; GCN-HSA-NEXT: v_mov_b32_e32 v9, s3 3790; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v29 3791; GCN-HSA-NEXT: v_lshrrev_b32_e32 v5, 16, v28 3792; GCN-HSA-NEXT: v_and_b32_e32 v6, 0xffff, v29 3793; GCN-HSA-NEXT: v_and_b32_e32 v4, 0xffff, v28 3794; GCN-HSA-NEXT: v_mov_b32_e32 v8, s2 3795; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 3796; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[4:7] 3797; GCN-HSA-NEXT: v_lshrrev_b32_e32 v3, 16, v31 3798; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 3799; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v30 3800; GCN-HSA-NEXT: v_and_b32_e32 v2, 0xffff, v31 3801; GCN-HSA-NEXT: v_and_b32_e32 v0, 0xffff, v30 3802; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 3803; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 3804; GCN-HSA-NEXT: s_endpgm 3805; 3806; GCN-NOHSA-VI-LABEL: global_zextload_v64i16_to_v64i32: 3807; GCN-NOHSA-VI: ; %bb.0: 3808; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 3809; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 3810; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 3811; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 3812; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 3813; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 3814; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s6 3815; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s7 3816; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, s2 3817; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, s3 3818; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[8:11], off, s[4:7], 0 offset:112 3819; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[12:15], off, s[4:7], 0 offset:96 3820; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[16:19], off, s[4:7], 0 offset:80 3821; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[20:23], off, s[4:7], 0 offset:64 3822; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[4:7], off, s[4:7], 0 3823; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[24:27], off, s[4:7], 0 offset:16 3824; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[28:31], off, s[4:7], 0 offset:32 3825; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[32:35], off, s[4:7], 0 offset:48 3826; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(7) 3827; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v63, 16, v11 3828; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v62, 0xffff, v11 3829; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v61, 16, v10 3830; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v60, 0xffff, v10 3831; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v11, 16, v9 3832; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v10, 0xffff, v9 3833; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v9, 16, v8 3834; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v8, 0xffff, v8 3835; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(3) 3836; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v3, 16, v7 3837; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v2, 0xffff, v7 3838; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v1, 16, v6 3839; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, 0xffff, v6 3840; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v7, 16, v5 3841; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v6, 0xffff, v5 3842; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v5, 16, v4 3843; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v4, 0xffff, v4 3844; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(2) 3845; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v39, 16, v27 3846; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v38, 0xffff, v27 3847; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v37, 16, v26 3848; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v36, 0xffff, v26 3849; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v27, 16, v25 3850; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v26, 0xffff, v25 3851; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v25, 16, v24 3852; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v24, 0xffff, v24 3853; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(1) 3854; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v43, 16, v31 3855; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v42, 0xffff, v31 3856; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v41, 16, v30 3857; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v40, 0xffff, v30 3858; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v31, 16, v29 3859; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v30, 0xffff, v29 3860; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v29, 16, v28 3861; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v28, 0xffff, v28 3862; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 3863; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v47, 16, v35 3864; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v46, 0xffff, v35 3865; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v45, 16, v34 3866; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v44, 0xffff, v34 3867; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v35, 16, v33 3868; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v34, 0xffff, v33 3869; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v33, 16, v32 3870; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v32, 0xffff, v32 3871; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v51, 16, v23 3872; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v50, 0xffff, v23 3873; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v49, 16, v22 3874; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v48, 0xffff, v22 3875; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v23, 16, v21 3876; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v22, 0xffff, v21 3877; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v21, 16, v20 3878; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v20, 0xffff, v20 3879; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v55, 16, v19 3880; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v54, 0xffff, v19 3881; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v53, 16, v18 3882; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v52, 0xffff, v18 3883; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v19, 16, v17 3884; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v18, 0xffff, v17 3885; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v17, 16, v16 3886; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v16, 0xffff, v16 3887; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v59, 16, v15 3888; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v58, 0xffff, v15 3889; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v57, 16, v14 3890; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v56, 0xffff, v14 3891; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v15, 16, v13 3892; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v14, 0xffff, v13 3893; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v13, 16, v12 3894; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v12, 0xffff, v12 3895; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:224 3896; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[60:63], off, s[0:3], 0 offset:240 3897; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:192 3898; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[56:59], off, s[0:3], 0 offset:208 3899; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:160 3900; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[52:55], off, s[0:3], 0 offset:176 3901; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[20:23], off, s[0:3], 0 offset:128 3902; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[48:51], off, s[0:3], 0 offset:144 3903; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[32:35], off, s[0:3], 0 offset:96 3904; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[44:47], off, s[0:3], 0 offset:112 3905; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:64 3906; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[40:43], off, s[0:3], 0 offset:80 3907; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:32 3908; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[36:39], off, s[0:3], 0 offset:48 3909; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 3910; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 3911; GCN-NOHSA-VI-NEXT: s_endpgm 3912; 3913; EG-LABEL: global_zextload_v64i16_to_v64i32: 3914; EG: ; %bb.0: 3915; EG-NEXT: ALU 0, @38, KC0[CB0:0-32], KC1[] 3916; EG-NEXT: TEX 3 @22 3917; EG-NEXT: ALU 56, @39, KC0[CB0:0-32], KC1[] 3918; EG-NEXT: TEX 3 @30 3919; EG-NEXT: ALU 87, @96, KC0[CB0:0-32], KC1[] 3920; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T49.XYZW, T66.X, 0 3921; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T63.XYZW, T65.X, 0 3922; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T50.XYZW, T64.X, 0 3923; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T60.XYZW, T62.X, 0 3924; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T51.XYZW, T61.X, 0 3925; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T57.XYZW, T59.X, 0 3926; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T52.XYZW, T58.X, 0 3927; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T54.XYZW, T56.X, 0 3928; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T38.XYZW, T55.X, 0 3929; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T35.XYZW, T53.X, 0 3930; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T39.XYZW, T48.X, 0 3931; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T45.XYZW, T47.X, 0 3932; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T40.XYZW, T46.X, 0 3933; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T42.XYZW, T44.X, 0 3934; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T36.XYZW, T43.X, 0 3935; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T37.XYZW, T41.X, 1 3936; EG-NEXT: CF_END 3937; EG-NEXT: Fetch clause starting at 22: 3938; EG-NEXT: VTX_READ_128 T36.XYZW, T35.X, 0, #1 3939; EG-NEXT: VTX_READ_128 T38.XYZW, T35.X, 48, #1 3940; EG-NEXT: VTX_READ_128 T39.XYZW, T35.X, 32, #1 3941; EG-NEXT: VTX_READ_128 T40.XYZW, T35.X, 16, #1 3942; EG-NEXT: Fetch clause starting at 30: 3943; EG-NEXT: VTX_READ_128 T49.XYZW, T35.X, 112, #1 3944; EG-NEXT: VTX_READ_128 T50.XYZW, T35.X, 96, #1 3945; EG-NEXT: VTX_READ_128 T51.XYZW, T35.X, 80, #1 3946; EG-NEXT: VTX_READ_128 T52.XYZW, T35.X, 64, #1 3947; EG-NEXT: ALU clause starting at 38: 3948; EG-NEXT: MOV * T35.X, KC0[2].Z, 3949; EG-NEXT: ALU clause starting at 39: 3950; EG-NEXT: LSHR * T37.W, T36.W, literal.x, 3951; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3952; EG-NEXT: AND_INT * T37.Z, T36.W, literal.x, 3953; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3954; EG-NEXT: LSHR T37.Y, T36.Z, literal.x, 3955; EG-NEXT: LSHR * T36.W, T36.Y, literal.x, 3956; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3957; EG-NEXT: AND_INT T37.X, T36.Z, literal.x, 3958; EG-NEXT: AND_INT T36.Z, T36.Y, literal.x, 3959; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3960; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 3961; EG-NEXT: LSHR T41.X, PV.W, literal.x, 3962; EG-NEXT: LSHR T36.Y, T36.X, literal.y, 3963; EG-NEXT: LSHR T42.W, T40.W, literal.y, 3964; EG-NEXT: AND_INT * T36.X, T36.X, literal.z, 3965; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3966; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3967; EG-NEXT: AND_INT * T42.Z, T40.W, literal.x, 3968; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3969; EG-NEXT: LSHR T43.X, KC0[2].Y, literal.x, 3970; EG-NEXT: LSHR T42.Y, T40.Z, literal.y, 3971; EG-NEXT: LSHR T40.W, T40.Y, literal.y, 3972; EG-NEXT: AND_INT * T42.X, T40.Z, literal.z, 3973; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3974; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3975; EG-NEXT: AND_INT T40.Z, T40.Y, literal.x, 3976; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3977; EG-NEXT: 65535(9.183409e-41), 48(6.726233e-44) 3978; EG-NEXT: LSHR T44.X, PV.W, literal.x, 3979; EG-NEXT: LSHR T40.Y, T40.X, literal.y, 3980; EG-NEXT: LSHR T45.W, T39.W, literal.y, 3981; EG-NEXT: AND_INT * T40.X, T40.X, literal.z, 3982; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3983; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3984; EG-NEXT: AND_INT T45.Z, T39.W, literal.x, 3985; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3986; EG-NEXT: 65535(9.183409e-41), 32(4.484155e-44) 3987; EG-NEXT: LSHR T46.X, PV.W, literal.x, 3988; EG-NEXT: LSHR T45.Y, T39.Z, literal.y, 3989; EG-NEXT: LSHR T39.W, T39.Y, literal.y, 3990; EG-NEXT: AND_INT * T45.X, T39.Z, literal.z, 3991; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3992; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3993; EG-NEXT: AND_INT T39.Z, T39.Y, literal.x, 3994; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3995; EG-NEXT: 65535(9.183409e-41), 80(1.121039e-43) 3996; EG-NEXT: LSHR T47.X, PV.W, literal.x, 3997; EG-NEXT: LSHR T39.Y, T39.X, literal.y, 3998; EG-NEXT: AND_INT * T39.X, T39.X, literal.z, 3999; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4000; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4001; EG-NEXT: ADD_INT T0.W, KC0[2].Y, literal.x, 4002; EG-NEXT: LSHR * T35.W, T38.W, literal.y, 4003; EG-NEXT: 64(8.968310e-44), 16(2.242078e-44) 4004; EG-NEXT: LSHR T48.X, PV.W, literal.x, 4005; EG-NEXT: AND_INT * T35.Z, T38.W, literal.y, 4006; EG-NEXT: 2(2.802597e-45), 65535(9.183409e-41) 4007; EG-NEXT: ALU clause starting at 96: 4008; EG-NEXT: LSHR T35.Y, T38.Z, literal.x, 4009; EG-NEXT: LSHR * T38.W, T38.Y, literal.x, 4010; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4011; EG-NEXT: AND_INT T35.X, T38.Z, literal.x, 4012; EG-NEXT: AND_INT T38.Z, T38.Y, literal.x, 4013; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4014; EG-NEXT: 65535(9.183409e-41), 112(1.569454e-43) 4015; EG-NEXT: LSHR T53.X, PV.W, literal.x, 4016; EG-NEXT: LSHR T38.Y, T38.X, literal.y, 4017; EG-NEXT: LSHR T54.W, T52.W, literal.y, 4018; EG-NEXT: AND_INT * T38.X, T38.X, literal.z, 4019; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4020; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4021; EG-NEXT: AND_INT T54.Z, T52.W, literal.x, 4022; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4023; EG-NEXT: 65535(9.183409e-41), 96(1.345247e-43) 4024; EG-NEXT: LSHR T55.X, PV.W, literal.x, 4025; EG-NEXT: LSHR T54.Y, T52.Z, literal.y, 4026; EG-NEXT: LSHR T52.W, T52.Y, literal.y, 4027; EG-NEXT: AND_INT * T54.X, T52.Z, literal.z, 4028; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4029; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4030; EG-NEXT: AND_INT T52.Z, T52.Y, literal.x, 4031; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4032; EG-NEXT: 65535(9.183409e-41), 144(2.017870e-43) 4033; EG-NEXT: LSHR T56.X, PV.W, literal.x, 4034; EG-NEXT: LSHR T52.Y, T52.X, literal.y, 4035; EG-NEXT: LSHR T57.W, T51.W, literal.y, 4036; EG-NEXT: AND_INT * T52.X, T52.X, literal.z, 4037; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4038; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4039; EG-NEXT: AND_INT T57.Z, T51.W, literal.x, 4040; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4041; EG-NEXT: 65535(9.183409e-41), 128(1.793662e-43) 4042; EG-NEXT: LSHR T58.X, PV.W, literal.x, 4043; EG-NEXT: LSHR T57.Y, T51.Z, literal.y, 4044; EG-NEXT: LSHR T51.W, T51.Y, literal.y, 4045; EG-NEXT: AND_INT * T57.X, T51.Z, literal.z, 4046; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4047; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4048; EG-NEXT: AND_INT T51.Z, T51.Y, literal.x, 4049; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4050; EG-NEXT: 65535(9.183409e-41), 176(2.466285e-43) 4051; EG-NEXT: LSHR T59.X, PV.W, literal.x, 4052; EG-NEXT: LSHR T51.Y, T51.X, literal.y, 4053; EG-NEXT: LSHR T60.W, T50.W, literal.y, 4054; EG-NEXT: AND_INT * T51.X, T51.X, literal.z, 4055; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4056; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4057; EG-NEXT: AND_INT T60.Z, T50.W, literal.x, 4058; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4059; EG-NEXT: 65535(9.183409e-41), 160(2.242078e-43) 4060; EG-NEXT: LSHR T61.X, PV.W, literal.x, 4061; EG-NEXT: LSHR T60.Y, T50.Z, literal.y, 4062; EG-NEXT: LSHR T50.W, T50.Y, literal.y, 4063; EG-NEXT: AND_INT * T60.X, T50.Z, literal.z, 4064; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4065; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4066; EG-NEXT: AND_INT T50.Z, T50.Y, literal.x, 4067; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4068; EG-NEXT: 65535(9.183409e-41), 208(2.914701e-43) 4069; EG-NEXT: LSHR T62.X, PV.W, literal.x, 4070; EG-NEXT: LSHR T50.Y, T50.X, literal.y, 4071; EG-NEXT: LSHR T63.W, T49.W, literal.y, 4072; EG-NEXT: AND_INT * T50.X, T50.X, literal.z, 4073; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4074; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4075; EG-NEXT: AND_INT T63.Z, T49.W, literal.x, 4076; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4077; EG-NEXT: 65535(9.183409e-41), 192(2.690493e-43) 4078; EG-NEXT: LSHR T64.X, PV.W, literal.x, 4079; EG-NEXT: LSHR T63.Y, T49.Z, literal.y, 4080; EG-NEXT: LSHR T49.W, T49.Y, literal.y, 4081; EG-NEXT: AND_INT * T63.X, T49.Z, literal.z, 4082; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4083; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4084; EG-NEXT: AND_INT T49.Z, T49.Y, literal.x, 4085; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4086; EG-NEXT: 65535(9.183409e-41), 240(3.363116e-43) 4087; EG-NEXT: LSHR T65.X, PV.W, literal.x, 4088; EG-NEXT: LSHR T49.Y, T49.X, literal.y, 4089; EG-NEXT: AND_INT * T49.X, T49.X, literal.z, 4090; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4091; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4092; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 4093; EG-NEXT: 224(3.138909e-43), 0(0.000000e+00) 4094; EG-NEXT: LSHR * T66.X, PV.W, literal.x, 4095; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 4096; 4097; CM-LABEL: global_zextload_v64i16_to_v64i32: 4098; CM: ; %bb.0: 4099; CM-NEXT: ALU 0, @38, KC0[CB0:0-32], KC1[] 4100; CM-NEXT: TEX 3 @22 4101; CM-NEXT: ALU 50, @39, KC0[CB0:0-32], KC1[] 4102; CM-NEXT: TEX 3 @30 4103; CM-NEXT: ALU 78, @90, KC0[CB0:0-32], KC1[] 4104; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T65, T66.X 4105; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T63, T48.X 4106; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T62, T64.X 4107; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T60, T49.X 4108; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T59, T61.X 4109; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T57, T50.X 4110; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T56, T58.X 4111; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T54, T51.X 4112; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T53, T55.X 4113; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T35, T37.X 4114; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T47, T52.X 4115; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T45, T38.X 4116; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T44, T46.X 4117; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T42, T39.X 4118; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T41, T43.X 4119; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T40, T36.X 4120; CM-NEXT: CF_END 4121; CM-NEXT: Fetch clause starting at 22: 4122; CM-NEXT: VTX_READ_128 T36.XYZW, T35.X, 112, #1 4123; CM-NEXT: VTX_READ_128 T37.XYZW, T35.X, 64, #1 4124; CM-NEXT: VTX_READ_128 T38.XYZW, T35.X, 80, #1 4125; CM-NEXT: VTX_READ_128 T39.XYZW, T35.X, 96, #1 4126; CM-NEXT: Fetch clause starting at 30: 4127; CM-NEXT: VTX_READ_128 T48.XYZW, T35.X, 0, #1 4128; CM-NEXT: VTX_READ_128 T49.XYZW, T35.X, 16, #1 4129; CM-NEXT: VTX_READ_128 T50.XYZW, T35.X, 32, #1 4130; CM-NEXT: VTX_READ_128 T51.XYZW, T35.X, 48, #1 4131; CM-NEXT: ALU clause starting at 38: 4132; CM-NEXT: MOV * T35.X, KC0[2].Z, 4133; CM-NEXT: ALU clause starting at 39: 4134; CM-NEXT: LSHR * T40.W, T36.Y, literal.x, 4135; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4136; CM-NEXT: AND_INT * T40.Z, T36.Y, literal.x, 4137; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4138; CM-NEXT: LSHR T40.Y, T36.X, literal.x, 4139; CM-NEXT: LSHR * T41.W, T36.W, literal.x, 4140; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4141; CM-NEXT: AND_INT T40.X, T36.X, literal.x, 4142; CM-NEXT: AND_INT T41.Z, T36.W, literal.x, 4143; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4144; CM-NEXT: 65535(9.183409e-41), 224(3.138909e-43) 4145; CM-NEXT: LSHR T36.X, PV.W, literal.x, 4146; CM-NEXT: LSHR T41.Y, T36.Z, literal.y, 4147; CM-NEXT: LSHR * T42.W, T39.Y, literal.y, 4148; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4149; CM-NEXT: AND_INT T41.X, T36.Z, literal.x, 4150; CM-NEXT: AND_INT T42.Z, T39.Y, literal.x, 4151; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4152; CM-NEXT: 65535(9.183409e-41), 240(3.363116e-43) 4153; CM-NEXT: LSHR T43.X, PV.W, literal.x, 4154; CM-NEXT: LSHR T42.Y, T39.X, literal.y, 4155; CM-NEXT: LSHR * T44.W, T39.W, literal.y, 4156; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4157; CM-NEXT: AND_INT T42.X, T39.X, literal.x, 4158; CM-NEXT: AND_INT T44.Z, T39.W, literal.x, 4159; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4160; CM-NEXT: 65535(9.183409e-41), 192(2.690493e-43) 4161; CM-NEXT: LSHR T39.X, PV.W, literal.x, 4162; CM-NEXT: LSHR T44.Y, T39.Z, literal.y, 4163; CM-NEXT: LSHR * T45.W, T38.Y, literal.y, 4164; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4165; CM-NEXT: AND_INT T44.X, T39.Z, literal.x, 4166; CM-NEXT: AND_INT T45.Z, T38.Y, literal.x, 4167; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4168; CM-NEXT: 65535(9.183409e-41), 208(2.914701e-43) 4169; CM-NEXT: LSHR T46.X, PV.W, literal.x, 4170; CM-NEXT: LSHR T45.Y, T38.X, literal.y, 4171; CM-NEXT: LSHR * T47.W, T38.W, literal.y, 4172; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4173; CM-NEXT: AND_INT T45.X, T38.X, literal.x, 4174; CM-NEXT: AND_INT T47.Z, T38.W, literal.x, 4175; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4176; CM-NEXT: 65535(9.183409e-41), 160(2.242078e-43) 4177; CM-NEXT: LSHR T38.X, PV.W, literal.x, 4178; CM-NEXT: LSHR T47.Y, T38.Z, literal.y, 4179; CM-NEXT: LSHR * T35.W, T37.Y, literal.y, 4180; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4181; CM-NEXT: AND_INT T47.X, T38.Z, literal.x, 4182; CM-NEXT: AND_INT T35.Z, T37.Y, literal.x, 4183; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4184; CM-NEXT: 65535(9.183409e-41), 176(2.466285e-43) 4185; CM-NEXT: ALU clause starting at 90: 4186; CM-NEXT: LSHR T52.X, T0.W, literal.x, 4187; CM-NEXT: LSHR T35.Y, T37.X, literal.y, 4188; CM-NEXT: LSHR * T53.W, T37.W, literal.y, BS:VEC_120/SCL_212 4189; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4190; CM-NEXT: AND_INT T35.X, T37.X, literal.x, 4191; CM-NEXT: AND_INT T53.Z, T37.W, literal.x, 4192; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4193; CM-NEXT: 65535(9.183409e-41), 128(1.793662e-43) 4194; CM-NEXT: LSHR T37.X, PV.W, literal.x, 4195; CM-NEXT: LSHR T53.Y, T37.Z, literal.y, 4196; CM-NEXT: LSHR * T54.W, T51.Y, literal.y, 4197; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4198; CM-NEXT: AND_INT T53.X, T37.Z, literal.x, 4199; CM-NEXT: AND_INT T54.Z, T51.Y, literal.x, 4200; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4201; CM-NEXT: 65535(9.183409e-41), 144(2.017870e-43) 4202; CM-NEXT: LSHR T55.X, PV.W, literal.x, 4203; CM-NEXT: LSHR T54.Y, T51.X, literal.y, 4204; CM-NEXT: LSHR * T56.W, T51.W, literal.y, 4205; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4206; CM-NEXT: AND_INT T54.X, T51.X, literal.x, 4207; CM-NEXT: AND_INT T56.Z, T51.W, literal.x, 4208; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4209; CM-NEXT: 65535(9.183409e-41), 96(1.345247e-43) 4210; CM-NEXT: LSHR T51.X, PV.W, literal.x, 4211; CM-NEXT: LSHR T56.Y, T51.Z, literal.y, 4212; CM-NEXT: LSHR * T57.W, T50.Y, literal.y, 4213; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4214; CM-NEXT: AND_INT T56.X, T51.Z, literal.x, 4215; CM-NEXT: AND_INT T57.Z, T50.Y, literal.x, 4216; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4217; CM-NEXT: 65535(9.183409e-41), 112(1.569454e-43) 4218; CM-NEXT: LSHR T58.X, PV.W, literal.x, 4219; CM-NEXT: LSHR T57.Y, T50.X, literal.y, 4220; CM-NEXT: LSHR * T59.W, T50.W, literal.y, 4221; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4222; CM-NEXT: AND_INT T57.X, T50.X, literal.x, 4223; CM-NEXT: AND_INT T59.Z, T50.W, literal.x, 4224; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4225; CM-NEXT: 65535(9.183409e-41), 64(8.968310e-44) 4226; CM-NEXT: LSHR T50.X, PV.W, literal.x, 4227; CM-NEXT: LSHR T59.Y, T50.Z, literal.y, 4228; CM-NEXT: LSHR * T60.W, T49.Y, literal.y, 4229; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4230; CM-NEXT: AND_INT T59.X, T50.Z, literal.x, 4231; CM-NEXT: AND_INT T60.Z, T49.Y, literal.x, 4232; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4233; CM-NEXT: 65535(9.183409e-41), 80(1.121039e-43) 4234; CM-NEXT: LSHR T61.X, PV.W, literal.x, 4235; CM-NEXT: LSHR T60.Y, T49.X, literal.y, 4236; CM-NEXT: LSHR * T62.W, T49.W, literal.y, 4237; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4238; CM-NEXT: AND_INT T60.X, T49.X, literal.x, 4239; CM-NEXT: AND_INT T62.Z, T49.W, literal.x, 4240; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4241; CM-NEXT: 65535(9.183409e-41), 32(4.484155e-44) 4242; CM-NEXT: LSHR T49.X, PV.W, literal.x, 4243; CM-NEXT: LSHR T62.Y, T49.Z, literal.y, 4244; CM-NEXT: LSHR * T63.W, T48.Y, literal.y, 4245; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4246; CM-NEXT: AND_INT T62.X, T49.Z, literal.x, 4247; CM-NEXT: AND_INT T63.Z, T48.Y, literal.x, 4248; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4249; CM-NEXT: 65535(9.183409e-41), 48(6.726233e-44) 4250; CM-NEXT: LSHR T64.X, PV.W, literal.x, 4251; CM-NEXT: LSHR T63.Y, T48.X, literal.y, 4252; CM-NEXT: LSHR * T65.W, T48.W, literal.y, 4253; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4254; CM-NEXT: AND_INT T63.X, T48.X, literal.x, 4255; CM-NEXT: AND_INT * T65.Z, T48.W, literal.x, 4256; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4257; CM-NEXT: LSHR T48.X, KC0[2].Y, literal.x, 4258; CM-NEXT: LSHR * T65.Y, T48.Z, literal.y, 4259; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4260; CM-NEXT: AND_INT T65.X, T48.Z, literal.x, 4261; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4262; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 4263; CM-NEXT: LSHR * T66.X, PV.W, literal.x, 4264; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 4265 %load = load <64 x i16>, <64 x i16> addrspace(1)* %in 4266 %ext = zext <64 x i16> %load to <64 x i32> 4267 store <64 x i32> %ext, <64 x i32> addrspace(1)* %out 4268 ret void 4269} 4270 4271define amdgpu_kernel void @global_sextload_v64i16_to_v64i32(<64 x i32> addrspace(1)* %out, <64 x i16> addrspace(1)* %in) #0 { 4272; GCN-NOHSA-SI-LABEL: global_sextload_v64i16_to_v64i32: 4273; GCN-NOHSA-SI: ; %bb.0: 4274; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, SCRATCH_RSRC_DWORD0 4275; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, SCRATCH_RSRC_DWORD1 4276; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, -1 4277; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, 0xe8f000 4278; GCN-NOHSA-SI-NEXT: s_add_u32 s8, s8, s3 4279; GCN-NOHSA-SI-NEXT: s_addc_u32 s9, s9, 0 4280; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 4281; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 4282; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 4283; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 4284; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 4285; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 4286; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s6 4287; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s7 4288; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, s2 4289; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, s3 4290; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[12:15], off, s[4:7], 0 offset:112 4291; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[16:19], off, s[4:7], 0 offset:96 4292; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[20:23], off, s[4:7], 0 offset:80 4293; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[24:27], off, s[4:7], 0 offset:64 4294; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[8:11], off, s[4:7], 0 4295; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[28:31], off, s[4:7], 0 offset:16 4296; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[32:35], off, s[4:7], 0 offset:32 4297; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[36:39], off, s[4:7], 0 offset:48 4298; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(3) 4299; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v3, 16, v11 4300; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 16, v10 4301; GCN-NOHSA-SI-NEXT: v_bfe_i32 v2, v11, 0, 16 4302; GCN-NOHSA-SI-NEXT: v_bfe_i32 v0, v10, 0, 16 4303; GCN-NOHSA-SI-NEXT: buffer_store_dword v0, off, s[8:11], 0 offset:4 ; 4-byte Folded Spill 4304; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 4305; GCN-NOHSA-SI-NEXT: buffer_store_dword v1, off, s[8:11], 0 offset:8 ; 4-byte Folded Spill 4306; GCN-NOHSA-SI-NEXT: buffer_store_dword v2, off, s[8:11], 0 offset:12 ; 4-byte Folded Spill 4307; GCN-NOHSA-SI-NEXT: buffer_store_dword v3, off, s[8:11], 0 offset:16 ; 4-byte Folded Spill 4308; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v7, 16, v9 4309; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v5, 16, v8 4310; GCN-NOHSA-SI-NEXT: v_bfe_i32 v6, v9, 0, 16 4311; GCN-NOHSA-SI-NEXT: v_bfe_i32 v4, v8, 0, 16 4312; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v11, 16, v31 4313; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v9, 16, v30 4314; GCN-NOHSA-SI-NEXT: v_bfe_i32 v10, v31, 0, 16 4315; GCN-NOHSA-SI-NEXT: v_bfe_i32 v8, v30, 0, 16 4316; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v43, 16, v29 4317; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v41, 16, v28 4318; GCN-NOHSA-SI-NEXT: v_bfe_i32 v42, v29, 0, 16 4319; GCN-NOHSA-SI-NEXT: v_bfe_i32 v40, v28, 0, 16 4320; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v31, 16, v35 4321; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v29, 16, v34 4322; GCN-NOHSA-SI-NEXT: v_bfe_i32 v30, v35, 0, 16 4323; GCN-NOHSA-SI-NEXT: v_bfe_i32 v28, v34, 0, 16 4324; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v47, 16, v33 4325; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v45, 16, v32 4326; GCN-NOHSA-SI-NEXT: v_bfe_i32 v46, v33, 0, 16 4327; GCN-NOHSA-SI-NEXT: v_bfe_i32 v44, v32, 0, 16 4328; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v35, 16, v39 4329; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v33, 16, v38 4330; GCN-NOHSA-SI-NEXT: v_bfe_i32 v34, v39, 0, 16 4331; GCN-NOHSA-SI-NEXT: v_bfe_i32 v32, v38, 0, 16 4332; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v51, 16, v37 4333; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v49, 16, v36 4334; GCN-NOHSA-SI-NEXT: v_bfe_i32 v50, v37, 0, 16 4335; GCN-NOHSA-SI-NEXT: v_bfe_i32 v48, v36, 0, 16 4336; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v39, 16, v27 4337; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v37, 16, v26 4338; GCN-NOHSA-SI-NEXT: v_bfe_i32 v38, v27, 0, 16 4339; GCN-NOHSA-SI-NEXT: v_bfe_i32 v36, v26, 0, 16 4340; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v55, 16, v25 4341; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v53, 16, v24 4342; GCN-NOHSA-SI-NEXT: v_bfe_i32 v54, v25, 0, 16 4343; GCN-NOHSA-SI-NEXT: v_bfe_i32 v52, v24, 0, 16 4344; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v26, 16, v23 4345; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v24, 16, v22 4346; GCN-NOHSA-SI-NEXT: v_bfe_i32 v25, v23, 0, 16 4347; GCN-NOHSA-SI-NEXT: v_bfe_i32 v23, v22, 0, 16 4348; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v59, 16, v21 4349; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v57, 16, v20 4350; GCN-NOHSA-SI-NEXT: v_bfe_i32 v58, v21, 0, 16 4351; GCN-NOHSA-SI-NEXT: v_bfe_i32 v56, v20, 0, 16 4352; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v22, 16, v19 4353; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v20, 16, v18 4354; GCN-NOHSA-SI-NEXT: v_bfe_i32 v21, v19, 0, 16 4355; GCN-NOHSA-SI-NEXT: v_bfe_i32 v19, v18, 0, 16 4356; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v63, 16, v17 4357; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v61, 16, v16 4358; GCN-NOHSA-SI-NEXT: v_bfe_i32 v62, v17, 0, 16 4359; GCN-NOHSA-SI-NEXT: v_bfe_i32 v60, v16, 0, 16 4360; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v18, 16, v15 4361; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v16, 16, v14 4362; GCN-NOHSA-SI-NEXT: v_bfe_i32 v17, v15, 0, 16 4363; GCN-NOHSA-SI-NEXT: v_bfe_i32 v15, v14, 0, 16 4364; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 4365; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v3, 16, v13 4366; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 16, v12 4367; GCN-NOHSA-SI-NEXT: v_bfe_i32 v2, v13, 0, 16 4368; GCN-NOHSA-SI-NEXT: v_bfe_i32 v0, v12, 0, 16 4369; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:224 4370; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:240 4371; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[60:63], off, s[0:3], 0 offset:192 4372; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[19:22], off, s[0:3], 0 offset:208 4373; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[56:59], off, s[0:3], 0 offset:160 4374; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[23:26], off, s[0:3], 0 offset:176 4375; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[52:55], off, s[0:3], 0 offset:128 4376; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[36:39], off, s[0:3], 0 offset:144 4377; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[48:51], off, s[0:3], 0 offset:96 4378; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[32:35], off, s[0:3], 0 offset:112 4379; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[44:47], off, s[0:3], 0 offset:64 4380; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:80 4381; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[40:43], off, s[0:3], 0 offset:32 4382; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:48 4383; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 4384; GCN-NOHSA-SI-NEXT: buffer_load_dword v0, off, s[8:11], 0 offset:4 ; 4-byte Folded Reload 4385; GCN-NOHSA-SI-NEXT: buffer_load_dword v1, off, s[8:11], 0 offset:8 ; 4-byte Folded Reload 4386; GCN-NOHSA-SI-NEXT: buffer_load_dword v2, off, s[8:11], 0 offset:12 ; 4-byte Folded Reload 4387; GCN-NOHSA-SI-NEXT: buffer_load_dword v3, off, s[8:11], 0 offset:16 ; 4-byte Folded Reload 4388; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 4389; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 4390; GCN-NOHSA-SI-NEXT: s_endpgm 4391; 4392; GCN-HSA-LABEL: global_sextload_v64i16_to_v64i32: 4393; GCN-HSA: ; %bb.0: 4394; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 4395; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 4396; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 4397; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 4398; GCN-HSA-NEXT: flat_load_dwordx4 v[12:15], v[0:1] 4399; GCN-HSA-NEXT: s_add_u32 s4, s2, 0x70 4400; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 4401; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 4402; GCN-HSA-NEXT: v_mov_b32_e32 v1, s5 4403; GCN-HSA-NEXT: flat_load_dwordx4 v[8:11], v[0:1] 4404; GCN-HSA-NEXT: s_add_u32 s4, s2, 0x60 4405; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 4406; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 4407; GCN-HSA-NEXT: v_mov_b32_e32 v1, s5 4408; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[0:1] 4409; GCN-HSA-NEXT: s_add_u32 s4, s2, 0x50 4410; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 4411; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 4412; GCN-HSA-NEXT: v_mov_b32_e32 v1, s5 4413; GCN-HSA-NEXT: s_add_u32 s4, s2, 64 4414; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 4415; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 4416; GCN-HSA-NEXT: v_mov_b32_e32 v17, s5 4417; GCN-HSA-NEXT: v_mov_b32_e32 v16, s4 4418; GCN-HSA-NEXT: flat_load_dwordx4 v[16:19], v[16:17] 4419; GCN-HSA-NEXT: s_add_u32 s4, s2, 48 4420; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 4421; GCN-HSA-NEXT: s_add_u32 s6, s2, 32 4422; GCN-HSA-NEXT: s_addc_u32 s7, s3, 0 4423; GCN-HSA-NEXT: s_add_u32 s2, s2, 16 4424; GCN-HSA-NEXT: v_mov_b32_e32 v21, s5 4425; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0 4426; GCN-HSA-NEXT: v_mov_b32_e32 v20, s4 4427; GCN-HSA-NEXT: v_mov_b32_e32 v33, s7 4428; GCN-HSA-NEXT: flat_load_dwordx4 v[20:23], v[20:21] 4429; GCN-HSA-NEXT: v_mov_b32_e32 v32, s6 4430; GCN-HSA-NEXT: v_mov_b32_e32 v37, s1 4431; GCN-HSA-NEXT: v_mov_b32_e32 v36, s0 4432; GCN-HSA-NEXT: s_waitcnt vmcnt(5) 4433; GCN-HSA-NEXT: v_ashrrev_i32_e32 v27, 16, v13 4434; GCN-HSA-NEXT: v_ashrrev_i32_e32 v25, 16, v12 4435; GCN-HSA-NEXT: v_bfe_i32 v26, v13, 0, 16 4436; GCN-HSA-NEXT: v_bfe_i32 v24, v12, 0, 16 4437; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 4438; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 4439; GCN-HSA-NEXT: flat_load_dwordx4 v[28:31], v[12:13] 4440; GCN-HSA-NEXT: flat_load_dwordx4 v[32:35], v[32:33] 4441; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 4442; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4443; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 4444; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 4445; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xe0 4446; GCN-HSA-NEXT: flat_store_dwordx4 v[36:37], v[24:27] 4447; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4448; GCN-HSA-NEXT: v_ashrrev_i32_e32 v27, 16, v15 4449; GCN-HSA-NEXT: v_ashrrev_i32_e32 v25, 16, v14 4450; GCN-HSA-NEXT: v_bfe_i32 v26, v15, 0, 16 4451; GCN-HSA-NEXT: v_bfe_i32 v24, v14, 0, 16 4452; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[24:27] 4453; GCN-HSA-NEXT: s_waitcnt vmcnt(8) 4454; GCN-HSA-NEXT: v_ashrrev_i32_e32 v15, 16, v9 4455; GCN-HSA-NEXT: v_ashrrev_i32_e32 v13, 16, v8 4456; GCN-HSA-NEXT: v_bfe_i32 v14, v9, 0, 16 4457; GCN-HSA-NEXT: v_bfe_i32 v12, v8, 0, 16 4458; GCN-HSA-NEXT: v_mov_b32_e32 v9, s3 4459; GCN-HSA-NEXT: v_mov_b32_e32 v8, s2 4460; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xf0 4461; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4462; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[12:15] 4463; GCN-HSA-NEXT: v_mov_b32_e32 v9, s3 4464; GCN-HSA-NEXT: v_mov_b32_e32 v8, s2 4465; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xc0 4466; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4467; GCN-HSA-NEXT: v_mov_b32_e32 v25, s3 4468; GCN-HSA-NEXT: v_mov_b32_e32 v24, s2 4469; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xd0 4470; GCN-HSA-NEXT: v_ashrrev_i32_e32 v14, 16, v11 4471; GCN-HSA-NEXT: v_ashrrev_i32_e32 v12, 16, v10 4472; GCN-HSA-NEXT: v_bfe_i32 v13, v11, 0, 16 4473; GCN-HSA-NEXT: v_bfe_i32 v11, v10, 0, 16 4474; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4475; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[11:14] 4476; GCN-HSA-NEXT: s_waitcnt vmcnt(9) 4477; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 16, v4 4478; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 4479; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 4480; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xa0 4481; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4482; GCN-HSA-NEXT: v_mov_b32_e32 v15, s3 4483; GCN-HSA-NEXT: v_mov_b32_e32 v14, s2 4484; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xb0 4485; GCN-HSA-NEXT: v_ashrrev_i32_e32 v11, 16, v5 4486; GCN-HSA-NEXT: v_bfe_i32 v10, v5, 0, 16 4487; GCN-HSA-NEXT: v_bfe_i32 v8, v4, 0, 16 4488; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4489; GCN-HSA-NEXT: flat_store_dwordx4 v[24:25], v[8:11] 4490; GCN-HSA-NEXT: v_mov_b32_e32 v25, s3 4491; GCN-HSA-NEXT: v_ashrrev_i32_e32 v10, 16, v7 4492; GCN-HSA-NEXT: v_ashrrev_i32_e32 v8, 16, v6 4493; GCN-HSA-NEXT: v_bfe_i32 v9, v7, 0, 16 4494; GCN-HSA-NEXT: v_bfe_i32 v7, v6, 0, 16 4495; GCN-HSA-NEXT: v_mov_b32_e32 v24, s2 4496; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x80 4497; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[7:10] 4498; GCN-HSA-NEXT: s_waitcnt vmcnt(10) 4499; GCN-HSA-NEXT: v_ashrrev_i32_e32 v5, 16, v0 4500; GCN-HSA-NEXT: v_ashrrev_i32_e32 v7, 16, v1 4501; GCN-HSA-NEXT: v_bfe_i32 v6, v1, 0, 16 4502; GCN-HSA-NEXT: v_bfe_i32 v4, v0, 0, 16 4503; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4504; GCN-HSA-NEXT: v_ashrrev_i32_e32 v11, 16, v3 4505; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 16, v2 4506; GCN-HSA-NEXT: v_bfe_i32 v10, v3, 0, 16 4507; GCN-HSA-NEXT: v_bfe_i32 v8, v2, 0, 16 4508; GCN-HSA-NEXT: flat_store_dwordx4 v[14:15], v[4:7] 4509; GCN-HSA-NEXT: flat_store_dwordx4 v[24:25], v[8:11] 4510; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 4511; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 4512; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x90 4513; GCN-HSA-NEXT: s_waitcnt vmcnt(11) 4514; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 16, v17 4515; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 16, v16 4516; GCN-HSA-NEXT: v_bfe_i32 v2, v17, 0, 16 4517; GCN-HSA-NEXT: v_bfe_i32 v0, v16, 0, 16 4518; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4519; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 4520; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 4521; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 4522; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x60 4523; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 16, v19 4524; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 16, v18 4525; GCN-HSA-NEXT: v_bfe_i32 v2, v19, 0, 16 4526; GCN-HSA-NEXT: v_bfe_i32 v0, v18, 0, 16 4527; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4528; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 4529; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 4530; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 4531; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x70 4532; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4533; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 4534; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 4535; GCN-HSA-NEXT: s_add_u32 s2, s0, 64 4536; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4537; GCN-HSA-NEXT: v_mov_b32_e32 v17, s3 4538; GCN-HSA-NEXT: s_waitcnt vmcnt(12) 4539; GCN-HSA-NEXT: v_ashrrev_i32_e32 v11, 16, v23 4540; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 16, v22 4541; GCN-HSA-NEXT: v_bfe_i32 v10, v23, 0, 16 4542; GCN-HSA-NEXT: v_bfe_i32 v8, v22, 0, 16 4543; GCN-HSA-NEXT: v_mov_b32_e32 v16, s2 4544; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x50 4545; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[8:11] 4546; GCN-HSA-NEXT: s_waitcnt vmcnt(11) 4547; GCN-HSA-NEXT: v_ashrrev_i32_e32 v15, 16, v33 4548; GCN-HSA-NEXT: v_ashrrev_i32_e32 v13, 16, v32 4549; GCN-HSA-NEXT: v_bfe_i32 v14, v33, 0, 16 4550; GCN-HSA-NEXT: v_bfe_i32 v12, v32, 0, 16 4551; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4552; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[12:15] 4553; GCN-HSA-NEXT: v_ashrrev_i32_e32 v11, 16, v35 4554; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 4555; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 4556; GCN-HSA-NEXT: s_add_u32 s2, s0, 32 4557; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 16, v34 4558; GCN-HSA-NEXT: v_bfe_i32 v10, v35, 0, 16 4559; GCN-HSA-NEXT: v_bfe_i32 v8, v34, 0, 16 4560; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4561; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 16, v21 4562; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 16, v20 4563; GCN-HSA-NEXT: v_bfe_i32 v2, v21, 0, 16 4564; GCN-HSA-NEXT: v_bfe_i32 v0, v20, 0, 16 4565; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[8:11] 4566; GCN-HSA-NEXT: s_add_u32 s0, s0, 48 4567; GCN-HSA-NEXT: v_mov_b32_e32 v9, s3 4568; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 4569; GCN-HSA-NEXT: v_ashrrev_i32_e32 v7, 16, v29 4570; GCN-HSA-NEXT: v_ashrrev_i32_e32 v5, 16, v28 4571; GCN-HSA-NEXT: v_bfe_i32 v6, v29, 0, 16 4572; GCN-HSA-NEXT: v_bfe_i32 v4, v28, 0, 16 4573; GCN-HSA-NEXT: v_mov_b32_e32 v8, s2 4574; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 4575; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[4:7] 4576; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 16, v31 4577; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 4578; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 16, v30 4579; GCN-HSA-NEXT: v_bfe_i32 v2, v31, 0, 16 4580; GCN-HSA-NEXT: v_bfe_i32 v0, v30, 0, 16 4581; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 4582; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 4583; GCN-HSA-NEXT: s_endpgm 4584; 4585; GCN-NOHSA-VI-LABEL: global_sextload_v64i16_to_v64i32: 4586; GCN-NOHSA-VI: ; %bb.0: 4587; GCN-NOHSA-VI-NEXT: s_mov_b32 s88, SCRATCH_RSRC_DWORD0 4588; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 4589; GCN-NOHSA-VI-NEXT: s_mov_b32 s89, SCRATCH_RSRC_DWORD1 4590; GCN-NOHSA-VI-NEXT: s_mov_b32 s90, -1 4591; GCN-NOHSA-VI-NEXT: s_mov_b32 s91, 0xe80000 4592; GCN-NOHSA-VI-NEXT: s_add_u32 s88, s88, s3 4593; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 4594; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 4595; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 4596; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 4597; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 4598; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s6 4599; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s7 4600; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, s2 4601; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, s3 4602; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[8:11], off, s[4:7], 0 offset:112 4603; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[12:15], off, s[4:7], 0 offset:96 4604; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[16:19], off, s[4:7], 0 offset:80 4605; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[20:23], off, s[4:7], 0 offset:64 4606; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[24:27], off, s[4:7], 0 4607; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[28:31], off, s[4:7], 0 offset:16 4608; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[32:35], off, s[4:7], 0 offset:32 4609; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[36:39], off, s[4:7], 0 offset:48 4610; GCN-NOHSA-VI-NEXT: s_addc_u32 s89, s89, 0 4611; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(6) 4612; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v63, 16, v13 4613; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(5) 4614; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v59, 16, v17 4615; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(4) 4616; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v55, 16, v21 4617; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(3) 4618; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v3, 16, v27 4619; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 16, v26 4620; GCN-NOHSA-VI-NEXT: v_bfe_i32 v2, v27, 0, 16 4621; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v26, 0, 16 4622; GCN-NOHSA-VI-NEXT: buffer_store_dword v0, off, s[88:91], 0 offset:4 ; 4-byte Folded Spill 4623; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 4624; GCN-NOHSA-VI-NEXT: buffer_store_dword v1, off, s[88:91], 0 offset:8 ; 4-byte Folded Spill 4625; GCN-NOHSA-VI-NEXT: buffer_store_dword v2, off, s[88:91], 0 offset:12 ; 4-byte Folded Spill 4626; GCN-NOHSA-VI-NEXT: buffer_store_dword v3, off, s[88:91], 0 offset:16 ; 4-byte Folded Spill 4627; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v3, 16, v9 4628; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 16, v8 4629; GCN-NOHSA-VI-NEXT: v_bfe_i32 v2, v9, 0, 16 4630; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v8, 0, 16 4631; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v7, 16, v25 4632; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v5, 16, v24 4633; GCN-NOHSA-VI-NEXT: v_bfe_i32 v6, v25, 0, 16 4634; GCN-NOHSA-VI-NEXT: v_bfe_i32 v4, v24, 0, 16 4635; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v27, 16, v31 4636; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v25, 16, v30 4637; GCN-NOHSA-VI-NEXT: v_bfe_i32 v26, v31, 0, 16 4638; GCN-NOHSA-VI-NEXT: v_bfe_i32 v24, v30, 0, 16 4639; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v43, 16, v29 4640; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v41, 16, v28 4641; GCN-NOHSA-VI-NEXT: v_bfe_i32 v42, v29, 0, 16 4642; GCN-NOHSA-VI-NEXT: v_bfe_i32 v40, v28, 0, 16 4643; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v31, 16, v35 4644; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v29, 16, v34 4645; GCN-NOHSA-VI-NEXT: v_bfe_i32 v30, v35, 0, 16 4646; GCN-NOHSA-VI-NEXT: v_bfe_i32 v28, v34, 0, 16 4647; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v47, 16, v33 4648; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v45, 16, v32 4649; GCN-NOHSA-VI-NEXT: v_bfe_i32 v46, v33, 0, 16 4650; GCN-NOHSA-VI-NEXT: v_bfe_i32 v44, v32, 0, 16 4651; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v35, 16, v39 4652; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v33, 16, v38 4653; GCN-NOHSA-VI-NEXT: v_bfe_i32 v34, v39, 0, 16 4654; GCN-NOHSA-VI-NEXT: v_bfe_i32 v32, v38, 0, 16 4655; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v51, 16, v37 4656; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v49, 16, v36 4657; GCN-NOHSA-VI-NEXT: v_bfe_i32 v50, v37, 0, 16 4658; GCN-NOHSA-VI-NEXT: v_bfe_i32 v48, v36, 0, 16 4659; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v39, 16, v23 4660; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v37, 16, v22 4661; GCN-NOHSA-VI-NEXT: v_bfe_i32 v38, v23, 0, 16 4662; GCN-NOHSA-VI-NEXT: v_bfe_i32 v36, v22, 0, 16 4663; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v53, 16, v20 4664; GCN-NOHSA-VI-NEXT: v_bfe_i32 v54, v21, 0, 16 4665; GCN-NOHSA-VI-NEXT: v_bfe_i32 v52, v20, 0, 16 4666; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v22, 16, v19 4667; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v20, 16, v18 4668; GCN-NOHSA-VI-NEXT: v_bfe_i32 v21, v19, 0, 16 4669; GCN-NOHSA-VI-NEXT: v_bfe_i32 v19, v18, 0, 16 4670; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v57, 16, v16 4671; GCN-NOHSA-VI-NEXT: v_bfe_i32 v58, v17, 0, 16 4672; GCN-NOHSA-VI-NEXT: v_bfe_i32 v56, v16, 0, 16 4673; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v18, 16, v15 4674; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v16, 16, v14 4675; GCN-NOHSA-VI-NEXT: v_bfe_i32 v17, v15, 0, 16 4676; GCN-NOHSA-VI-NEXT: v_bfe_i32 v15, v14, 0, 16 4677; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v61, 16, v12 4678; GCN-NOHSA-VI-NEXT: v_bfe_i32 v62, v13, 0, 16 4679; GCN-NOHSA-VI-NEXT: v_bfe_i32 v60, v12, 0, 16 4680; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v14, 16, v11 4681; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v12, 16, v10 4682; GCN-NOHSA-VI-NEXT: v_bfe_i32 v13, v11, 0, 16 4683; GCN-NOHSA-VI-NEXT: v_bfe_i32 v11, v10, 0, 16 4684; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:224 4685; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:240 4686; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[60:63], off, s[0:3], 0 offset:192 4687; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:208 4688; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[56:59], off, s[0:3], 0 offset:160 4689; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[19:22], off, s[0:3], 0 offset:176 4690; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[52:55], off, s[0:3], 0 offset:128 4691; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[36:39], off, s[0:3], 0 offset:144 4692; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[48:51], off, s[0:3], 0 offset:96 4693; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[32:35], off, s[0:3], 0 offset:112 4694; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[44:47], off, s[0:3], 0 offset:64 4695; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:80 4696; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[40:43], off, s[0:3], 0 offset:32 4697; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:48 4698; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 4699; GCN-NOHSA-VI-NEXT: buffer_load_dword v0, off, s[88:91], 0 offset:4 ; 4-byte Folded Reload 4700; GCN-NOHSA-VI-NEXT: buffer_load_dword v1, off, s[88:91], 0 offset:8 ; 4-byte Folded Reload 4701; GCN-NOHSA-VI-NEXT: buffer_load_dword v2, off, s[88:91], 0 offset:12 ; 4-byte Folded Reload 4702; GCN-NOHSA-VI-NEXT: buffer_load_dword v3, off, s[88:91], 0 offset:16 ; 4-byte Folded Reload 4703; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 4704; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 4705; GCN-NOHSA-VI-NEXT: s_endpgm 4706; 4707; EG-LABEL: global_sextload_v64i16_to_v64i32: 4708; EG: ; %bb.0: 4709; EG-NEXT: ALU 18, @38, KC0[CB0:0-32], KC1[] 4710; EG-NEXT: TEX 7 @22 4711; EG-NEXT: ALU 75, @57, KC0[CB0:0-32], KC1[] 4712; EG-NEXT: ALU 71, @133, KC0[CB0:0-32], KC1[] 4713; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T48.XYZW, T41.X, 0 4714; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T65.XYZW, T66.X, 0 4715; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T47.XYZW, T56.X, 0 4716; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T64.XYZW, T55.X, 0 4717; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T46.XYZW, T54.X, 0 4718; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T63.XYZW, T53.X, 0 4719; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T45.XYZW, T52.X, 0 4720; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T62.XYZW, T51.X, 0 4721; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T43.XYZW, T50.X, 0 4722; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T61.XYZW, T49.X, 0 4723; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T42.XYZW, T40.X, 0 4724; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T60.XYZW, T39.X, 0 4725; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T44.XYZW, T38.X, 0 4726; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T59.XYZW, T37.X, 0 4727; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T58.XYZW, T36.X, 0 4728; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T57.XYZW, T35.X, 1 4729; EG-NEXT: CF_END 4730; EG-NEXT: PAD 4731; EG-NEXT: Fetch clause starting at 22: 4732; EG-NEXT: VTX_READ_128 T42.XYZW, T41.X, 16, #1 4733; EG-NEXT: VTX_READ_128 T43.XYZW, T41.X, 32, #1 4734; EG-NEXT: VTX_READ_128 T44.XYZW, T41.X, 0, #1 4735; EG-NEXT: VTX_READ_128 T45.XYZW, T41.X, 48, #1 4736; EG-NEXT: VTX_READ_128 T46.XYZW, T41.X, 64, #1 4737; EG-NEXT: VTX_READ_128 T47.XYZW, T41.X, 80, #1 4738; EG-NEXT: VTX_READ_128 T48.XYZW, T41.X, 96, #1 4739; EG-NEXT: VTX_READ_128 T41.XYZW, T41.X, 112, #1 4740; EG-NEXT: ALU clause starting at 38: 4741; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 4742; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4743; EG-NEXT: LSHR T35.X, PV.W, literal.x, 4744; EG-NEXT: LSHR * T36.X, KC0[2].Y, literal.x, 4745; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 4746; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 4747; EG-NEXT: 48(6.726233e-44), 0(0.000000e+00) 4748; EG-NEXT: LSHR T37.X, PV.W, literal.x, 4749; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4750; EG-NEXT: 2(2.802597e-45), 32(4.484155e-44) 4751; EG-NEXT: LSHR T38.X, PV.W, literal.x, 4752; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4753; EG-NEXT: 2(2.802597e-45), 80(1.121039e-43) 4754; EG-NEXT: LSHR T39.X, PV.W, literal.x, 4755; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4756; EG-NEXT: 2(2.802597e-45), 64(8.968310e-44) 4757; EG-NEXT: LSHR T40.X, PV.W, literal.x, 4758; EG-NEXT: MOV * T41.X, KC0[2].Z, 4759; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 4760; EG-NEXT: ALU clause starting at 57: 4761; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 4762; EG-NEXT: 112(1.569454e-43), 0(0.000000e+00) 4763; EG-NEXT: LSHR T49.X, PV.W, literal.x, 4764; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4765; EG-NEXT: 2(2.802597e-45), 96(1.345247e-43) 4766; EG-NEXT: LSHR T50.X, PV.W, literal.x, 4767; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4768; EG-NEXT: 2(2.802597e-45), 144(2.017870e-43) 4769; EG-NEXT: LSHR T51.X, PV.W, literal.x, 4770; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4771; EG-NEXT: 2(2.802597e-45), 128(1.793662e-43) 4772; EG-NEXT: LSHR T52.X, PV.W, literal.x, 4773; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4774; EG-NEXT: 2(2.802597e-45), 176(2.466285e-43) 4775; EG-NEXT: LSHR T53.X, PV.W, literal.x, 4776; EG-NEXT: LSHR T0.Y, T41.Y, literal.y, 4777; EG-NEXT: LSHR T0.Z, T41.W, literal.y, 4778; EG-NEXT: LSHR T0.W, T48.Y, literal.y, BS:VEC_120/SCL_212 4779; EG-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 4780; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4781; EG-NEXT: 160(2.242078e-43), 0(0.000000e+00) 4782; EG-NEXT: LSHR T54.X, PS, literal.x, 4783; EG-NEXT: LSHR T1.Y, T48.W, literal.y, 4784; EG-NEXT: LSHR T1.Z, T47.Y, literal.y, 4785; EG-NEXT: LSHR T1.W, T47.W, literal.y, BS:VEC_120/SCL_212 4786; EG-NEXT: ADD_INT * T2.W, KC0[2].Y, literal.z, 4787; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4788; EG-NEXT: 208(2.914701e-43), 0(0.000000e+00) 4789; EG-NEXT: LSHR T55.X, PS, literal.x, 4790; EG-NEXT: LSHR T2.Y, T46.Y, literal.y, 4791; EG-NEXT: LSHR T2.Z, T46.W, literal.y, 4792; EG-NEXT: LSHR T2.W, T45.Y, literal.y, BS:VEC_120/SCL_212 4793; EG-NEXT: ADD_INT * T3.W, KC0[2].Y, literal.z, 4794; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4795; EG-NEXT: 192(2.690493e-43), 0(0.000000e+00) 4796; EG-NEXT: LSHR T56.X, PS, literal.x, 4797; EG-NEXT: LSHR T3.Y, T45.W, literal.y, 4798; EG-NEXT: BFE_INT T57.Z, T44.W, 0.0, literal.y, BS:VEC_120/SCL_212 4799; EG-NEXT: LSHR T3.W, T43.Y, literal.y, 4800; EG-NEXT: LSHR * T4.W, T43.W, literal.y, 4801; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4802; EG-NEXT: BFE_INT T57.X, T44.Z, 0.0, literal.x, 4803; EG-NEXT: LSHR T4.Y, T42.Y, literal.x, 4804; EG-NEXT: BFE_INT T58.Z, T44.Y, 0.0, literal.x, BS:VEC_120/SCL_212 4805; EG-NEXT: LSHR T5.W, T42.W, literal.x, 4806; EG-NEXT: LSHR * T6.W, T44.W, literal.x, 4807; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4808; EG-NEXT: BFE_INT T58.X, T44.X, 0.0, literal.x, 4809; EG-NEXT: LSHR T5.Y, T44.Y, literal.x, 4810; EG-NEXT: BFE_INT T59.Z, T42.W, 0.0, literal.x, 4811; EG-NEXT: BFE_INT T57.W, PS, 0.0, literal.x, 4812; EG-NEXT: LSHR * T6.W, T44.Z, literal.x, 4813; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4814; EG-NEXT: BFE_INT T59.X, T42.Z, 0.0, literal.x, 4815; EG-NEXT: BFE_INT T57.Y, PS, 0.0, literal.x, 4816; EG-NEXT: BFE_INT T44.Z, T42.Y, 0.0, literal.x, 4817; EG-NEXT: BFE_INT T58.W, PV.Y, 0.0, literal.x, 4818; EG-NEXT: LSHR * T6.W, T44.X, literal.x, 4819; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4820; EG-NEXT: BFE_INT T44.X, T42.X, 0.0, literal.x, 4821; EG-NEXT: BFE_INT T58.Y, PS, 0.0, literal.x, 4822; EG-NEXT: BFE_INT T60.Z, T43.W, 0.0, literal.x, 4823; EG-NEXT: BFE_INT T59.W, T5.W, 0.0, literal.x, BS:VEC_120/SCL_212 4824; EG-NEXT: LSHR * T5.W, T42.Z, literal.x, 4825; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4826; EG-NEXT: BFE_INT T60.X, T43.Z, 0.0, literal.x, 4827; EG-NEXT: BFE_INT T59.Y, PS, 0.0, literal.x, 4828; EG-NEXT: BFE_INT T42.Z, T43.Y, 0.0, literal.x, 4829; EG-NEXT: BFE_INT T44.W, T4.Y, 0.0, literal.x, BS:VEC_120/SCL_212 4830; EG-NEXT: LSHR * T5.W, T42.X, literal.x, 4831; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4832; EG-NEXT: BFE_INT T42.X, T43.X, 0.0, literal.x, 4833; EG-NEXT: BFE_INT T44.Y, PS, 0.0, literal.x, 4834; EG-NEXT: BFE_INT T61.Z, T45.W, 0.0, literal.x, 4835; EG-NEXT: BFE_INT * T60.W, T4.W, 0.0, literal.x, BS:VEC_120/SCL_212 4836; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4837; EG-NEXT: ALU clause starting at 133: 4838; EG-NEXT: LSHR * T4.W, T43.Z, literal.x, 4839; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4840; EG-NEXT: BFE_INT T61.X, T45.Z, 0.0, literal.x, 4841; EG-NEXT: BFE_INT T60.Y, PV.W, 0.0, literal.x, 4842; EG-NEXT: BFE_INT T43.Z, T45.Y, 0.0, literal.x, 4843; EG-NEXT: BFE_INT T42.W, T3.W, 0.0, literal.x, 4844; EG-NEXT: LSHR * T3.W, T43.X, literal.x, 4845; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4846; EG-NEXT: BFE_INT T43.X, T45.X, 0.0, literal.x, 4847; EG-NEXT: BFE_INT T42.Y, PS, 0.0, literal.x, 4848; EG-NEXT: BFE_INT T62.Z, T46.W, 0.0, literal.x, 4849; EG-NEXT: BFE_INT T61.W, T3.Y, 0.0, literal.x, 4850; EG-NEXT: LSHR * T3.W, T45.Z, literal.x, 4851; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4852; EG-NEXT: BFE_INT T62.X, T46.Z, 0.0, literal.x, 4853; EG-NEXT: BFE_INT T61.Y, PS, 0.0, literal.x, 4854; EG-NEXT: BFE_INT T45.Z, T46.Y, 0.0, literal.x, 4855; EG-NEXT: BFE_INT T43.W, T2.W, 0.0, literal.x, 4856; EG-NEXT: LSHR * T2.W, T45.X, literal.x, 4857; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4858; EG-NEXT: BFE_INT T45.X, T46.X, 0.0, literal.x, 4859; EG-NEXT: BFE_INT T43.Y, PS, 0.0, literal.x, 4860; EG-NEXT: BFE_INT T63.Z, T47.W, 0.0, literal.x, 4861; EG-NEXT: BFE_INT T62.W, T2.Z, 0.0, literal.x, 4862; EG-NEXT: LSHR * T2.W, T46.Z, literal.x, 4863; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4864; EG-NEXT: BFE_INT T63.X, T47.Z, 0.0, literal.x, 4865; EG-NEXT: BFE_INT T62.Y, PS, 0.0, literal.x, 4866; EG-NEXT: BFE_INT T46.Z, T47.Y, 0.0, literal.x, 4867; EG-NEXT: BFE_INT T45.W, T2.Y, 0.0, literal.x, BS:VEC_120/SCL_212 4868; EG-NEXT: LSHR * T2.W, T46.X, literal.x, 4869; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4870; EG-NEXT: BFE_INT T46.X, T47.X, 0.0, literal.x, 4871; EG-NEXT: BFE_INT T45.Y, PS, 0.0, literal.x, 4872; EG-NEXT: BFE_INT T64.Z, T48.W, 0.0, literal.x, 4873; EG-NEXT: BFE_INT T63.W, T1.W, 0.0, literal.x, BS:VEC_120/SCL_212 4874; EG-NEXT: LSHR * T1.W, T47.Z, literal.x, 4875; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4876; EG-NEXT: BFE_INT T64.X, T48.Z, 0.0, literal.x, 4877; EG-NEXT: BFE_INT T63.Y, PS, 0.0, literal.x, 4878; EG-NEXT: BFE_INT T47.Z, T48.Y, 0.0, literal.x, 4879; EG-NEXT: BFE_INT T46.W, T1.Z, 0.0, literal.x, BS:VEC_120/SCL_212 4880; EG-NEXT: LSHR * T1.W, T47.X, literal.x, 4881; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4882; EG-NEXT: BFE_INT T47.X, T48.X, 0.0, literal.x, 4883; EG-NEXT: BFE_INT T46.Y, PS, 0.0, literal.x, 4884; EG-NEXT: BFE_INT T65.Z, T41.W, 0.0, literal.x, 4885; EG-NEXT: BFE_INT T64.W, T1.Y, 0.0, literal.x, 4886; EG-NEXT: LSHR * T1.W, T48.Z, literal.x, 4887; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4888; EG-NEXT: BFE_INT T65.X, T41.Z, 0.0, literal.x, 4889; EG-NEXT: BFE_INT T64.Y, PS, 0.0, literal.x, 4890; EG-NEXT: BFE_INT T48.Z, T41.Y, 0.0, literal.x, 4891; EG-NEXT: BFE_INT T47.W, T0.W, 0.0, literal.x, 4892; EG-NEXT: LSHR * T0.W, T48.X, literal.x, 4893; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4894; EG-NEXT: BFE_INT T48.X, T41.X, 0.0, literal.x, 4895; EG-NEXT: BFE_INT T47.Y, PS, 0.0, literal.x, 4896; EG-NEXT: LSHR T1.Z, T41.Z, literal.x, 4897; EG-NEXT: BFE_INT T65.W, T0.Z, 0.0, literal.x, BS:VEC_120/SCL_212 4898; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4899; EG-NEXT: 16(2.242078e-44), 240(3.363116e-43) 4900; EG-NEXT: LSHR T66.X, PS, literal.x, 4901; EG-NEXT: BFE_INT T65.Y, PV.Z, 0.0, literal.y, 4902; EG-NEXT: LSHR T0.Z, T41.X, literal.y, 4903; EG-NEXT: BFE_INT T48.W, T0.Y, 0.0, literal.y, 4904; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 4905; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4906; EG-NEXT: 224(3.138909e-43), 0(0.000000e+00) 4907; EG-NEXT: LSHR T41.X, PS, literal.x, 4908; EG-NEXT: BFE_INT * T48.Y, PV.Z, 0.0, literal.y, 4909; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4910; 4911; CM-LABEL: global_sextload_v64i16_to_v64i32: 4912; CM: ; %bb.0: 4913; CM-NEXT: ALU 0, @40, KC0[CB0:0-32], KC1[] 4914; CM-NEXT: TEX 1 @24 4915; CM-NEXT: ALU 15, @41, KC0[CB0:0-32], KC1[] 4916; CM-NEXT: TEX 5 @28 4917; CM-NEXT: ALU 82, @57, KC0[CB0:0-32], KC1[] 4918; CM-NEXT: ALU 72, @140, KC0[CB0:0-32], KC1[] 4919; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T65, T66.X 4920; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T35, T36.X 4921; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T64, T56.X 4922; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T37, T55.X 4923; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T63, T54.X 4924; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T45, T53.X 4925; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T62, T52.X 4926; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T44, T51.X 4927; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T61, T50.X 4928; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T43, T49.X 4929; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T60, T48.X 4930; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T42, T47.X 4931; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T59, T46.X 4932; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T41, T40.X 4933; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T58, T39.X 4934; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T57, T38.X 4935; CM-NEXT: CF_END 4936; CM-NEXT: PAD 4937; CM-NEXT: Fetch clause starting at 24: 4938; CM-NEXT: VTX_READ_128 T35.XYZW, T37.X, 16, #1 4939; CM-NEXT: VTX_READ_128 T36.XYZW, T37.X, 0, #1 4940; CM-NEXT: Fetch clause starting at 28: 4941; CM-NEXT: VTX_READ_128 T41.XYZW, T37.X, 112, #1 4942; CM-NEXT: VTX_READ_128 T42.XYZW, T37.X, 96, #1 4943; CM-NEXT: VTX_READ_128 T43.XYZW, T37.X, 80, #1 4944; CM-NEXT: VTX_READ_128 T44.XYZW, T37.X, 64, #1 4945; CM-NEXT: VTX_READ_128 T45.XYZW, T37.X, 48, #1 4946; CM-NEXT: VTX_READ_128 T37.XYZW, T37.X, 32, #1 4947; CM-NEXT: ALU clause starting at 40: 4948; CM-NEXT: MOV * T37.X, KC0[2].Z, 4949; CM-NEXT: ALU clause starting at 41: 4950; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 4951; CM-NEXT: 224(3.138909e-43), 0(0.000000e+00) 4952; CM-NEXT: LSHR T38.X, PV.W, literal.x, 4953; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4954; CM-NEXT: 2(2.802597e-45), 240(3.363116e-43) 4955; CM-NEXT: LSHR T39.X, PV.W, literal.x, 4956; CM-NEXT: LSHR T0.Y, T36.Z, literal.y, 4957; CM-NEXT: LSHR T0.Z, T36.W, literal.y, 4958; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 4959; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4960; CM-NEXT: 192(2.690493e-43), 0(0.000000e+00) 4961; CM-NEXT: LSHR T40.X, PV.W, literal.x, 4962; CM-NEXT: LSHR T1.Y, T36.Y, literal.y, 4963; CM-NEXT: LSHR T1.Z, T35.Z, literal.y, 4964; CM-NEXT: LSHR * T0.W, T35.W, literal.y, 4965; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4966; CM-NEXT: ALU clause starting at 57: 4967; CM-NEXT: LSHR T2.Z, T35.X, literal.x, 4968; CM-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.y, 4969; CM-NEXT: 16(2.242078e-44), 208(2.914701e-43) 4970; CM-NEXT: LSHR T46.X, PV.W, literal.x, 4971; CM-NEXT: LSHR T2.Y, T35.Y, literal.y, 4972; CM-NEXT: LSHR T3.Z, T37.Z, literal.y, 4973; CM-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 4974; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4975; CM-NEXT: 160(2.242078e-43), 0(0.000000e+00) 4976; CM-NEXT: LSHR T47.X, PV.W, literal.x, 4977; CM-NEXT: LSHR T3.Y, T37.W, literal.y, 4978; CM-NEXT: LSHR T4.Z, T37.X, literal.y, 4979; CM-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 4980; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4981; CM-NEXT: 176(2.466285e-43), 0(0.000000e+00) 4982; CM-NEXT: LSHR T48.X, PV.W, literal.x, 4983; CM-NEXT: LSHR T4.Y, T37.Y, literal.y, 4984; CM-NEXT: LSHR T5.Z, T45.Z, literal.y, 4985; CM-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 4986; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4987; CM-NEXT: 128(1.793662e-43), 0(0.000000e+00) 4988; CM-NEXT: LSHR T49.X, PV.W, literal.x, 4989; CM-NEXT: LSHR T5.Y, T45.W, literal.y, 4990; CM-NEXT: LSHR T6.Z, T45.X, literal.y, 4991; CM-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 4992; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4993; CM-NEXT: 144(2.017870e-43), 0(0.000000e+00) 4994; CM-NEXT: LSHR T50.X, PV.W, literal.x, 4995; CM-NEXT: LSHR T6.Y, T45.Y, literal.y, 4996; CM-NEXT: LSHR T7.Z, T44.Z, literal.y, 4997; CM-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 4998; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4999; CM-NEXT: 96(1.345247e-43), 0(0.000000e+00) 5000; CM-NEXT: LSHR T51.X, PV.W, literal.x, 5001; CM-NEXT: LSHR T7.Y, T44.W, literal.y, 5002; CM-NEXT: LSHR T8.Z, T44.X, literal.y, 5003; CM-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 5004; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5005; CM-NEXT: 112(1.569454e-43), 0(0.000000e+00) 5006; CM-NEXT: LSHR T52.X, PV.W, literal.x, 5007; CM-NEXT: LSHR T8.Y, T44.Y, literal.y, 5008; CM-NEXT: LSHR T9.Z, T43.Z, literal.y, 5009; CM-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 5010; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5011; CM-NEXT: 64(8.968310e-44), 0(0.000000e+00) 5012; CM-NEXT: LSHR T53.X, PV.W, literal.x, 5013; CM-NEXT: LSHR T9.Y, T43.W, literal.y, 5014; CM-NEXT: LSHR T10.Z, T43.X, literal.y, 5015; CM-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 5016; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5017; CM-NEXT: 80(1.121039e-43), 0(0.000000e+00) 5018; CM-NEXT: LSHR T54.X, PV.W, literal.x, 5019; CM-NEXT: LSHR T10.Y, T43.Y, literal.y, 5020; CM-NEXT: LSHR T11.Z, T42.Z, literal.y, 5021; CM-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 5022; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5023; CM-NEXT: 32(4.484155e-44), 0(0.000000e+00) 5024; CM-NEXT: LSHR T55.X, PV.W, literal.x, 5025; CM-NEXT: LSHR T11.Y, T42.W, literal.y, 5026; CM-NEXT: LSHR T12.Z, T42.X, literal.y, 5027; CM-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 5028; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5029; CM-NEXT: 48(6.726233e-44), 0(0.000000e+00) 5030; CM-NEXT: LSHR T56.X, PV.W, literal.x, 5031; CM-NEXT: LSHR T12.Y, T42.Y, literal.y, 5032; CM-NEXT: BFE_INT T57.Z, T41.Y, 0.0, literal.y, BS:VEC_120/SCL_212 5033; CM-NEXT: LSHR * T1.W, T41.Z, literal.y, 5034; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5035; CM-NEXT: BFE_INT T57.X, T41.X, 0.0, literal.x, 5036; CM-NEXT: LSHR T13.Y, T41.W, literal.x, 5037; CM-NEXT: BFE_INT T58.Z, T41.W, 0.0, literal.x, 5038; CM-NEXT: LSHR * T2.W, T41.Y, literal.x, 5039; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5040; CM-NEXT: BFE_INT T58.X, T41.Z, 0.0, literal.x, 5041; CM-NEXT: LSHR T14.Y, T41.X, literal.x, 5042; CM-NEXT: BFE_INT T41.Z, T42.Y, 0.0, literal.x, 5043; CM-NEXT: BFE_INT * T57.W, PV.W, 0.0, literal.x, 5044; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5045; CM-NEXT: BFE_INT T41.X, T42.X, 0.0, literal.x, 5046; CM-NEXT: BFE_INT T57.Y, PV.Y, 0.0, literal.x, 5047; CM-NEXT: BFE_INT T59.Z, T42.W, 0.0, literal.x, 5048; CM-NEXT: BFE_INT * T58.W, T13.Y, 0.0, literal.x, 5049; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5050; CM-NEXT: ALU clause starting at 140: 5051; CM-NEXT: BFE_INT T59.X, T42.Z, 0.0, literal.x, 5052; CM-NEXT: BFE_INT T58.Y, T1.W, 0.0, literal.x, 5053; CM-NEXT: BFE_INT T42.Z, T43.Y, 0.0, literal.x, 5054; CM-NEXT: BFE_INT * T41.W, T12.Y, 0.0, literal.x, BS:VEC_120/SCL_212 5055; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5056; CM-NEXT: BFE_INT T42.X, T43.X, 0.0, literal.x, 5057; CM-NEXT: BFE_INT T41.Y, T12.Z, 0.0, literal.x, 5058; CM-NEXT: BFE_INT T60.Z, T43.W, 0.0, literal.x, 5059; CM-NEXT: BFE_INT * T59.W, T11.Y, 0.0, literal.x, 5060; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5061; CM-NEXT: BFE_INT T60.X, T43.Z, 0.0, literal.x, 5062; CM-NEXT: BFE_INT T59.Y, T11.Z, 0.0, literal.x, BS:VEC_120/SCL_212 5063; CM-NEXT: BFE_INT T43.Z, T44.Y, 0.0, literal.x, 5064; CM-NEXT: BFE_INT * T42.W, T10.Y, 0.0, literal.x, BS:VEC_120/SCL_212 5065; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5066; CM-NEXT: BFE_INT T43.X, T44.X, 0.0, literal.x, 5067; CM-NEXT: BFE_INT T42.Y, T10.Z, 0.0, literal.x, 5068; CM-NEXT: BFE_INT T61.Z, T44.W, 0.0, literal.x, 5069; CM-NEXT: BFE_INT * T60.W, T9.Y, 0.0, literal.x, 5070; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5071; CM-NEXT: BFE_INT T61.X, T44.Z, 0.0, literal.x, 5072; CM-NEXT: BFE_INT T60.Y, T9.Z, 0.0, literal.x, BS:VEC_120/SCL_212 5073; CM-NEXT: BFE_INT T44.Z, T45.Y, 0.0, literal.x, 5074; CM-NEXT: BFE_INT * T43.W, T8.Y, 0.0, literal.x, BS:VEC_120/SCL_212 5075; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5076; CM-NEXT: BFE_INT T44.X, T45.X, 0.0, literal.x, 5077; CM-NEXT: BFE_INT T43.Y, T8.Z, 0.0, literal.x, 5078; CM-NEXT: BFE_INT T62.Z, T45.W, 0.0, literal.x, 5079; CM-NEXT: BFE_INT * T61.W, T7.Y, 0.0, literal.x, 5080; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5081; CM-NEXT: BFE_INT T62.X, T45.Z, 0.0, literal.x, 5082; CM-NEXT: BFE_INT T61.Y, T7.Z, 0.0, literal.x, BS:VEC_120/SCL_212 5083; CM-NEXT: BFE_INT T45.Z, T37.Y, 0.0, literal.x, 5084; CM-NEXT: BFE_INT * T44.W, T6.Y, 0.0, literal.x, BS:VEC_120/SCL_212 5085; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5086; CM-NEXT: BFE_INT T45.X, T37.X, 0.0, literal.x, 5087; CM-NEXT: BFE_INT T44.Y, T6.Z, 0.0, literal.x, 5088; CM-NEXT: BFE_INT T63.Z, T37.W, 0.0, literal.x, 5089; CM-NEXT: BFE_INT * T62.W, T5.Y, 0.0, literal.x, 5090; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5091; CM-NEXT: BFE_INT T63.X, T37.Z, 0.0, literal.x, 5092; CM-NEXT: BFE_INT T62.Y, T5.Z, 0.0, literal.x, BS:VEC_120/SCL_212 5093; CM-NEXT: BFE_INT T37.Z, T35.Y, 0.0, literal.x, 5094; CM-NEXT: BFE_INT * T45.W, T4.Y, 0.0, literal.x, BS:VEC_120/SCL_212 5095; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5096; CM-NEXT: BFE_INT T37.X, T35.X, 0.0, literal.x, 5097; CM-NEXT: BFE_INT T45.Y, T4.Z, 0.0, literal.x, 5098; CM-NEXT: BFE_INT T64.Z, T35.W, 0.0, literal.x, 5099; CM-NEXT: BFE_INT * T63.W, T3.Y, 0.0, literal.x, 5100; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5101; CM-NEXT: BFE_INT T64.X, T35.Z, 0.0, literal.x, 5102; CM-NEXT: BFE_INT T63.Y, T3.Z, 0.0, literal.x, BS:VEC_120/SCL_212 5103; CM-NEXT: BFE_INT T35.Z, T36.Y, 0.0, literal.x, 5104; CM-NEXT: BFE_INT * T37.W, T2.Y, 0.0, literal.x, BS:VEC_120/SCL_212 5105; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5106; CM-NEXT: BFE_INT T35.X, T36.X, 0.0, literal.x, 5107; CM-NEXT: BFE_INT T37.Y, T2.Z, 0.0, literal.x, 5108; CM-NEXT: BFE_INT T65.Z, T36.W, 0.0, literal.x, 5109; CM-NEXT: BFE_INT * T64.W, T0.W, 0.0, literal.x, BS:VEC_120/SCL_212 5110; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5111; CM-NEXT: BFE_INT T65.X, T36.Z, 0.0, literal.x, 5112; CM-NEXT: BFE_INT T64.Y, T1.Z, 0.0, literal.x, BS:VEC_120/SCL_212 5113; CM-NEXT: LSHR T1.Z, T36.X, literal.x, 5114; CM-NEXT: BFE_INT * T35.W, T1.Y, 0.0, literal.x, 5115; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5116; CM-NEXT: LSHR T36.X, KC0[2].Y, literal.x, 5117; CM-NEXT: BFE_INT T35.Y, PV.Z, 0.0, literal.y, 5118; CM-NEXT: ADD_INT T1.Z, KC0[2].Y, literal.y, 5119; CM-NEXT: BFE_INT * T65.W, T0.Z, 0.0, literal.y, 5120; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5121; CM-NEXT: LSHR T66.X, PV.Z, literal.x, 5122; CM-NEXT: BFE_INT * T65.Y, T0.Y, 0.0, literal.y, 5123; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5124 %load = load <64 x i16>, <64 x i16> addrspace(1)* %in 5125 %ext = sext <64 x i16> %load to <64 x i32> 5126 store <64 x i32> %ext, <64 x i32> addrspace(1)* %out 5127 ret void 5128} 5129 5130define amdgpu_kernel void @global_zextload_i16_to_i64(i64 addrspace(1)* %out, i16 addrspace(1)* %in) #0 { 5131; GCN-NOHSA-SI-LABEL: global_zextload_i16_to_i64: 5132; GCN-NOHSA-SI: ; %bb.0: 5133; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 5134; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 5135; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 5136; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 5137; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 5138; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5139; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 5140; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 5141; GCN-NOHSA-SI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 5142; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 5143; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 5144; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, 0 5145; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 5146; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 5147; GCN-NOHSA-SI-NEXT: s_endpgm 5148; 5149; GCN-HSA-LABEL: global_zextload_i16_to_i64: 5150; GCN-HSA: ; %bb.0: 5151; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 5152; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5153; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 5154; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 5155; GCN-HSA-NEXT: flat_load_ushort v0, v[0:1] 5156; GCN-HSA-NEXT: v_mov_b32_e32 v2, s0 5157; GCN-HSA-NEXT: v_mov_b32_e32 v3, s1 5158; GCN-HSA-NEXT: v_mov_b32_e32 v1, 0 5159; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 5160; GCN-HSA-NEXT: flat_store_dwordx2 v[2:3], v[0:1] 5161; GCN-HSA-NEXT: s_endpgm 5162; 5163; GCN-NOHSA-VI-LABEL: global_zextload_i16_to_i64: 5164; GCN-NOHSA-VI: ; %bb.0: 5165; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 5166; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 5167; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 5168; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 5169; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 5170; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5171; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 5172; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 5173; GCN-NOHSA-VI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 5174; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 5175; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 5176; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, 0 5177; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 5178; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, 0xffff, v0 5179; GCN-NOHSA-VI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 5180; GCN-NOHSA-VI-NEXT: s_endpgm 5181; 5182; EG-LABEL: global_zextload_i16_to_i64: 5183; EG: ; %bb.0: 5184; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5185; EG-NEXT: TEX 0 @6 5186; EG-NEXT: ALU 2, @9, KC0[CB0:0-32], KC1[] 5187; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1 5188; EG-NEXT: CF_END 5189; EG-NEXT: PAD 5190; EG-NEXT: Fetch clause starting at 6: 5191; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 5192; EG-NEXT: ALU clause starting at 8: 5193; EG-NEXT: MOV * T0.X, KC0[2].Z, 5194; EG-NEXT: ALU clause starting at 9: 5195; EG-NEXT: MOV * T0.Y, 0.0, 5196; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 5197; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 5198; 5199; CM-LABEL: global_zextload_i16_to_i64: 5200; CM: ; %bb.0: 5201; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5202; CM-NEXT: TEX 0 @6 5203; CM-NEXT: ALU 2, @9, KC0[CB0:0-32], KC1[] 5204; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T0, T1.X 5205; CM-NEXT: CF_END 5206; CM-NEXT: PAD 5207; CM-NEXT: Fetch clause starting at 6: 5208; CM-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 5209; CM-NEXT: ALU clause starting at 8: 5210; CM-NEXT: MOV * T0.X, KC0[2].Z, 5211; CM-NEXT: ALU clause starting at 9: 5212; CM-NEXT: MOV * T0.Y, 0.0, 5213; CM-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 5214; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 5215 %a = load i16, i16 addrspace(1)* %in 5216 %ext = zext i16 %a to i64 5217 store i64 %ext, i64 addrspace(1)* %out 5218 ret void 5219} 5220 5221; FIXME: Need to optimize this sequence to avoid extra bfe: 5222; t28: i32,ch = load<LD2[%in(addrspace=1)], anyext from i16> t12, t27, undef:i64 5223; t31: i64 = any_extend t28 5224; t33: i64 = sign_extend_inreg t31, ValueType:ch:i16 5225 5226; TODO: These could be expanded earlier using ASHR 15 5227define amdgpu_kernel void @global_sextload_i16_to_i64(i64 addrspace(1)* %out, i16 addrspace(1)* %in) #0 { 5228; GCN-NOHSA-SI-LABEL: global_sextload_i16_to_i64: 5229; GCN-NOHSA-SI: ; %bb.0: 5230; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 5231; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 5232; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 5233; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 5234; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 5235; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5236; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 5237; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 5238; GCN-NOHSA-SI-NEXT: buffer_load_sshort v0, off, s[8:11], 0 5239; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 5240; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 5241; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 5242; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5243; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 5244; GCN-NOHSA-SI-NEXT: s_endpgm 5245; 5246; GCN-HSA-LABEL: global_sextload_i16_to_i64: 5247; GCN-HSA: ; %bb.0: 5248; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 5249; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5250; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 5251; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 5252; GCN-HSA-NEXT: flat_load_sshort v0, v[0:1] 5253; GCN-HSA-NEXT: v_mov_b32_e32 v2, s0 5254; GCN-HSA-NEXT: v_mov_b32_e32 v3, s1 5255; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 5256; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5257; GCN-HSA-NEXT: flat_store_dwordx2 v[2:3], v[0:1] 5258; GCN-HSA-NEXT: s_endpgm 5259; 5260; GCN-NOHSA-VI-LABEL: global_sextload_i16_to_i64: 5261; GCN-NOHSA-VI: ; %bb.0: 5262; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 5263; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 5264; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 5265; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 5266; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 5267; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5268; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 5269; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 5270; GCN-NOHSA-VI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 5271; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 5272; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 5273; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 5274; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v0, 0, 16 5275; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5276; GCN-NOHSA-VI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 5277; GCN-NOHSA-VI-NEXT: s_endpgm 5278; 5279; EG-LABEL: global_sextload_i16_to_i64: 5280; EG: ; %bb.0: 5281; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5282; EG-NEXT: TEX 0 @6 5283; EG-NEXT: ALU 4, @9, KC0[CB0:0-32], KC1[] 5284; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1 5285; EG-NEXT: CF_END 5286; EG-NEXT: PAD 5287; EG-NEXT: Fetch clause starting at 6: 5288; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 5289; EG-NEXT: ALU clause starting at 8: 5290; EG-NEXT: MOV * T0.X, KC0[2].Z, 5291; EG-NEXT: ALU clause starting at 9: 5292; EG-NEXT: BFE_INT T0.X, T0.X, 0.0, literal.x, 5293; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.y, 5294; EG-NEXT: 16(2.242078e-44), 2(2.802597e-45) 5295; EG-NEXT: ASHR * T0.Y, PV.X, literal.x, 5296; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 5297; 5298; CM-LABEL: global_sextload_i16_to_i64: 5299; CM: ; %bb.0: 5300; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5301; CM-NEXT: TEX 0 @6 5302; CM-NEXT: ALU 4, @9, KC0[CB0:0-32], KC1[] 5303; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T0, T1.X 5304; CM-NEXT: CF_END 5305; CM-NEXT: PAD 5306; CM-NEXT: Fetch clause starting at 6: 5307; CM-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 5308; CM-NEXT: ALU clause starting at 8: 5309; CM-NEXT: MOV * T0.X, KC0[2].Z, 5310; CM-NEXT: ALU clause starting at 9: 5311; CM-NEXT: BFE_INT * T0.X, T0.X, 0.0, literal.x, 5312; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5313; CM-NEXT: LSHR T1.X, KC0[2].Y, literal.x, 5314; CM-NEXT: ASHR * T0.Y, PV.X, literal.y, 5315; CM-NEXT: 2(2.802597e-45), 31(4.344025e-44) 5316 %a = load i16, i16 addrspace(1)* %in 5317 %ext = sext i16 %a to i64 5318 store i64 %ext, i64 addrspace(1)* %out 5319 ret void 5320} 5321 5322define amdgpu_kernel void @global_zextload_v1i16_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i16> addrspace(1)* %in) #0 { 5323; GCN-NOHSA-SI-LABEL: global_zextload_v1i16_to_v1i64: 5324; GCN-NOHSA-SI: ; %bb.0: 5325; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 5326; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 5327; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 5328; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 5329; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 5330; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5331; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 5332; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 5333; GCN-NOHSA-SI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 5334; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 5335; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 5336; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, 0 5337; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 5338; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 5339; GCN-NOHSA-SI-NEXT: s_endpgm 5340; 5341; GCN-HSA-LABEL: global_zextload_v1i16_to_v1i64: 5342; GCN-HSA: ; %bb.0: 5343; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 5344; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5345; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 5346; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 5347; GCN-HSA-NEXT: flat_load_ushort v0, v[0:1] 5348; GCN-HSA-NEXT: v_mov_b32_e32 v2, s0 5349; GCN-HSA-NEXT: v_mov_b32_e32 v3, s1 5350; GCN-HSA-NEXT: v_mov_b32_e32 v1, 0 5351; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 5352; GCN-HSA-NEXT: flat_store_dwordx2 v[2:3], v[0:1] 5353; GCN-HSA-NEXT: s_endpgm 5354; 5355; GCN-NOHSA-VI-LABEL: global_zextload_v1i16_to_v1i64: 5356; GCN-NOHSA-VI: ; %bb.0: 5357; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 5358; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 5359; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 5360; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 5361; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 5362; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5363; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 5364; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 5365; GCN-NOHSA-VI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 5366; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 5367; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 5368; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, 0 5369; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 5370; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, 0xffff, v0 5371; GCN-NOHSA-VI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 5372; GCN-NOHSA-VI-NEXT: s_endpgm 5373; 5374; EG-LABEL: global_zextload_v1i16_to_v1i64: 5375; EG: ; %bb.0: 5376; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5377; EG-NEXT: TEX 0 @6 5378; EG-NEXT: ALU 2, @9, KC0[CB0:0-32], KC1[] 5379; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1 5380; EG-NEXT: CF_END 5381; EG-NEXT: PAD 5382; EG-NEXT: Fetch clause starting at 6: 5383; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 5384; EG-NEXT: ALU clause starting at 8: 5385; EG-NEXT: MOV * T0.X, KC0[2].Z, 5386; EG-NEXT: ALU clause starting at 9: 5387; EG-NEXT: MOV * T0.Y, 0.0, 5388; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 5389; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 5390; 5391; CM-LABEL: global_zextload_v1i16_to_v1i64: 5392; CM: ; %bb.0: 5393; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5394; CM-NEXT: TEX 0 @6 5395; CM-NEXT: ALU 2, @9, KC0[CB0:0-32], KC1[] 5396; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T0, T1.X 5397; CM-NEXT: CF_END 5398; CM-NEXT: PAD 5399; CM-NEXT: Fetch clause starting at 6: 5400; CM-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 5401; CM-NEXT: ALU clause starting at 8: 5402; CM-NEXT: MOV * T0.X, KC0[2].Z, 5403; CM-NEXT: ALU clause starting at 9: 5404; CM-NEXT: MOV * T0.Y, 0.0, 5405; CM-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 5406; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 5407 %load = load <1 x i16>, <1 x i16> addrspace(1)* %in 5408 %ext = zext <1 x i16> %load to <1 x i64> 5409 store <1 x i64> %ext, <1 x i64> addrspace(1)* %out 5410 ret void 5411} 5412 5413; TODO: These could be expanded earlier using ASHR 15 5414define amdgpu_kernel void @global_sextload_v1i16_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i16> addrspace(1)* %in) #0 { 5415; GCN-NOHSA-SI-LABEL: global_sextload_v1i16_to_v1i64: 5416; GCN-NOHSA-SI: ; %bb.0: 5417; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 5418; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 5419; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 5420; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 5421; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 5422; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5423; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 5424; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 5425; GCN-NOHSA-SI-NEXT: buffer_load_sshort v0, off, s[8:11], 0 5426; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 5427; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 5428; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 5429; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5430; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 5431; GCN-NOHSA-SI-NEXT: s_endpgm 5432; 5433; GCN-HSA-LABEL: global_sextload_v1i16_to_v1i64: 5434; GCN-HSA: ; %bb.0: 5435; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 5436; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5437; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 5438; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 5439; GCN-HSA-NEXT: flat_load_sshort v0, v[0:1] 5440; GCN-HSA-NEXT: v_mov_b32_e32 v2, s0 5441; GCN-HSA-NEXT: v_mov_b32_e32 v3, s1 5442; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 5443; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5444; GCN-HSA-NEXT: flat_store_dwordx2 v[2:3], v[0:1] 5445; GCN-HSA-NEXT: s_endpgm 5446; 5447; GCN-NOHSA-VI-LABEL: global_sextload_v1i16_to_v1i64: 5448; GCN-NOHSA-VI: ; %bb.0: 5449; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 5450; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 5451; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 5452; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 5453; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 5454; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5455; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 5456; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 5457; GCN-NOHSA-VI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 5458; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 5459; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 5460; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 5461; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v0, 0, 16 5462; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5463; GCN-NOHSA-VI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 5464; GCN-NOHSA-VI-NEXT: s_endpgm 5465; 5466; EG-LABEL: global_sextload_v1i16_to_v1i64: 5467; EG: ; %bb.0: 5468; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5469; EG-NEXT: TEX 0 @6 5470; EG-NEXT: ALU 4, @9, KC0[CB0:0-32], KC1[] 5471; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1 5472; EG-NEXT: CF_END 5473; EG-NEXT: PAD 5474; EG-NEXT: Fetch clause starting at 6: 5475; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 5476; EG-NEXT: ALU clause starting at 8: 5477; EG-NEXT: MOV * T0.X, KC0[2].Z, 5478; EG-NEXT: ALU clause starting at 9: 5479; EG-NEXT: BFE_INT T0.X, T0.X, 0.0, literal.x, 5480; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.y, 5481; EG-NEXT: 16(2.242078e-44), 2(2.802597e-45) 5482; EG-NEXT: ASHR * T0.Y, PV.X, literal.x, 5483; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 5484; 5485; CM-LABEL: global_sextload_v1i16_to_v1i64: 5486; CM: ; %bb.0: 5487; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5488; CM-NEXT: TEX 0 @6 5489; CM-NEXT: ALU 4, @9, KC0[CB0:0-32], KC1[] 5490; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T0, T1.X 5491; CM-NEXT: CF_END 5492; CM-NEXT: PAD 5493; CM-NEXT: Fetch clause starting at 6: 5494; CM-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 5495; CM-NEXT: ALU clause starting at 8: 5496; CM-NEXT: MOV * T0.X, KC0[2].Z, 5497; CM-NEXT: ALU clause starting at 9: 5498; CM-NEXT: BFE_INT * T0.X, T0.X, 0.0, literal.x, 5499; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5500; CM-NEXT: LSHR T1.X, KC0[2].Y, literal.x, 5501; CM-NEXT: ASHR * T0.Y, PV.X, literal.y, 5502; CM-NEXT: 2(2.802597e-45), 31(4.344025e-44) 5503 %load = load <1 x i16>, <1 x i16> addrspace(1)* %in 5504 %ext = sext <1 x i16> %load to <1 x i64> 5505 store <1 x i64> %ext, <1 x i64> addrspace(1)* %out 5506 ret void 5507} 5508 5509define amdgpu_kernel void @global_zextload_v2i16_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i16> addrspace(1)* %in) #0 { 5510; GCN-NOHSA-SI-LABEL: global_zextload_v2i16_to_v2i64: 5511; GCN-NOHSA-SI: ; %bb.0: 5512; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 5513; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 5514; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 5515; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 5516; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 5517; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5518; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 5519; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 5520; GCN-NOHSA-SI-NEXT: buffer_load_dword v0, off, s[8:11], 0 5521; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, 0 5522; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 5523; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 5524; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 5525; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v2, 16, v0 5526; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v0, 0xffff, v0 5527; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, v1 5528; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 5529; GCN-NOHSA-SI-NEXT: s_endpgm 5530; 5531; GCN-HSA-LABEL: global_zextload_v2i16_to_v2i64: 5532; GCN-HSA: ; %bb.0: 5533; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 5534; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5535; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 5536; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 5537; GCN-HSA-NEXT: flat_load_dword v0, v[0:1] 5538; GCN-HSA-NEXT: v_mov_b32_e32 v1, 0 5539; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 5540; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 5541; GCN-HSA-NEXT: v_mov_b32_e32 v3, v1 5542; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 5543; GCN-HSA-NEXT: v_lshrrev_b32_e32 v2, 16, v0 5544; GCN-HSA-NEXT: v_and_b32_e32 v0, 0xffff, v0 5545; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5546; GCN-HSA-NEXT: s_endpgm 5547; 5548; GCN-NOHSA-VI-LABEL: global_zextload_v2i16_to_v2i64: 5549; GCN-NOHSA-VI: ; %bb.0: 5550; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 5551; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 5552; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 5553; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 5554; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 5555; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5556; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 5557; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 5558; GCN-NOHSA-VI-NEXT: buffer_load_dword v0, off, s[8:11], 0 5559; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, 0 5560; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 5561; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 5562; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, v1 5563; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 5564; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v2, 16, v0 5565; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, 0xffff, v0 5566; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 5567; GCN-NOHSA-VI-NEXT: s_endpgm 5568; 5569; EG-LABEL: global_zextload_v2i16_to_v2i64: 5570; EG: ; %bb.0: 5571; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5572; EG-NEXT: TEX 0 @6 5573; EG-NEXT: ALU 6, @9, KC0[CB0:0-32], KC1[] 5574; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T4.XYZW, T5.X, 1 5575; EG-NEXT: CF_END 5576; EG-NEXT: PAD 5577; EG-NEXT: Fetch clause starting at 6: 5578; EG-NEXT: VTX_READ_32 T4.X, T4.X, 0, #1 5579; EG-NEXT: ALU clause starting at 8: 5580; EG-NEXT: MOV * T4.X, KC0[2].Z, 5581; EG-NEXT: ALU clause starting at 9: 5582; EG-NEXT: LSHR * T4.Z, T4.X, literal.x, 5583; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5584; EG-NEXT: AND_INT T4.X, T4.X, literal.x, 5585; EG-NEXT: MOV T4.Y, 0.0, 5586; EG-NEXT: MOV T4.W, 0.0, 5587; EG-NEXT: LSHR * T5.X, KC0[2].Y, literal.y, 5588; EG-NEXT: 65535(9.183409e-41), 2(2.802597e-45) 5589; 5590; CM-LABEL: global_zextload_v2i16_to_v2i64: 5591; CM: ; %bb.0: 5592; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5593; CM-NEXT: TEX 0 @6 5594; CM-NEXT: ALU 7, @9, KC0[CB0:0-32], KC1[] 5595; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T4, T5.X 5596; CM-NEXT: CF_END 5597; CM-NEXT: PAD 5598; CM-NEXT: Fetch clause starting at 6: 5599; CM-NEXT: VTX_READ_32 T4.X, T4.X, 0, #1 5600; CM-NEXT: ALU clause starting at 8: 5601; CM-NEXT: MOV * T4.X, KC0[2].Z, 5602; CM-NEXT: ALU clause starting at 9: 5603; CM-NEXT: LSHR * T4.Z, T4.X, literal.x, 5604; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5605; CM-NEXT: AND_INT T4.X, T4.X, literal.x, 5606; CM-NEXT: MOV T4.Y, 0.0, 5607; CM-NEXT: MOV * T4.W, 0.0, 5608; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 5609; CM-NEXT: LSHR * T5.X, KC0[2].Y, literal.x, 5610; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 5611 %load = load <2 x i16>, <2 x i16> addrspace(1)* %in 5612 %ext = zext <2 x i16> %load to <2 x i64> 5613 store <2 x i64> %ext, <2 x i64> addrspace(1)* %out 5614 ret void 5615} 5616 5617define amdgpu_kernel void @global_sextload_v2i16_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i16> addrspace(1)* %in) #0 { 5618; GCN-NOHSA-SI-LABEL: global_sextload_v2i16_to_v2i64: 5619; GCN-NOHSA-SI: ; %bb.0: 5620; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 5621; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 5622; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 5623; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 5624; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 5625; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5626; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 5627; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 5628; GCN-NOHSA-SI-NEXT: buffer_load_dword v0, off, s[8:11], 0 5629; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 5630; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 5631; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 5632; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v2, 16, v0 5633; GCN-NOHSA-SI-NEXT: v_bfe_i32 v0, v0, 0, 16 5634; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5635; GCN-NOHSA-SI-NEXT: v_bfe_i32 v2, v2, 0, 16 5636; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v3, 31, v2 5637; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 5638; GCN-NOHSA-SI-NEXT: s_endpgm 5639; 5640; GCN-HSA-LABEL: global_sextload_v2i16_to_v2i64: 5641; GCN-HSA: ; %bb.0: 5642; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 5643; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5644; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 5645; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 5646; GCN-HSA-NEXT: flat_load_dword v0, v[0:1] 5647; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 5648; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 5649; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 5650; GCN-HSA-NEXT: v_lshrrev_b32_e32 v2, 16, v0 5651; GCN-HSA-NEXT: v_bfe_i32 v0, v0, 0, 16 5652; GCN-HSA-NEXT: v_bfe_i32 v2, v2, 0, 16 5653; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5654; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 31, v2 5655; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5656; GCN-HSA-NEXT: s_endpgm 5657; 5658; GCN-NOHSA-VI-LABEL: global_sextload_v2i16_to_v2i64: 5659; GCN-NOHSA-VI: ; %bb.0: 5660; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 5661; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 5662; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 5663; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 5664; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 5665; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5666; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 5667; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 5668; GCN-NOHSA-VI-NEXT: buffer_load_dword v1, off, s[8:11], 0 5669; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 5670; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 5671; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 5672; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v2, 16, v1 5673; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v1, 0, 16 5674; GCN-NOHSA-VI-NEXT: v_bfe_i32 v2, v2, 0, 16 5675; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5676; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v3, 31, v2 5677; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 5678; GCN-NOHSA-VI-NEXT: s_endpgm 5679; 5680; EG-LABEL: global_sextload_v2i16_to_v2i64: 5681; EG: ; %bb.0: 5682; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5683; EG-NEXT: TEX 0 @6 5684; EG-NEXT: ALU 8, @9, KC0[CB0:0-32], KC1[] 5685; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T4.XYZW, T5.X, 1 5686; EG-NEXT: CF_END 5687; EG-NEXT: PAD 5688; EG-NEXT: Fetch clause starting at 6: 5689; EG-NEXT: VTX_READ_32 T4.X, T4.X, 0, #1 5690; EG-NEXT: ALU clause starting at 8: 5691; EG-NEXT: MOV * T4.X, KC0[2].Z, 5692; EG-NEXT: ALU clause starting at 9: 5693; EG-NEXT: ASHR * T4.W, T4.X, literal.x, 5694; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 5695; EG-NEXT: ASHR * T4.Z, T4.X, literal.x, 5696; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5697; EG-NEXT: BFE_INT T4.X, T4.X, 0.0, literal.x, 5698; EG-NEXT: LSHR * T5.X, KC0[2].Y, literal.y, 5699; EG-NEXT: 16(2.242078e-44), 2(2.802597e-45) 5700; EG-NEXT: ASHR * T4.Y, PV.X, literal.x, 5701; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 5702; 5703; CM-LABEL: global_sextload_v2i16_to_v2i64: 5704; CM: ; %bb.0: 5705; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5706; CM-NEXT: TEX 0 @6 5707; CM-NEXT: ALU 8, @9, KC0[CB0:0-32], KC1[] 5708; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T4, T5.X 5709; CM-NEXT: CF_END 5710; CM-NEXT: PAD 5711; CM-NEXT: Fetch clause starting at 6: 5712; CM-NEXT: VTX_READ_32 T4.X, T4.X, 0, #1 5713; CM-NEXT: ALU clause starting at 8: 5714; CM-NEXT: MOV * T4.X, KC0[2].Z, 5715; CM-NEXT: ALU clause starting at 9: 5716; CM-NEXT: ASHR * T4.W, T4.X, literal.x, 5717; CM-NEXT: 31(4.344025e-44), 0(0.000000e+00) 5718; CM-NEXT: ASHR * T4.Z, T4.X, literal.x, 5719; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5720; CM-NEXT: BFE_INT * T4.X, T4.X, 0.0, literal.x, 5721; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5722; CM-NEXT: LSHR T5.X, KC0[2].Y, literal.x, 5723; CM-NEXT: ASHR * T4.Y, PV.X, literal.y, 5724; CM-NEXT: 2(2.802597e-45), 31(4.344025e-44) 5725 %load = load <2 x i16>, <2 x i16> addrspace(1)* %in 5726 %ext = sext <2 x i16> %load to <2 x i64> 5727 store <2 x i64> %ext, <2 x i64> addrspace(1)* %out 5728 ret void 5729} 5730 5731define amdgpu_kernel void @global_zextload_v4i16_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i16> addrspace(1)* %in) #0 { 5732; GCN-NOHSA-SI-LABEL: global_zextload_v4i16_to_v4i64: 5733; GCN-NOHSA-SI: ; %bb.0: 5734; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 5735; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 5736; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 5737; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 5738; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 5739; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5740; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 5741; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 5742; GCN-NOHSA-SI-NEXT: buffer_load_dwordx2 v[8:9], off, s[8:11], 0 5743; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, 0 5744; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, v1 5745; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v5, v1 5746; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v7, v1 5747; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 5748; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 5749; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 5750; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v2, 16, v9 5751; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v6, 16, v8 5752; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v4, 0xffff, v8 5753; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v0, 0xffff, v9 5754; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 offset:16 5755; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 5756; GCN-NOHSA-SI-NEXT: s_endpgm 5757; 5758; GCN-HSA-LABEL: global_zextload_v4i16_to_v4i64: 5759; GCN-HSA: ; %bb.0: 5760; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 5761; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5762; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 5763; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 5764; GCN-HSA-NEXT: flat_load_dwordx2 v[8:9], v[0:1] 5765; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 5766; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 5767; GCN-HSA-NEXT: v_mov_b32_e32 v1, 0 5768; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 5769; GCN-HSA-NEXT: v_mov_b32_e32 v3, v1 5770; GCN-HSA-NEXT: v_mov_b32_e32 v11, s1 5771; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 5772; GCN-HSA-NEXT: v_mov_b32_e32 v5, v1 5773; GCN-HSA-NEXT: v_mov_b32_e32 v7, v1 5774; GCN-HSA-NEXT: v_mov_b32_e32 v10, s0 5775; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 5776; GCN-HSA-NEXT: v_lshrrev_b32_e32 v2, 16, v9 5777; GCN-HSA-NEXT: v_and_b32_e32 v0, 0xffff, v9 5778; GCN-HSA-NEXT: v_lshrrev_b32_e32 v6, 16, v8 5779; GCN-HSA-NEXT: v_and_b32_e32 v4, 0xffff, v8 5780; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[0:3] 5781; GCN-HSA-NEXT: flat_store_dwordx4 v[10:11], v[4:7] 5782; GCN-HSA-NEXT: s_endpgm 5783; 5784; GCN-NOHSA-VI-LABEL: global_zextload_v4i16_to_v4i64: 5785; GCN-NOHSA-VI: ; %bb.0: 5786; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 5787; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 5788; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 5789; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 5790; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 5791; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5792; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 5793; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 5794; GCN-NOHSA-VI-NEXT: buffer_load_dwordx2 v[8:9], off, s[8:11], 0 5795; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v7, 0 5796; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v5, 0 5797; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 5798; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 5799; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, 0 5800; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, v5 5801; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 5802; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v4, 0xffff, v9 5803; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v6, 16, v9 5804; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, 0xffff, v8 5805; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v2, 16, v8 5806; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 offset:16 5807; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 5808; GCN-NOHSA-VI-NEXT: s_endpgm 5809; 5810; EG-LABEL: global_zextload_v4i16_to_v4i64: 5811; EG: ; %bb.0: 5812; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5813; EG-NEXT: TEX 0 @6 5814; EG-NEXT: ALU 18, @9, KC0[CB0:0-32], KC1[] 5815; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T8.X, 0 5816; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T6.XYZW, T7.X, 1 5817; EG-NEXT: CF_END 5818; EG-NEXT: Fetch clause starting at 6: 5819; EG-NEXT: VTX_READ_64 T5.XY, T5.X, 0, #1 5820; EG-NEXT: ALU clause starting at 8: 5821; EG-NEXT: MOV * T5.X, KC0[2].Z, 5822; EG-NEXT: ALU clause starting at 9: 5823; EG-NEXT: MOV T2.X, T5.X, 5824; EG-NEXT: MOV * T3.X, T5.Y, 5825; EG-NEXT: MOV T0.Y, PV.X, 5826; EG-NEXT: MOV * T0.Z, PS, 5827; EG-NEXT: LSHR * T5.Z, PV.Z, literal.x, 5828; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5829; EG-NEXT: AND_INT T5.X, T0.Z, literal.x, 5830; EG-NEXT: MOV T5.Y, 0.0, 5831; EG-NEXT: LSHR T6.Z, T0.Y, literal.y, 5832; EG-NEXT: AND_INT * T6.X, T0.Y, literal.x, 5833; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 5834; EG-NEXT: MOV T6.Y, 0.0, 5835; EG-NEXT: MOV T5.W, 0.0, 5836; EG-NEXT: MOV * T6.W, 0.0, 5837; EG-NEXT: LSHR T7.X, KC0[2].Y, literal.x, 5838; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 5839; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5840; EG-NEXT: LSHR * T8.X, PV.W, literal.x, 5841; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 5842; 5843; CM-LABEL: global_zextload_v4i16_to_v4i64: 5844; CM: ; %bb.0: 5845; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5846; CM-NEXT: TEX 0 @6 5847; CM-NEXT: ALU 20, @9, KC0[CB0:0-32], KC1[] 5848; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T5, T8.X 5849; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T6, T7.X 5850; CM-NEXT: CF_END 5851; CM-NEXT: Fetch clause starting at 6: 5852; CM-NEXT: VTX_READ_64 T5.XY, T5.X, 0, #1 5853; CM-NEXT: ALU clause starting at 8: 5854; CM-NEXT: MOV * T5.X, KC0[2].Z, 5855; CM-NEXT: ALU clause starting at 9: 5856; CM-NEXT: MOV * T2.X, T5.X, 5857; CM-NEXT: MOV * T3.X, T5.Y, 5858; CM-NEXT: MOV T0.Y, PV.X, 5859; CM-NEXT: MOV * T0.Z, T2.X, 5860; CM-NEXT: LSHR * T5.Z, PV.Z, literal.x, 5861; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5862; CM-NEXT: AND_INT T5.X, T0.Z, literal.x, 5863; CM-NEXT: MOV T5.Y, 0.0, 5864; CM-NEXT: LSHR * T6.Z, T0.Y, literal.y, 5865; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 5866; CM-NEXT: AND_INT T6.X, T0.Y, literal.x, 5867; CM-NEXT: MOV T6.Y, 0.0, 5868; CM-NEXT: MOV * T5.W, 0.0, 5869; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 5870; CM-NEXT: MOV * T6.W, 0.0, 5871; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 5872; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5873; CM-NEXT: LSHR * T7.X, PV.W, literal.x, 5874; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 5875; CM-NEXT: LSHR * T8.X, KC0[2].Y, literal.x, 5876; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 5877 %load = load <4 x i16>, <4 x i16> addrspace(1)* %in 5878 %ext = zext <4 x i16> %load to <4 x i64> 5879 store <4 x i64> %ext, <4 x i64> addrspace(1)* %out 5880 ret void 5881} 5882 5883define amdgpu_kernel void @global_sextload_v4i16_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i16> addrspace(1)* %in) #0 { 5884; GCN-NOHSA-SI-LABEL: global_sextload_v4i16_to_v4i64: 5885; GCN-NOHSA-SI: ; %bb.0: 5886; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 5887; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 5888; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 5889; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 5890; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 5891; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5892; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 5893; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 5894; GCN-NOHSA-SI-NEXT: buffer_load_dwordx2 v[1:2], off, s[8:11], 0 5895; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 5896; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 5897; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 5898; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, v2 5899; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v5, 16, v1 5900; GCN-NOHSA-SI-NEXT: v_bfe_i32 v0, v1, 0, 16 5901; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[6:7], v[1:2], 48 5902; GCN-NOHSA-SI-NEXT: v_bfe_i32 v4, v3, 0, 16 5903; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5904; GCN-NOHSA-SI-NEXT: v_bfe_i32 v2, v5, 0, 16 5905; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v5, 31, v4 5906; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v3, 31, v2 5907; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 offset:16 5908; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 5909; GCN-NOHSA-SI-NEXT: s_endpgm 5910; 5911; GCN-HSA-LABEL: global_sextload_v4i16_to_v4i64: 5912; GCN-HSA: ; %bb.0: 5913; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 5914; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5915; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 5916; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 5917; GCN-HSA-NEXT: flat_load_dwordx2 v[1:2], v[0:1] 5918; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 5919; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 5920; GCN-HSA-NEXT: v_mov_b32_e32 v11, s3 5921; GCN-HSA-NEXT: v_mov_b32_e32 v9, s1 5922; GCN-HSA-NEXT: v_mov_b32_e32 v10, s2 5923; GCN-HSA-NEXT: v_mov_b32_e32 v8, s0 5924; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 5925; GCN-HSA-NEXT: v_mov_b32_e32 v3, v2 5926; GCN-HSA-NEXT: v_lshrrev_b32_e32 v4, 16, v1 5927; GCN-HSA-NEXT: v_ashr_i64 v[6:7], v[1:2], 48 5928; GCN-HSA-NEXT: v_bfe_i32 v2, v4, 0, 16 5929; GCN-HSA-NEXT: v_bfe_i32 v4, v3, 0, 16 5930; GCN-HSA-NEXT: v_bfe_i32 v0, v1, 0, 16 5931; GCN-HSA-NEXT: v_ashrrev_i32_e32 v5, 31, v4 5932; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5933; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 31, v2 5934; GCN-HSA-NEXT: flat_store_dwordx4 v[10:11], v[4:7] 5935; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[0:3] 5936; GCN-HSA-NEXT: s_endpgm 5937; 5938; GCN-NOHSA-VI-LABEL: global_sextload_v4i16_to_v4i64: 5939; GCN-NOHSA-VI: ; %bb.0: 5940; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 5941; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 5942; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 5943; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 5944; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 5945; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5946; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 5947; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 5948; GCN-NOHSA-VI-NEXT: buffer_load_dwordx2 v[1:2], off, s[8:11], 0 5949; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 5950; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 5951; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 5952; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v4, v2 5953; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v5, 16, v2 5954; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v3, 16, v1 5955; GCN-NOHSA-VI-NEXT: v_bfe_i32 v4, v4, 0, 16 5956; GCN-NOHSA-VI-NEXT: v_bfe_i32 v6, v5, 0, 16 5957; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v1, 0, 16 5958; GCN-NOHSA-VI-NEXT: v_bfe_i32 v2, v3, 0, 16 5959; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v5, 31, v4 5960; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v7, 31, v6 5961; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5962; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v3, 31, v2 5963; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 offset:16 5964; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 5965; GCN-NOHSA-VI-NEXT: s_endpgm 5966; 5967; EG-LABEL: global_sextload_v4i16_to_v4i64: 5968; EG: ; %bb.0: 5969; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5970; EG-NEXT: TEX 0 @6 5971; EG-NEXT: ALU 20, @9, KC0[CB0:0-32], KC1[] 5972; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T8.X, 0 5973; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T6.X, 1 5974; EG-NEXT: CF_END 5975; EG-NEXT: Fetch clause starting at 6: 5976; EG-NEXT: VTX_READ_64 T5.XY, T5.X, 0, #1 5977; EG-NEXT: ALU clause starting at 8: 5978; EG-NEXT: MOV * T5.X, KC0[2].Z, 5979; EG-NEXT: ALU clause starting at 9: 5980; EG-NEXT: MOV T2.X, T5.X, 5981; EG-NEXT: MOV * T3.X, T5.Y, 5982; EG-NEXT: MOV T0.Y, PS, 5983; EG-NEXT: MOV * T0.Z, PV.X, 5984; EG-NEXT: ASHR * T5.W, PV.Z, literal.x, 5985; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 5986; EG-NEXT: LSHR T6.X, KC0[2].Y, literal.x, 5987; EG-NEXT: ASHR T5.Z, T0.Z, literal.y, 5988; EG-NEXT: ASHR * T7.W, T0.Y, literal.z, 5989; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5990; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 5991; EG-NEXT: BFE_INT T5.X, T0.Z, 0.0, literal.x, 5992; EG-NEXT: ASHR * T7.Z, T0.Y, literal.x, 5993; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5994; EG-NEXT: BFE_INT T7.X, T0.Y, 0.0, literal.x, 5995; EG-NEXT: ASHR T5.Y, PV.X, literal.y, 5996; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 5997; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 5998; EG-NEXT: LSHR T8.X, PV.W, literal.x, 5999; EG-NEXT: ASHR * T7.Y, PV.X, literal.y, 6000; EG-NEXT: 2(2.802597e-45), 31(4.344025e-44) 6001; 6002; CM-LABEL: global_sextload_v4i16_to_v4i64: 6003; CM: ; %bb.0: 6004; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 6005; CM-NEXT: TEX 0 @6 6006; CM-NEXT: ALU 20, @9, KC0[CB0:0-32], KC1[] 6007; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T7, T8.X 6008; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T5, T6.X 6009; CM-NEXT: CF_END 6010; CM-NEXT: Fetch clause starting at 6: 6011; CM-NEXT: VTX_READ_64 T5.XY, T5.X, 0, #1 6012; CM-NEXT: ALU clause starting at 8: 6013; CM-NEXT: MOV * T5.X, KC0[2].Z, 6014; CM-NEXT: ALU clause starting at 9: 6015; CM-NEXT: MOV * T2.X, T5.X, 6016; CM-NEXT: MOV T3.X, T5.Y, 6017; CM-NEXT: MOV * T0.Y, PV.X, 6018; CM-NEXT: MOV * T0.Z, PV.X, 6019; CM-NEXT: ADD_INT T1.Z, KC0[2].Y, literal.x, 6020; CM-NEXT: ASHR * T5.W, PV.Z, literal.y, 6021; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6022; CM-NEXT: LSHR T6.X, PV.Z, literal.x, 6023; CM-NEXT: ASHR T5.Z, T0.Z, literal.y, 6024; CM-NEXT: ASHR * T7.W, T0.Y, literal.z, 6025; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 6026; CM-NEXT: 31(4.344025e-44), 0(0.000000e+00) 6027; CM-NEXT: BFE_INT T5.X, T0.Z, 0.0, literal.x, 6028; CM-NEXT: ASHR * T7.Z, T0.Y, literal.x, 6029; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6030; CM-NEXT: BFE_INT T7.X, T0.Y, 0.0, literal.x, 6031; CM-NEXT: ASHR * T5.Y, PV.X, literal.y, 6032; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6033; CM-NEXT: LSHR T8.X, KC0[2].Y, literal.x, 6034; CM-NEXT: ASHR * T7.Y, PV.X, literal.y, 6035; CM-NEXT: 2(2.802597e-45), 31(4.344025e-44) 6036 %load = load <4 x i16>, <4 x i16> addrspace(1)* %in 6037 %ext = sext <4 x i16> %load to <4 x i64> 6038 store <4 x i64> %ext, <4 x i64> addrspace(1)* %out 6039 ret void 6040} 6041 6042define amdgpu_kernel void @global_zextload_v8i16_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i16> addrspace(1)* %in) #0 { 6043; GCN-NOHSA-SI-LABEL: global_zextload_v8i16_to_v8i64: 6044; GCN-NOHSA-SI: ; %bb.0: 6045; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 6046; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 6047; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 6048; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 6049; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 6050; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 6051; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 6052; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 6053; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 6054; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v7, 0 6055; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v9, 0 6056; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v15, 0 6057; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v11, v9 6058; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v17, v9 6059; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v19, v9 6060; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v13, v9 6061; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v5, v9 6062; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 6063; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 6064; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 6065; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v18, 16, v1 6066; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v10, 16, v3 6067; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v14, 16, v2 6068; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v6, 16, v0 6069; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v4, 0xffff, v0 6070; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v12, 0xffff, v2 6071; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v16, 0xffff, v1 6072; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v8, 0xffff, v3 6073; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[4:7], 0 offset:48 6074; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[16:19], off, s[4:7], 0 offset:16 6075; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[12:15], off, s[4:7], 0 offset:32 6076; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 6077; GCN-NOHSA-SI-NEXT: s_endpgm 6078; 6079; GCN-HSA-LABEL: global_zextload_v8i16_to_v8i64: 6080; GCN-HSA: ; %bb.0: 6081; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 6082; GCN-HSA-NEXT: v_mov_b32_e32 v12, 0 6083; GCN-HSA-NEXT: v_mov_b32_e32 v14, v12 6084; GCN-HSA-NEXT: v_mov_b32_e32 v15, v12 6085; GCN-HSA-NEXT: v_mov_b32_e32 v8, v12 6086; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 6087; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 6088; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 6089; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 6090; GCN-HSA-NEXT: s_add_u32 s2, s0, 48 6091; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6092; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 6093; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 6094; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 6095; GCN-HSA-NEXT: v_mov_b32_e32 v17, s1 6096; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6097; GCN-HSA-NEXT: v_mov_b32_e32 v16, s0 6098; GCN-HSA-NEXT: v_mov_b32_e32 v19, s3 6099; GCN-HSA-NEXT: s_add_u32 s0, s0, 32 6100; GCN-HSA-NEXT: v_mov_b32_e32 v18, s2 6101; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 6102; GCN-HSA-NEXT: v_mov_b32_e32 v6, 0 6103; GCN-HSA-NEXT: v_mov_b32_e32 v10, 0 6104; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 6105; GCN-HSA-NEXT: v_lshrrev_b32_e32 v13, 16, v3 6106; GCN-HSA-NEXT: v_and_b32_e32 v11, 0xffff, v3 6107; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[11:14] 6108; GCN-HSA-NEXT: v_mov_b32_e32 v4, v12 6109; GCN-HSA-NEXT: v_mov_b32_e32 v13, v12 6110; GCN-HSA-NEXT: v_lshrrev_b32_e32 v14, 16, v1 6111; GCN-HSA-NEXT: v_lshrrev_b32_e32 v5, 16, v0 6112; GCN-HSA-NEXT: v_and_b32_e32 v3, 0xffff, v0 6113; GCN-HSA-NEXT: v_and_b32_e32 v12, 0xffff, v1 6114; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 6115; GCN-HSA-NEXT: v_lshrrev_b32_e32 v9, 16, v2 6116; GCN-HSA-NEXT: v_and_b32_e32 v7, 0xffff, v2 6117; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 6118; GCN-HSA-NEXT: flat_store_dwordx4 v[18:19], v[12:15] 6119; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[7:10] 6120; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[3:6] 6121; GCN-HSA-NEXT: s_endpgm 6122; 6123; GCN-NOHSA-VI-LABEL: global_zextload_v8i16_to_v8i64: 6124; GCN-NOHSA-VI: ; %bb.0: 6125; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 6126; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 6127; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 6128; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s2 6129; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s3 6130; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 6131; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s6 6132; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s7 6133; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 6134; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v19, 0 6135; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v17, 0 6136; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 6137; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 6138; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v7, 0 6139; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v11, 0 6140; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v15, 0 6141; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v13, v17 6142; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v9, v17 6143; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v5, v17 6144; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 6145; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v16, 0xffff, v3 6146; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v18, 16, v3 6147; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v4, 0xffff, v0 6148; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v6, 16, v0 6149; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v8, 0xffff, v1 6150; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v10, 16, v1 6151; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v12, 0xffff, v2 6152; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v14, 16, v2 6153; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:48 6154; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:32 6155; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:16 6156; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 6157; GCN-NOHSA-VI-NEXT: s_endpgm 6158; 6159; EG-LABEL: global_zextload_v8i16_to_v8i64: 6160; EG: ; %bb.0: 6161; EG-NEXT: ALU 0, @10, KC0[CB0:0-32], KC1[] 6162; EG-NEXT: TEX 0 @8 6163; EG-NEXT: ALU 30, @11, KC0[CB0:0-32], KC1[] 6164; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T14.X, 0 6165; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T13.X, 0 6166; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T10.XYZW, T12.X, 0 6167; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T11.X, 1 6168; EG-NEXT: CF_END 6169; EG-NEXT: Fetch clause starting at 8: 6170; EG-NEXT: VTX_READ_128 T7.XYZW, T7.X, 0, #1 6171; EG-NEXT: ALU clause starting at 10: 6172; EG-NEXT: MOV * T7.X, KC0[2].Z, 6173; EG-NEXT: ALU clause starting at 11: 6174; EG-NEXT: LSHR * T8.Z, T7.W, literal.x, 6175; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6176; EG-NEXT: AND_INT T8.X, T7.W, literal.x, 6177; EG-NEXT: MOV T8.Y, 0.0, 6178; EG-NEXT: LSHR T9.Z, T7.Z, literal.y, 6179; EG-NEXT: AND_INT * T9.X, T7.Z, literal.x, 6180; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6181; EG-NEXT: MOV T9.Y, 0.0, 6182; EG-NEXT: LSHR * T10.Z, T7.Y, literal.x, 6183; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6184; EG-NEXT: AND_INT T10.X, T7.Y, literal.x, 6185; EG-NEXT: MOV T10.Y, 0.0, 6186; EG-NEXT: LSHR T7.Z, T7.X, literal.y, 6187; EG-NEXT: AND_INT * T7.X, T7.X, literal.x, 6188; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6189; EG-NEXT: MOV T7.Y, 0.0, 6190; EG-NEXT: MOV T8.W, 0.0, 6191; EG-NEXT: MOV * T9.W, 0.0, 6192; EG-NEXT: MOV T10.W, 0.0, 6193; EG-NEXT: MOV * T7.W, 0.0, 6194; EG-NEXT: LSHR T11.X, KC0[2].Y, literal.x, 6195; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6196; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 6197; EG-NEXT: LSHR T12.X, PV.W, literal.x, 6198; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6199; EG-NEXT: 2(2.802597e-45), 32(4.484155e-44) 6200; EG-NEXT: LSHR T13.X, PV.W, literal.x, 6201; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6202; EG-NEXT: 2(2.802597e-45), 48(6.726233e-44) 6203; EG-NEXT: LSHR * T14.X, PV.W, literal.x, 6204; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 6205; 6206; CM-LABEL: global_zextload_v8i16_to_v8i64: 6207; CM: ; %bb.0: 6208; CM-NEXT: ALU 0, @10, KC0[CB0:0-32], KC1[] 6209; CM-NEXT: TEX 0 @8 6210; CM-NEXT: ALU 32, @11, KC0[CB0:0-32], KC1[] 6211; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T8, T14.X 6212; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T9, T13.X 6213; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T10, T12.X 6214; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T7, T11.X 6215; CM-NEXT: CF_END 6216; CM-NEXT: Fetch clause starting at 8: 6217; CM-NEXT: VTX_READ_128 T7.XYZW, T7.X, 0, #1 6218; CM-NEXT: ALU clause starting at 10: 6219; CM-NEXT: MOV * T7.X, KC0[2].Z, 6220; CM-NEXT: ALU clause starting at 11: 6221; CM-NEXT: LSHR * T8.Z, T7.X, literal.x, 6222; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6223; CM-NEXT: AND_INT T8.X, T7.X, literal.x, 6224; CM-NEXT: MOV T8.Y, 0.0, 6225; CM-NEXT: LSHR * T9.Z, T7.Y, literal.y, 6226; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6227; CM-NEXT: AND_INT T9.X, T7.Y, literal.x, 6228; CM-NEXT: MOV T9.Y, 0.0, 6229; CM-NEXT: LSHR * T10.Z, T7.Z, literal.y, 6230; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6231; CM-NEXT: AND_INT T10.X, T7.Z, literal.x, 6232; CM-NEXT: MOV T10.Y, 0.0, 6233; CM-NEXT: LSHR * T7.Z, T7.W, literal.y, 6234; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6235; CM-NEXT: AND_INT T7.X, T7.W, literal.x, 6236; CM-NEXT: MOV T7.Y, 0.0, 6237; CM-NEXT: MOV * T8.W, 0.0, 6238; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 6239; CM-NEXT: MOV * T9.W, 0.0, 6240; CM-NEXT: MOV * T10.W, 0.0, 6241; CM-NEXT: MOV * T7.W, 0.0, 6242; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 6243; CM-NEXT: 48(6.726233e-44), 0(0.000000e+00) 6244; CM-NEXT: LSHR T11.X, PV.W, literal.x, 6245; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6246; CM-NEXT: 2(2.802597e-45), 32(4.484155e-44) 6247; CM-NEXT: LSHR T12.X, PV.W, literal.x, 6248; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6249; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 6250; CM-NEXT: LSHR * T13.X, PV.W, literal.x, 6251; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 6252; CM-NEXT: LSHR * T14.X, KC0[2].Y, literal.x, 6253; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 6254 %load = load <8 x i16>, <8 x i16> addrspace(1)* %in 6255 %ext = zext <8 x i16> %load to <8 x i64> 6256 store <8 x i64> %ext, <8 x i64> addrspace(1)* %out 6257 ret void 6258} 6259 6260define amdgpu_kernel void @global_sextload_v8i16_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i16> addrspace(1)* %in) #0 { 6261; GCN-NOHSA-SI-LABEL: global_sextload_v8i16_to_v8i64: 6262; GCN-NOHSA-SI: ; %bb.0: 6263; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 6264; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 6265; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 6266; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s2 6267; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s3 6268; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 6269; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s6 6270; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s7 6271; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 6272; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 6273; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 6274; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 6275; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v5, v3 6276; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v7, 16, v2 6277; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v6, 16, v0 6278; GCN-NOHSA-SI-NEXT: v_bfe_i32 v4, v0, 0, 16 6279; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[10:11], v[0:1], 48 6280; GCN-NOHSA-SI-NEXT: v_bfe_i32 v12, v5, 0, 16 6281; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[14:15], v[2:3], 48 6282; GCN-NOHSA-SI-NEXT: v_bfe_i32 v8, v1, 0, 16 6283; GCN-NOHSA-SI-NEXT: v_bfe_i32 v0, v2, 0, 16 6284; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v5, 31, v4 6285; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 6286; GCN-NOHSA-SI-NEXT: v_bfe_i32 v6, v6, 0, 16 6287; GCN-NOHSA-SI-NEXT: v_bfe_i32 v2, v7, 0, 16 6288; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v9, 31, v8 6289; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v13, 31, v12 6290; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v7, 31, v6 6291; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v3, 31, v2 6292; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:48 6293; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:16 6294; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 6295; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 6296; GCN-NOHSA-SI-NEXT: s_endpgm 6297; 6298; GCN-HSA-LABEL: global_sextload_v8i16_to_v8i64: 6299; GCN-HSA: ; %bb.0: 6300; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 6301; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 6302; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 6303; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 6304; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 6305; GCN-HSA-NEXT: s_add_u32 s2, s0, 48 6306; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6307; GCN-HSA-NEXT: v_mov_b32_e32 v15, s3 6308; GCN-HSA-NEXT: v_mov_b32_e32 v14, s2 6309; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 6310; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6311; GCN-HSA-NEXT: v_mov_b32_e32 v13, s1 6312; GCN-HSA-NEXT: v_mov_b32_e32 v9, s3 6313; GCN-HSA-NEXT: v_mov_b32_e32 v12, s0 6314; GCN-HSA-NEXT: v_mov_b32_e32 v8, s2 6315; GCN-HSA-NEXT: s_add_u32 s0, s0, 32 6316; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 6317; GCN-HSA-NEXT: v_mov_b32_e32 v17, s1 6318; GCN-HSA-NEXT: v_mov_b32_e32 v16, s0 6319; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 6320; GCN-HSA-NEXT: v_ashr_i64 v[6:7], v[0:1], 48 6321; GCN-HSA-NEXT: v_bfe_i32 v4, v1, 0, 16 6322; GCN-HSA-NEXT: v_mov_b32_e32 v11, v3 6323; GCN-HSA-NEXT: v_ashrrev_i32_e32 v5, 31, v4 6324; GCN-HSA-NEXT: v_lshrrev_b32_e32 v10, 16, v2 6325; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[4:7] 6326; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v0 6327; GCN-HSA-NEXT: v_bfe_i32 v4, v0, 0, 16 6328; GCN-HSA-NEXT: v_bfe_i32 v8, v2, 0, 16 6329; GCN-HSA-NEXT: v_ashr_i64 v[2:3], v[2:3], 48 6330; GCN-HSA-NEXT: v_bfe_i32 v0, v11, 0, 16 6331; GCN-HSA-NEXT: v_bfe_i32 v6, v1, 0, 16 6332; GCN-HSA-NEXT: v_bfe_i32 v10, v10, 0, 16 6333; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 31, v0 6334; GCN-HSA-NEXT: v_ashrrev_i32_e32 v5, 31, v4 6335; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 31, v8 6336; GCN-HSA-NEXT: v_ashrrev_i32_e32 v7, 31, v6 6337; GCN-HSA-NEXT: v_ashrrev_i32_e32 v11, 31, v10 6338; GCN-HSA-NEXT: flat_store_dwordx4 v[14:15], v[0:3] 6339; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[8:11] 6340; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[4:7] 6341; GCN-HSA-NEXT: s_endpgm 6342; 6343; GCN-NOHSA-VI-LABEL: global_sextload_v8i16_to_v8i64: 6344; GCN-NOHSA-VI: ; %bb.0: 6345; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 6346; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 6347; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 6348; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s2 6349; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s3 6350; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 6351; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s6 6352; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s7 6353; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 6354; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 6355; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 6356; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 6357; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v11, v3 6358; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v3, 16, v3 6359; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v5, 16, v0 6360; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v7, 16, v1 6361; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v10, 16, v2 6362; GCN-NOHSA-VI-NEXT: v_bfe_i32 v12, v11, 0, 16 6363; GCN-NOHSA-VI-NEXT: v_bfe_i32 v14, v3, 0, 16 6364; GCN-NOHSA-VI-NEXT: v_bfe_i32 v4, v0, 0, 16 6365; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v1, 0, 16 6366; GCN-NOHSA-VI-NEXT: v_bfe_i32 v6, v5, 0, 16 6367; GCN-NOHSA-VI-NEXT: v_bfe_i32 v8, v2, 0, 16 6368; GCN-NOHSA-VI-NEXT: v_bfe_i32 v2, v7, 0, 16 6369; GCN-NOHSA-VI-NEXT: v_bfe_i32 v10, v10, 0, 16 6370; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v13, 31, v12 6371; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v15, 31, v14 6372; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v5, 31, v4 6373; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 6374; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v9, 31, v8 6375; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v7, 31, v6 6376; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v3, 31, v2 6377; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v11, 31, v10 6378; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:48 6379; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:32 6380; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 6381; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 6382; GCN-NOHSA-VI-NEXT: s_endpgm 6383; 6384; EG-LABEL: global_sextload_v8i16_to_v8i64: 6385; EG: ; %bb.0: 6386; EG-NEXT: ALU 0, @10, KC0[CB0:0-32], KC1[] 6387; EG-NEXT: TEX 0 @8 6388; EG-NEXT: ALU 33, @11, KC0[CB0:0-32], KC1[] 6389; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T7.X, 0 6390; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T11.X, 0 6391; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T9.X, 0 6392; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T10.XYZW, T8.X, 1 6393; EG-NEXT: CF_END 6394; EG-NEXT: Fetch clause starting at 8: 6395; EG-NEXT: VTX_READ_128 T7.XYZW, T7.X, 0, #1 6396; EG-NEXT: ALU clause starting at 10: 6397; EG-NEXT: MOV * T7.X, KC0[2].Z, 6398; EG-NEXT: ALU clause starting at 11: 6399; EG-NEXT: LSHR T8.X, KC0[2].Y, literal.x, 6400; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6401; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 6402; EG-NEXT: LSHR T9.X, PV.W, literal.x, 6403; EG-NEXT: ADD_INT T0.W, KC0[2].Y, literal.y, 6404; EG-NEXT: ASHR * T10.W, T7.X, literal.z, 6405; EG-NEXT: 2(2.802597e-45), 32(4.484155e-44) 6406; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 6407; EG-NEXT: LSHR T11.X, PV.W, literal.x, 6408; EG-NEXT: ASHR T10.Z, T7.X, literal.y, 6409; EG-NEXT: ASHR * T12.W, T7.Y, literal.z, 6410; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 6411; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 6412; EG-NEXT: BFE_INT T10.X, T7.X, 0.0, literal.x, 6413; EG-NEXT: ASHR T12.Z, T7.Y, literal.x, 6414; EG-NEXT: ASHR * T13.W, T7.Z, literal.y, 6415; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6416; EG-NEXT: BFE_INT T12.X, T7.Y, 0.0, literal.x, 6417; EG-NEXT: ASHR T10.Y, PV.X, literal.y, 6418; EG-NEXT: ASHR T13.Z, T7.Z, literal.x, 6419; EG-NEXT: ASHR * T14.W, T7.W, literal.y, 6420; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6421; EG-NEXT: BFE_INT T13.X, T7.Z, 0.0, literal.x, 6422; EG-NEXT: ASHR T12.Y, PV.X, literal.y, 6423; EG-NEXT: ASHR * T14.Z, T7.W, literal.x, 6424; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6425; EG-NEXT: BFE_INT T14.X, T7.W, 0.0, literal.x, 6426; EG-NEXT: ASHR T13.Y, PV.X, literal.y, 6427; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 6428; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6429; EG-NEXT: 48(6.726233e-44), 0(0.000000e+00) 6430; EG-NEXT: LSHR T7.X, PV.W, literal.x, 6431; EG-NEXT: ASHR * T14.Y, PV.X, literal.y, 6432; EG-NEXT: 2(2.802597e-45), 31(4.344025e-44) 6433; 6434; CM-LABEL: global_sextload_v8i16_to_v8i64: 6435; CM: ; %bb.0: 6436; CM-NEXT: ALU 0, @10, KC0[CB0:0-32], KC1[] 6437; CM-NEXT: TEX 0 @8 6438; CM-NEXT: ALU 33, @11, KC0[CB0:0-32], KC1[] 6439; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T7, T14.X 6440; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T13, T11.X 6441; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T12, T9.X 6442; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T10, T8.X 6443; CM-NEXT: CF_END 6444; CM-NEXT: Fetch clause starting at 8: 6445; CM-NEXT: VTX_READ_128 T7.XYZW, T7.X, 0, #1 6446; CM-NEXT: ALU clause starting at 10: 6447; CM-NEXT: MOV * T7.X, KC0[2].Z, 6448; CM-NEXT: ALU clause starting at 11: 6449; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 6450; CM-NEXT: 48(6.726233e-44), 0(0.000000e+00) 6451; CM-NEXT: LSHR T8.X, PV.W, literal.x, 6452; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6453; CM-NEXT: 2(2.802597e-45), 32(4.484155e-44) 6454; CM-NEXT: LSHR T9.X, PV.W, literal.x, 6455; CM-NEXT: ADD_INT T0.Z, KC0[2].Y, literal.y, 6456; CM-NEXT: ASHR * T10.W, T7.W, literal.z, 6457; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 6458; CM-NEXT: 31(4.344025e-44), 0(0.000000e+00) 6459; CM-NEXT: LSHR T11.X, PV.Z, literal.x, 6460; CM-NEXT: ASHR T10.Z, T7.W, literal.y, 6461; CM-NEXT: ASHR * T12.W, T7.Z, literal.z, 6462; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 6463; CM-NEXT: 31(4.344025e-44), 0(0.000000e+00) 6464; CM-NEXT: BFE_INT T10.X, T7.W, 0.0, literal.x, 6465; CM-NEXT: ASHR T12.Z, T7.Z, literal.x, 6466; CM-NEXT: ASHR * T13.W, T7.Y, literal.y, 6467; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6468; CM-NEXT: BFE_INT T12.X, T7.Z, 0.0, literal.x, 6469; CM-NEXT: ASHR T10.Y, PV.X, literal.y, 6470; CM-NEXT: ASHR T13.Z, T7.Y, literal.x, 6471; CM-NEXT: ASHR * T7.W, T7.X, literal.y, 6472; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6473; CM-NEXT: BFE_INT T13.X, T7.Y, 0.0, literal.x, 6474; CM-NEXT: ASHR T12.Y, PV.X, literal.y, 6475; CM-NEXT: ASHR * T7.Z, T7.X, literal.x, 6476; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6477; CM-NEXT: BFE_INT T7.X, T7.X, 0.0, literal.x, 6478; CM-NEXT: ASHR * T13.Y, PV.X, literal.y, 6479; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6480; CM-NEXT: LSHR T14.X, KC0[2].Y, literal.x, 6481; CM-NEXT: ASHR * T7.Y, PV.X, literal.y, 6482; CM-NEXT: 2(2.802597e-45), 31(4.344025e-44) 6483 %load = load <8 x i16>, <8 x i16> addrspace(1)* %in 6484 %ext = sext <8 x i16> %load to <8 x i64> 6485 store <8 x i64> %ext, <8 x i64> addrspace(1)* %out 6486 ret void 6487} 6488 6489define amdgpu_kernel void @global_zextload_v16i16_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i16> addrspace(1)* %in) #0 { 6490; GCN-NOHSA-SI-LABEL: global_zextload_v16i16_to_v16i64: 6491; GCN-NOHSA-SI: ; %bb.0: 6492; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 6493; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 6494; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 6495; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s2 6496; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s3 6497; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 6498; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s6 6499; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s7 6500; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 6501; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 6502; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(1) 6503; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v10, 16, v1 6504; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v14, 16, v2 6505; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v18, 16, v0 6506; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v16, 0xffff, v0 6507; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v12, 0xffff, v2 6508; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v8, 0xffff, v1 6509; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v2, 16, v3 6510; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v0, 0xffff, v3 6511; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v20, 0 6512; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 6513; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v21, 16, v5 6514; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v25, 16, v6 6515; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v23, 0xffff, v6 6516; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v6, 16, v4 6517; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v4, 0xffff, v4 6518; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v28, 16, v7 6519; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v26, 0xffff, v7 6520; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v19, 0xffff, v5 6521; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v22, v20 6522; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v27, v20 6523; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v29, v20 6524; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, v20 6525; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, v20 6526; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v9, v20 6527; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v11, v20 6528; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v5, v20 6529; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v24, v20 6530; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v13, v20 6531; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v17, v20 6532; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 6533; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 6534; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[19:22], off, s[0:3], 0 offset:80 6535; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[26:29], off, s[0:3], 0 offset:112 6536; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(1) 6537; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v19, 0 6538; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v15, 0 6539; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6540; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v26, 0 6541; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v7, 0 6542; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 6543; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:16 6544; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:64 6545; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[23:26], off, s[0:3], 0 offset:96 6546; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:32 6547; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 6548; GCN-NOHSA-SI-NEXT: s_endpgm 6549; 6550; GCN-HSA-LABEL: global_zextload_v16i16_to_v16i64: 6551; GCN-HSA: ; %bb.0: 6552; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 6553; GCN-HSA-NEXT: v_mov_b32_e32 v8, 0 6554; GCN-HSA-NEXT: v_mov_b32_e32 v10, v8 6555; GCN-HSA-NEXT: v_mov_b32_e32 v12, v8 6556; GCN-HSA-NEXT: v_mov_b32_e32 v15, 0 6557; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 6558; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 6559; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 6560; GCN-HSA-NEXT: s_add_u32 s2, s2, 16 6561; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 6562; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0 6563; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 6564; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 6565; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5] 6566; GCN-HSA-NEXT: s_add_u32 s2, s0, 48 6567; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6568; GCN-HSA-NEXT: s_add_u32 s4, s0, 16 6569; GCN-HSA-NEXT: s_addc_u32 s5, s1, 0 6570; GCN-HSA-NEXT: v_mov_b32_e32 v14, s5 6571; GCN-HSA-NEXT: v_mov_b32_e32 v13, s4 6572; GCN-HSA-NEXT: s_add_u32 s4, s0, 0x50 6573; GCN-HSA-NEXT: s_addc_u32 s5, s1, 0 6574; GCN-HSA-NEXT: s_waitcnt vmcnt(1) 6575; GCN-HSA-NEXT: v_lshrrev_b32_e32 v11, 16, v1 6576; GCN-HSA-NEXT: v_and_b32_e32 v9, 0xffff, v1 6577; GCN-HSA-NEXT: flat_store_dwordx4 v[13:14], v[9:12] 6578; GCN-HSA-NEXT: v_mov_b32_e32 v14, s5 6579; GCN-HSA-NEXT: v_mov_b32_e32 v13, s4 6580; GCN-HSA-NEXT: s_add_u32 s4, s0, 0x70 6581; GCN-HSA-NEXT: s_waitcnt vmcnt(1) 6582; GCN-HSA-NEXT: v_lshrrev_b32_e32 v11, 16, v5 6583; GCN-HSA-NEXT: v_and_b32_e32 v9, 0xffff, v5 6584; GCN-HSA-NEXT: s_addc_u32 s5, s1, 0 6585; GCN-HSA-NEXT: flat_store_dwordx4 v[13:14], v[9:12] 6586; GCN-HSA-NEXT: v_mov_b32_e32 v14, s5 6587; GCN-HSA-NEXT: v_mov_b32_e32 v13, s4 6588; GCN-HSA-NEXT: s_add_u32 s4, s0, 32 6589; GCN-HSA-NEXT: v_lshrrev_b32_e32 v11, 16, v7 6590; GCN-HSA-NEXT: v_and_b32_e32 v9, 0xffff, v7 6591; GCN-HSA-NEXT: s_addc_u32 s5, s1, 0 6592; GCN-HSA-NEXT: flat_store_dwordx4 v[13:14], v[9:12] 6593; GCN-HSA-NEXT: v_mov_b32_e32 v14, s5 6594; GCN-HSA-NEXT: v_lshrrev_b32_e32 v11, 16, v2 6595; GCN-HSA-NEXT: v_and_b32_e32 v9, 0xffff, v2 6596; GCN-HSA-NEXT: v_mov_b32_e32 v1, s2 6597; GCN-HSA-NEXT: v_mov_b32_e32 v12, 0 6598; GCN-HSA-NEXT: v_mov_b32_e32 v13, s4 6599; GCN-HSA-NEXT: v_mov_b32_e32 v2, s3 6600; GCN-HSA-NEXT: s_add_u32 s2, s0, 64 6601; GCN-HSA-NEXT: flat_store_dwordx4 v[13:14], v[9:12] 6602; GCN-HSA-NEXT: v_lshrrev_b32_e32 v14, 16, v4 6603; GCN-HSA-NEXT: v_and_b32_e32 v12, 0xffff, v4 6604; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 6605; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6606; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 6607; GCN-HSA-NEXT: s_add_u32 s0, s0, 0x60 6608; GCN-HSA-NEXT: v_lshrrev_b32_e32 v9, 16, v3 6609; GCN-HSA-NEXT: v_and_b32_e32 v7, 0xffff, v3 6610; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 6611; GCN-HSA-NEXT: flat_store_dwordx4 v[1:2], v[7:10] 6612; GCN-HSA-NEXT: v_mov_b32_e32 v13, v8 6613; GCN-HSA-NEXT: v_mov_b32_e32 v9, v8 6614; GCN-HSA-NEXT: v_mov_b32_e32 v1, v8 6615; GCN-HSA-NEXT: v_mov_b32_e32 v3, 0 6616; GCN-HSA-NEXT: v_lshrrev_b32_e32 v10, 16, v6 6617; GCN-HSA-NEXT: v_and_b32_e32 v8, 0xffff, v6 6618; GCN-HSA-NEXT: v_mov_b32_e32 v7, s3 6619; GCN-HSA-NEXT: v_lshrrev_b32_e32 v2, 16, v0 6620; GCN-HSA-NEXT: v_and_b32_e32 v0, 0xffff, v0 6621; GCN-HSA-NEXT: v_mov_b32_e32 v17, s1 6622; GCN-HSA-NEXT: v_mov_b32_e32 v11, 0 6623; GCN-HSA-NEXT: v_mov_b32_e32 v6, s2 6624; GCN-HSA-NEXT: v_mov_b32_e32 v16, s0 6625; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 6626; GCN-HSA-NEXT: flat_store_dwordx4 v[6:7], v[12:15] 6627; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[8:11] 6628; GCN-HSA-NEXT: s_endpgm 6629; 6630; GCN-NOHSA-VI-LABEL: global_zextload_v16i16_to_v16i64: 6631; GCN-NOHSA-VI: ; %bb.0: 6632; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 6633; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 6634; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 6635; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s2 6636; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s3 6637; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 6638; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s6 6639; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s7 6640; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 6641; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 6642; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v30, 0 6643; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v28, 0 6644; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 6645; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 6646; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v25, v28 6647; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v21, v28 6648; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v17, v28 6649; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v13, v28 6650; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v9, v28 6651; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v11, 0 6652; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v15, 0 6653; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v19, 0 6654; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v23, 0 6655; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(1) 6656; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v16, 0xffff, v3 6657; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 6658; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v27, 0xffff, v7 6659; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v29, 16, v7 6660; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v18, 16, v3 6661; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v20, 0xffff, v4 6662; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v22, 16, v4 6663; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v24, 0xffff, v5 6664; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v26, 16, v5 6665; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v3, 0xffff, v6 6666; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v5, 16, v6 6667; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v4, v28 6668; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[27:30], off, s[0:3], 0 offset:112 6669; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v6, 0 6670; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v27, 0 6671; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v8, 0xffff, v0 6672; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v10, 16, v0 6673; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v12, 0xffff, v1 6674; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v14, 16, v1 6675; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, 0xffff, v2 6676; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v2, 16, v2 6677; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, v28 6678; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[3:6], off, s[0:3], 0 offset:96 6679; GCN-NOHSA-VI-NEXT: s_nop 0 6680; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, 0 6681; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:80 6682; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[20:23], off, s[0:3], 0 offset:64 6683; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:48 6684; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 6685; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:16 6686; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 6687; GCN-NOHSA-VI-NEXT: s_endpgm 6688; 6689; EG-LABEL: global_zextload_v16i16_to_v16i64: 6690; EG: ; %bb.0: 6691; EG-NEXT: ALU 0, @16, KC0[CB0:0-32], KC1[] 6692; EG-NEXT: TEX 1 @12 6693; EG-NEXT: ALU 62, @17, KC0[CB0:0-32], KC1[] 6694; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T26.X, 0 6695; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T25.X, 0 6696; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T15.XYZW, T24.X, 0 6697; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T23.X, 0 6698; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T16.XYZW, T22.X, 0 6699; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T21.X, 0 6700; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T18.XYZW, T20.X, 0 6701; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T19.X, 1 6702; EG-NEXT: CF_END 6703; EG-NEXT: Fetch clause starting at 12: 6704; EG-NEXT: VTX_READ_128 T12.XYZW, T11.X, 16, #1 6705; EG-NEXT: VTX_READ_128 T11.XYZW, T11.X, 0, #1 6706; EG-NEXT: ALU clause starting at 16: 6707; EG-NEXT: MOV * T11.X, KC0[2].Z, 6708; EG-NEXT: ALU clause starting at 17: 6709; EG-NEXT: LSHR * T13.Z, T12.W, literal.x, 6710; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6711; EG-NEXT: AND_INT T13.X, T12.W, literal.x, 6712; EG-NEXT: MOV T13.Y, 0.0, 6713; EG-NEXT: LSHR T14.Z, T12.Z, literal.y, 6714; EG-NEXT: AND_INT * T14.X, T12.Z, literal.x, 6715; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6716; EG-NEXT: MOV T14.Y, 0.0, 6717; EG-NEXT: LSHR * T15.Z, T12.Y, literal.x, 6718; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6719; EG-NEXT: AND_INT T15.X, T12.Y, literal.x, 6720; EG-NEXT: MOV T15.Y, 0.0, 6721; EG-NEXT: LSHR T12.Z, T12.X, literal.y, 6722; EG-NEXT: AND_INT * T12.X, T12.X, literal.x, 6723; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6724; EG-NEXT: MOV T12.Y, 0.0, 6725; EG-NEXT: LSHR * T16.Z, T11.W, literal.x, 6726; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6727; EG-NEXT: AND_INT T16.X, T11.W, literal.x, 6728; EG-NEXT: MOV T16.Y, 0.0, 6729; EG-NEXT: LSHR T17.Z, T11.Z, literal.y, 6730; EG-NEXT: AND_INT * T17.X, T11.Z, literal.x, 6731; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6732; EG-NEXT: MOV T17.Y, 0.0, 6733; EG-NEXT: LSHR * T18.Z, T11.Y, literal.x, 6734; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6735; EG-NEXT: AND_INT T18.X, T11.Y, literal.x, 6736; EG-NEXT: MOV T18.Y, 0.0, 6737; EG-NEXT: LSHR T11.Z, T11.X, literal.y, 6738; EG-NEXT: AND_INT * T11.X, T11.X, literal.x, 6739; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6740; EG-NEXT: MOV T11.Y, 0.0, 6741; EG-NEXT: MOV T13.W, 0.0, 6742; EG-NEXT: MOV * T14.W, 0.0, 6743; EG-NEXT: MOV T15.W, 0.0, 6744; EG-NEXT: MOV * T12.W, 0.0, 6745; EG-NEXT: MOV T16.W, 0.0, 6746; EG-NEXT: MOV * T17.W, 0.0, 6747; EG-NEXT: MOV T18.W, 0.0, 6748; EG-NEXT: MOV * T11.W, 0.0, 6749; EG-NEXT: LSHR T19.X, KC0[2].Y, literal.x, 6750; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6751; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 6752; EG-NEXT: LSHR T20.X, PV.W, literal.x, 6753; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6754; EG-NEXT: 2(2.802597e-45), 32(4.484155e-44) 6755; EG-NEXT: LSHR T21.X, PV.W, literal.x, 6756; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6757; EG-NEXT: 2(2.802597e-45), 48(6.726233e-44) 6758; EG-NEXT: LSHR T22.X, PV.W, literal.x, 6759; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6760; EG-NEXT: 2(2.802597e-45), 64(8.968310e-44) 6761; EG-NEXT: LSHR T23.X, PV.W, literal.x, 6762; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6763; EG-NEXT: 2(2.802597e-45), 80(1.121039e-43) 6764; EG-NEXT: LSHR T24.X, PV.W, literal.x, 6765; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6766; EG-NEXT: 2(2.802597e-45), 96(1.345247e-43) 6767; EG-NEXT: LSHR T25.X, PV.W, literal.x, 6768; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6769; EG-NEXT: 2(2.802597e-45), 112(1.569454e-43) 6770; EG-NEXT: LSHR * T26.X, PV.W, literal.x, 6771; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 6772; 6773; CM-LABEL: global_zextload_v16i16_to_v16i64: 6774; CM: ; %bb.0: 6775; CM-NEXT: ALU 0, @16, KC0[CB0:0-32], KC1[] 6776; CM-NEXT: TEX 1 @12 6777; CM-NEXT: ALU 64, @17, KC0[CB0:0-32], KC1[] 6778; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T13, T26.X 6779; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T14, T25.X 6780; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T15, T24.X 6781; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T12, T23.X 6782; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T16, T22.X 6783; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T17, T21.X 6784; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T18, T20.X 6785; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T11, T19.X 6786; CM-NEXT: CF_END 6787; CM-NEXT: Fetch clause starting at 12: 6788; CM-NEXT: VTX_READ_128 T12.XYZW, T11.X, 0, #1 6789; CM-NEXT: VTX_READ_128 T11.XYZW, T11.X, 16, #1 6790; CM-NEXT: ALU clause starting at 16: 6791; CM-NEXT: MOV * T11.X, KC0[2].Z, 6792; CM-NEXT: ALU clause starting at 17: 6793; CM-NEXT: LSHR * T13.Z, T12.X, literal.x, 6794; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6795; CM-NEXT: AND_INT T13.X, T12.X, literal.x, 6796; CM-NEXT: MOV T13.Y, 0.0, 6797; CM-NEXT: LSHR * T14.Z, T12.Y, literal.y, 6798; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6799; CM-NEXT: AND_INT T14.X, T12.Y, literal.x, 6800; CM-NEXT: MOV T14.Y, 0.0, 6801; CM-NEXT: LSHR * T15.Z, T12.Z, literal.y, 6802; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6803; CM-NEXT: AND_INT T15.X, T12.Z, literal.x, 6804; CM-NEXT: MOV T15.Y, 0.0, 6805; CM-NEXT: LSHR * T12.Z, T12.W, literal.y, 6806; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6807; CM-NEXT: AND_INT T12.X, T12.W, literal.x, 6808; CM-NEXT: MOV T12.Y, 0.0, 6809; CM-NEXT: LSHR * T16.Z, T11.X, literal.y, 6810; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6811; CM-NEXT: AND_INT T16.X, T11.X, literal.x, 6812; CM-NEXT: MOV T16.Y, 0.0, 6813; CM-NEXT: LSHR * T17.Z, T11.Y, literal.y, 6814; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6815; CM-NEXT: AND_INT T17.X, T11.Y, literal.x, 6816; CM-NEXT: MOV T17.Y, 0.0, 6817; CM-NEXT: LSHR * T18.Z, T11.Z, literal.y, 6818; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6819; CM-NEXT: AND_INT T18.X, T11.Z, literal.x, 6820; CM-NEXT: MOV T18.Y, 0.0, 6821; CM-NEXT: LSHR * T11.Z, T11.W, literal.y, 6822; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6823; CM-NEXT: AND_INT T11.X, T11.W, literal.x, 6824; CM-NEXT: MOV T11.Y, 0.0, 6825; CM-NEXT: MOV * T13.W, 0.0, 6826; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 6827; CM-NEXT: MOV * T14.W, 0.0, 6828; CM-NEXT: MOV * T15.W, 0.0, 6829; CM-NEXT: MOV * T12.W, 0.0, 6830; CM-NEXT: MOV * T16.W, 0.0, 6831; CM-NEXT: MOV * T17.W, 0.0, 6832; CM-NEXT: MOV * T18.W, 0.0, 6833; CM-NEXT: MOV * T11.W, 0.0, 6834; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 6835; CM-NEXT: 112(1.569454e-43), 0(0.000000e+00) 6836; CM-NEXT: LSHR T19.X, PV.W, literal.x, 6837; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6838; CM-NEXT: 2(2.802597e-45), 96(1.345247e-43) 6839; CM-NEXT: LSHR T20.X, PV.W, literal.x, 6840; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6841; CM-NEXT: 2(2.802597e-45), 80(1.121039e-43) 6842; CM-NEXT: LSHR T21.X, PV.W, literal.x, 6843; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6844; CM-NEXT: 2(2.802597e-45), 64(8.968310e-44) 6845; CM-NEXT: LSHR T22.X, PV.W, literal.x, 6846; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6847; CM-NEXT: 2(2.802597e-45), 48(6.726233e-44) 6848; CM-NEXT: LSHR T23.X, PV.W, literal.x, 6849; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6850; CM-NEXT: 2(2.802597e-45), 32(4.484155e-44) 6851; CM-NEXT: LSHR T24.X, PV.W, literal.x, 6852; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6853; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 6854; CM-NEXT: LSHR * T25.X, PV.W, literal.x, 6855; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 6856; CM-NEXT: LSHR * T26.X, KC0[2].Y, literal.x, 6857; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 6858 %load = load <16 x i16>, <16 x i16> addrspace(1)* %in 6859 %ext = zext <16 x i16> %load to <16 x i64> 6860 store <16 x i64> %ext, <16 x i64> addrspace(1)* %out 6861 ret void 6862} 6863 6864define amdgpu_kernel void @global_sextload_v16i16_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i16> addrspace(1)* %in) #0 { 6865; GCN-NOHSA-SI-LABEL: global_sextload_v16i16_to_v16i64: 6866; GCN-NOHSA-SI: ; %bb.0: 6867; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 6868; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 6869; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 6870; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s2 6871; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s3 6872; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 6873; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s6 6874; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s7 6875; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 6876; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 6877; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 6878; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 6879; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 6880; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v8, v7 6881; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v12, v3 6882; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v13, 16, v4 6883; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v14, 16, v2 6884; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v15, 16, v0 6885; GCN-NOHSA-SI-NEXT: v_bfe_i32 v8, v8, 0, 16 6886; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[10:11], v[6:7], 48 6887; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v9, 31, v8 6888; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:112 6889; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6890; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[9:10], v[4:5], 48 6891; GCN-NOHSA-SI-NEXT: v_bfe_i32 v7, v5, 0, 16 6892; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v8, 31, v7 6893; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[7:10], off, s[0:3], 0 offset:80 6894; GCN-NOHSA-SI-NEXT: v_bfe_i32 v5, v0, 0, 16 6895; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6896; GCN-NOHSA-SI-NEXT: v_bfe_i32 v7, v15, 0, 16 6897; GCN-NOHSA-SI-NEXT: v_bfe_i32 v8, v12, 0, 16 6898; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[10:11], v[2:3], 48 6899; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v9, 31, v8 6900; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:48 6901; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6902; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[11:12], v[0:1], 48 6903; GCN-NOHSA-SI-NEXT: v_bfe_i32 v9, v1, 0, 16 6904; GCN-NOHSA-SI-NEXT: v_bfe_i32 v0, v2, 0, 16 6905; GCN-NOHSA-SI-NEXT: v_bfe_i32 v2, v14, 0, 16 6906; GCN-NOHSA-SI-NEXT: v_bfe_i32 v15, v13, 0, 16 6907; GCN-NOHSA-SI-NEXT: v_bfe_i32 v13, v4, 0, 16 6908; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v1, 16, v6 6909; GCN-NOHSA-SI-NEXT: v_bfe_i32 v17, v6, 0, 16 6910; GCN-NOHSA-SI-NEXT: v_bfe_i32 v19, v1, 0, 16 6911; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v6, 31, v5 6912; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 6913; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v14, 31, v13 6914; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v18, 31, v17 6915; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v10, 31, v9 6916; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v8, 31, v7 6917; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v3, 31, v2 6918; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v16, 31, v15 6919; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v20, 31, v19 6920; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[9:12], off, s[0:3], 0 offset:16 6921; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[17:20], off, s[0:3], 0 offset:96 6922; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[13:16], off, s[0:3], 0 offset:64 6923; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 6924; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[5:8], off, s[0:3], 0 6925; GCN-NOHSA-SI-NEXT: s_endpgm 6926; 6927; GCN-HSA-LABEL: global_sextload_v16i16_to_v16i64: 6928; GCN-HSA: ; %bb.0: 6929; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 6930; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 6931; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 6932; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 6933; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 6934; GCN-HSA-NEXT: s_add_u32 s2, s2, 16 6935; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0 6936; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 6937; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 6938; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5] 6939; GCN-HSA-NEXT: s_add_u32 s2, s0, 48 6940; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6941; GCN-HSA-NEXT: v_mov_b32_e32 v15, s3 6942; GCN-HSA-NEXT: v_mov_b32_e32 v14, s2 6943; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 6944; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6945; GCN-HSA-NEXT: v_mov_b32_e32 v17, s3 6946; GCN-HSA-NEXT: v_mov_b32_e32 v16, s2 6947; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x70 6948; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6949; GCN-HSA-NEXT: v_mov_b32_e32 v19, s3 6950; GCN-HSA-NEXT: v_mov_b32_e32 v18, s2 6951; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x50 6952; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6953; GCN-HSA-NEXT: v_mov_b32_e32 v13, s1 6954; GCN-HSA-NEXT: v_mov_b32_e32 v12, s0 6955; GCN-HSA-NEXT: s_waitcnt vmcnt(1) 6956; GCN-HSA-NEXT: v_ashr_i64 v[10:11], v[0:1], 48 6957; GCN-HSA-NEXT: v_bfe_i32 v8, v1, 0, 16 6958; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 31, v8 6959; GCN-HSA-NEXT: v_mov_b32_e32 v1, v3 6960; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[8:11] 6961; GCN-HSA-NEXT: v_mov_b32_e32 v17, s3 6962; GCN-HSA-NEXT: v_bfe_i32 v8, v1, 0, 16 6963; GCN-HSA-NEXT: v_ashr_i64 v[10:11], v[2:3], 48 6964; GCN-HSA-NEXT: v_mov_b32_e32 v16, s2 6965; GCN-HSA-NEXT: s_add_u32 s2, s0, 32 6966; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 31, v8 6967; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6968; GCN-HSA-NEXT: flat_store_dwordx4 v[14:15], v[8:11] 6969; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v2 6970; GCN-HSA-NEXT: v_bfe_i32 v8, v2, 0, 16 6971; GCN-HSA-NEXT: v_lshrrev_b32_e32 v2, 16, v0 6972; GCN-HSA-NEXT: v_mov_b32_e32 v15, s3 6973; GCN-HSA-NEXT: v_bfe_i32 v0, v0, 0, 16 6974; GCN-HSA-NEXT: v_bfe_i32 v2, v2, 0, 16 6975; GCN-HSA-NEXT: v_mov_b32_e32 v14, s2 6976; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x60 6977; GCN-HSA-NEXT: v_bfe_i32 v10, v1, 0, 16 6978; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 31, v0 6979; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 31, v2 6980; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6981; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 31, v8 6982; GCN-HSA-NEXT: v_ashrrev_i32_e32 v11, 31, v10 6983; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[0:3] 6984; GCN-HSA-NEXT: flat_store_dwordx4 v[14:15], v[8:11] 6985; GCN-HSA-NEXT: s_waitcnt vmcnt(4) 6986; GCN-HSA-NEXT: v_ashr_i64 v[2:3], v[4:5], 48 6987; GCN-HSA-NEXT: v_bfe_i32 v0, v5, 0, 16 6988; GCN-HSA-NEXT: s_add_u32 s0, s0, 64 6989; GCN-HSA-NEXT: v_mov_b32_e32 v11, v7 6990; GCN-HSA-NEXT: v_lshrrev_b32_e32 v8, 16, v6 6991; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 31, v0 6992; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 6993; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[0:3] 6994; GCN-HSA-NEXT: v_bfe_i32 v10, v8, 0, 16 6995; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v4 6996; GCN-HSA-NEXT: v_bfe_i32 v0, v4, 0, 16 6997; GCN-HSA-NEXT: v_bfe_i32 v8, v6, 0, 16 6998; GCN-HSA-NEXT: v_ashr_i64 v[6:7], v[6:7], 48 6999; GCN-HSA-NEXT: v_bfe_i32 v4, v11, 0, 16 7000; GCN-HSA-NEXT: v_mov_b32_e32 v15, s3 7001; GCN-HSA-NEXT: v_mov_b32_e32 v21, s1 7002; GCN-HSA-NEXT: v_bfe_i32 v2, v1, 0, 16 7003; GCN-HSA-NEXT: v_ashrrev_i32_e32 v5, 31, v4 7004; GCN-HSA-NEXT: v_mov_b32_e32 v14, s2 7005; GCN-HSA-NEXT: v_mov_b32_e32 v20, s0 7006; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 31, v0 7007; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 31, v8 7008; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 31, v2 7009; GCN-HSA-NEXT: v_ashrrev_i32_e32 v11, 31, v10 7010; GCN-HSA-NEXT: flat_store_dwordx4 v[18:19], v[4:7] 7011; GCN-HSA-NEXT: flat_store_dwordx4 v[14:15], v[8:11] 7012; GCN-HSA-NEXT: flat_store_dwordx4 v[20:21], v[0:3] 7013; GCN-HSA-NEXT: s_endpgm 7014; 7015; GCN-NOHSA-VI-LABEL: global_sextload_v16i16_to_v16i64: 7016; GCN-NOHSA-VI: ; %bb.0: 7017; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 7018; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 7019; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 7020; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s2 7021; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s3 7022; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 7023; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s6 7024; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s7 7025; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 7026; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 7027; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 7028; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 7029; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(1) 7030; GCN-NOHSA-VI-NEXT: v_bfe_i32 v8, v0, 0, 16 7031; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 7032; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v9, v7 7033; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v7, 16, v7 7034; GCN-NOHSA-VI-NEXT: v_bfe_i32 v9, v9, 0, 16 7035; GCN-NOHSA-VI-NEXT: v_bfe_i32 v11, v7, 0, 16 7036; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v10, 31, v9 7037; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 7038; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[9:12], off, s[0:3], 0 offset:112 7039; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v0, 16, v0 7040; GCN-NOHSA-VI-NEXT: v_bfe_i32 v9, v6, 0, 16 7041; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v6, 16, v6 7042; GCN-NOHSA-VI-NEXT: v_bfe_i32 v11, v6, 0, 16 7043; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v10, 31, v9 7044; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 7045; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[9:12], off, s[0:3], 0 offset:96 7046; GCN-NOHSA-VI-NEXT: s_nop 0 7047; GCN-NOHSA-VI-NEXT: v_bfe_i32 v9, v5, 0, 16 7048; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v5, 16, v5 7049; GCN-NOHSA-VI-NEXT: v_bfe_i32 v11, v5, 0, 16 7050; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v10, 31, v9 7051; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 7052; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[9:12], off, s[0:3], 0 offset:80 7053; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v5, 16, v2 7054; GCN-NOHSA-VI-NEXT: v_bfe_i32 v12, v1, 0, 16 7055; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v1, 16, v1 7056; GCN-NOHSA-VI-NEXT: v_bfe_i32 v14, v1, 0, 16 7057; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, v3 7058; GCN-NOHSA-VI-NEXT: v_bfe_i32 v16, v1, 0, 16 7059; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v1, 16, v4 7060; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v3, 16, v3 7061; GCN-NOHSA-VI-NEXT: v_bfe_i32 v4, v4, 0, 16 7062; GCN-NOHSA-VI-NEXT: v_bfe_i32 v6, v1, 0, 16 7063; GCN-NOHSA-VI-NEXT: v_bfe_i32 v10, v0, 0, 16 7064; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v2, 0, 16 7065; GCN-NOHSA-VI-NEXT: v_bfe_i32 v2, v5, 0, 16 7066; GCN-NOHSA-VI-NEXT: v_bfe_i32 v18, v3, 0, 16 7067; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v5, 31, v4 7068; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v7, 31, v6 7069; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v9, 31, v8 7070; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v13, 31, v12 7071; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 7072; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v11, 31, v10 7073; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v15, 31, v14 7074; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v3, 31, v2 7075; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v17, 31, v16 7076; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v19, 31, v18 7077; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:64 7078; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:48 7079; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 7080; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:16 7081; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 7082; GCN-NOHSA-VI-NEXT: s_endpgm 7083; 7084; EG-LABEL: global_sextload_v16i16_to_v16i64: 7085; EG: ; %bb.0: 7086; EG-NEXT: ALU 0, @16, KC0[CB0:0-32], KC1[] 7087; EG-NEXT: TEX 1 @12 7088; EG-NEXT: ALU 65, @17, KC0[CB0:0-32], KC1[] 7089; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T26.XYZW, T12.X, 0 7090; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T20.X, 0 7091; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T18.X, 0 7092; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T17.X, 0 7093; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T16.X, 0 7094; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T22.XYZW, T15.X, 0 7095; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T14.X, 0 7096; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T13.X, 1 7097; EG-NEXT: CF_END 7098; EG-NEXT: Fetch clause starting at 12: 7099; EG-NEXT: VTX_READ_128 T12.XYZW, T11.X, 16, #1 7100; EG-NEXT: VTX_READ_128 T11.XYZW, T11.X, 0, #1 7101; EG-NEXT: ALU clause starting at 16: 7102; EG-NEXT: MOV * T11.X, KC0[2].Z, 7103; EG-NEXT: ALU clause starting at 17: 7104; EG-NEXT: LSHR T13.X, KC0[2].Y, literal.x, 7105; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7106; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 7107; EG-NEXT: LSHR T14.X, PV.W, literal.x, 7108; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7109; EG-NEXT: 2(2.802597e-45), 32(4.484155e-44) 7110; EG-NEXT: LSHR T15.X, PV.W, literal.x, 7111; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7112; EG-NEXT: 2(2.802597e-45), 48(6.726233e-44) 7113; EG-NEXT: LSHR T16.X, PV.W, literal.x, 7114; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7115; EG-NEXT: 2(2.802597e-45), 64(8.968310e-44) 7116; EG-NEXT: LSHR T17.X, PV.W, literal.x, 7117; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7118; EG-NEXT: 2(2.802597e-45), 80(1.121039e-43) 7119; EG-NEXT: LSHR T18.X, PV.W, literal.x, 7120; EG-NEXT: ADD_INT T0.W, KC0[2].Y, literal.y, 7121; EG-NEXT: ASHR * T19.W, T11.X, literal.z, 7122; EG-NEXT: 2(2.802597e-45), 96(1.345247e-43) 7123; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 7124; EG-NEXT: LSHR T20.X, PV.W, literal.x, 7125; EG-NEXT: ASHR T19.Z, T11.X, literal.y, 7126; EG-NEXT: ASHR * T21.W, T11.Y, literal.z, 7127; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 7128; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 7129; EG-NEXT: BFE_INT T19.X, T11.X, 0.0, literal.x, 7130; EG-NEXT: ASHR T21.Z, T11.Y, literal.x, 7131; EG-NEXT: ASHR * T22.W, T11.Z, literal.y, 7132; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7133; EG-NEXT: BFE_INT T21.X, T11.Y, 0.0, literal.x, 7134; EG-NEXT: ASHR T19.Y, PV.X, literal.y, 7135; EG-NEXT: ASHR T22.Z, T11.Z, literal.x, 7136; EG-NEXT: ASHR * T23.W, T11.W, literal.y, 7137; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7138; EG-NEXT: BFE_INT T22.X, T11.Z, 0.0, literal.x, 7139; EG-NEXT: ASHR T21.Y, PV.X, literal.y, 7140; EG-NEXT: ASHR T23.Z, T11.W, literal.x, 7141; EG-NEXT: ASHR * T24.W, T12.X, literal.y, 7142; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7143; EG-NEXT: BFE_INT T23.X, T11.W, 0.0, literal.x, 7144; EG-NEXT: ASHR T22.Y, PV.X, literal.y, 7145; EG-NEXT: ASHR T24.Z, T12.X, literal.x, 7146; EG-NEXT: ASHR * T11.W, T12.Y, literal.y, 7147; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7148; EG-NEXT: BFE_INT T24.X, T12.X, 0.0, literal.x, 7149; EG-NEXT: ASHR T23.Y, PV.X, literal.y, 7150; EG-NEXT: ASHR T11.Z, T12.Y, literal.x, 7151; EG-NEXT: ASHR * T25.W, T12.Z, literal.y, 7152; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7153; EG-NEXT: BFE_INT T11.X, T12.Y, 0.0, literal.x, 7154; EG-NEXT: ASHR T24.Y, PV.X, literal.y, 7155; EG-NEXT: ASHR T25.Z, T12.Z, literal.x, 7156; EG-NEXT: ASHR * T26.W, T12.W, literal.y, 7157; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7158; EG-NEXT: BFE_INT T25.X, T12.Z, 0.0, literal.x, 7159; EG-NEXT: ASHR T11.Y, PV.X, literal.y, 7160; EG-NEXT: ASHR * T26.Z, T12.W, literal.x, 7161; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7162; EG-NEXT: BFE_INT T26.X, T12.W, 0.0, literal.x, 7163; EG-NEXT: ASHR T25.Y, PV.X, literal.y, 7164; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 7165; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7166; EG-NEXT: 112(1.569454e-43), 0(0.000000e+00) 7167; EG-NEXT: LSHR T12.X, PV.W, literal.x, 7168; EG-NEXT: ASHR * T26.Y, PV.X, literal.y, 7169; EG-NEXT: 2(2.802597e-45), 31(4.344025e-44) 7170; 7171; CM-LABEL: global_sextload_v16i16_to_v16i64: 7172; CM: ; %bb.0: 7173; CM-NEXT: ALU 0, @16, KC0[CB0:0-32], KC1[] 7174; CM-NEXT: TEX 1 @12 7175; CM-NEXT: ALU 65, @17, KC0[CB0:0-32], KC1[] 7176; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T12, T26.X 7177; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T25, T20.X 7178; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T24, T18.X 7179; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T23, T17.X 7180; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T11, T16.X 7181; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T22, T15.X 7182; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T21, T14.X 7183; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T19, T13.X 7184; CM-NEXT: CF_END 7185; CM-NEXT: Fetch clause starting at 12: 7186; CM-NEXT: VTX_READ_128 T12.XYZW, T11.X, 0, #1 7187; CM-NEXT: VTX_READ_128 T11.XYZW, T11.X, 16, #1 7188; CM-NEXT: ALU clause starting at 16: 7189; CM-NEXT: MOV * T11.X, KC0[2].Z, 7190; CM-NEXT: ALU clause starting at 17: 7191; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 7192; CM-NEXT: 112(1.569454e-43), 0(0.000000e+00) 7193; CM-NEXT: LSHR T13.X, PV.W, literal.x, 7194; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7195; CM-NEXT: 2(2.802597e-45), 96(1.345247e-43) 7196; CM-NEXT: LSHR T14.X, PV.W, literal.x, 7197; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7198; CM-NEXT: 2(2.802597e-45), 80(1.121039e-43) 7199; CM-NEXT: LSHR T15.X, PV.W, literal.x, 7200; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7201; CM-NEXT: 2(2.802597e-45), 64(8.968310e-44) 7202; CM-NEXT: LSHR T16.X, PV.W, literal.x, 7203; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7204; CM-NEXT: 2(2.802597e-45), 48(6.726233e-44) 7205; CM-NEXT: LSHR T17.X, PV.W, literal.x, 7206; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7207; CM-NEXT: 2(2.802597e-45), 32(4.484155e-44) 7208; CM-NEXT: LSHR T18.X, PV.W, literal.x, 7209; CM-NEXT: ADD_INT T0.Z, KC0[2].Y, literal.y, 7210; CM-NEXT: ASHR * T19.W, T11.W, literal.z, 7211; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 7212; CM-NEXT: 31(4.344025e-44), 0(0.000000e+00) 7213; CM-NEXT: LSHR T20.X, PV.Z, literal.x, 7214; CM-NEXT: ASHR T19.Z, T11.W, literal.y, 7215; CM-NEXT: ASHR * T21.W, T11.Z, literal.z, 7216; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 7217; CM-NEXT: 31(4.344025e-44), 0(0.000000e+00) 7218; CM-NEXT: BFE_INT T19.X, T11.W, 0.0, literal.x, 7219; CM-NEXT: ASHR T21.Z, T11.Z, literal.x, 7220; CM-NEXT: ASHR * T22.W, T11.Y, literal.y, 7221; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7222; CM-NEXT: BFE_INT T21.X, T11.Z, 0.0, literal.x, 7223; CM-NEXT: ASHR T19.Y, PV.X, literal.y, 7224; CM-NEXT: ASHR T22.Z, T11.Y, literal.x, 7225; CM-NEXT: ASHR * T11.W, T11.X, literal.y, 7226; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7227; CM-NEXT: BFE_INT T22.X, T11.Y, 0.0, literal.x, 7228; CM-NEXT: ASHR T21.Y, PV.X, literal.y, 7229; CM-NEXT: ASHR T11.Z, T11.X, literal.x, 7230; CM-NEXT: ASHR * T23.W, T12.W, literal.y, 7231; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7232; CM-NEXT: BFE_INT T11.X, T11.X, 0.0, literal.x, 7233; CM-NEXT: ASHR T22.Y, PV.X, literal.y, 7234; CM-NEXT: ASHR T23.Z, T12.W, literal.x, 7235; CM-NEXT: ASHR * T24.W, T12.Z, literal.y, 7236; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7237; CM-NEXT: BFE_INT T23.X, T12.W, 0.0, literal.x, 7238; CM-NEXT: ASHR T11.Y, PV.X, literal.y, 7239; CM-NEXT: ASHR T24.Z, T12.Z, literal.x, 7240; CM-NEXT: ASHR * T25.W, T12.Y, literal.y, 7241; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7242; CM-NEXT: BFE_INT T24.X, T12.Z, 0.0, literal.x, 7243; CM-NEXT: ASHR T23.Y, PV.X, literal.y, 7244; CM-NEXT: ASHR T25.Z, T12.Y, literal.x, 7245; CM-NEXT: ASHR * T12.W, T12.X, literal.y, 7246; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7247; CM-NEXT: BFE_INT T25.X, T12.Y, 0.0, literal.x, 7248; CM-NEXT: ASHR T24.Y, PV.X, literal.y, 7249; CM-NEXT: ASHR * T12.Z, T12.X, literal.x, 7250; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7251; CM-NEXT: BFE_INT T12.X, T12.X, 0.0, literal.x, 7252; CM-NEXT: ASHR * T25.Y, PV.X, literal.y, 7253; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7254; CM-NEXT: LSHR T26.X, KC0[2].Y, literal.x, 7255; CM-NEXT: ASHR * T12.Y, PV.X, literal.y, 7256; CM-NEXT: 2(2.802597e-45), 31(4.344025e-44) 7257 %load = load <16 x i16>, <16 x i16> addrspace(1)* %in 7258 %ext = sext <16 x i16> %load to <16 x i64> 7259 store <16 x i64> %ext, <16 x i64> addrspace(1)* %out 7260 ret void 7261} 7262 7263define amdgpu_kernel void @global_zextload_v32i16_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i16> addrspace(1)* %in) #0 { 7264; GCN-NOHSA-SI-LABEL: global_zextload_v32i16_to_v32i64: 7265; GCN-NOHSA-SI: ; %bb.0: 7266; GCN-NOHSA-SI-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD0 7267; GCN-NOHSA-SI-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD1 7268; GCN-NOHSA-SI-NEXT: s_mov_b32 s14, -1 7269; GCN-NOHSA-SI-NEXT: s_mov_b32 s15, 0xe8f000 7270; GCN-NOHSA-SI-NEXT: s_add_u32 s12, s12, s3 7271; GCN-NOHSA-SI-NEXT: s_addc_u32 s13, s13, 0 7272; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 7273; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 7274; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 7275; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, 0 7276; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s2 7277; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s3 7278; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 7279; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s6 7280; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s7 7281; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[2:5], off, s[8:11], 0 7282; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[6:9], off, s[8:11], 0 offset:16 7283; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[10:13], off, s[8:11], 0 offset:32 7284; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[14:17], off, s[8:11], 0 offset:48 7285; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(3) 7286; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v23, 16, v3 7287; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v21, 16, v4 7288; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v20, 16, v2 7289; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v18, 0xffff, v2 7290; GCN-NOHSA-SI-NEXT: buffer_store_dword v18, off, s[12:15], 0 offset:4 ; 4-byte Folded Spill 7291; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 7292; GCN-NOHSA-SI-NEXT: buffer_store_dword v19, off, s[12:15], 0 offset:8 ; 4-byte Folded Spill 7293; GCN-NOHSA-SI-NEXT: buffer_store_dword v20, off, s[12:15], 0 offset:12 ; 4-byte Folded Spill 7294; GCN-NOHSA-SI-NEXT: buffer_store_dword v21, off, s[12:15], 0 offset:16 ; 4-byte Folded Spill 7295; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(2) 7296; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v19, 0xffff, v4 7297; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 7298; GCN-NOHSA-SI-NEXT: buffer_store_dword v19, off, s[12:15], 0 offset:20 ; 4-byte Folded Spill 7299; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 7300; GCN-NOHSA-SI-NEXT: buffer_store_dword v20, off, s[12:15], 0 offset:24 ; 4-byte Folded Spill 7301; GCN-NOHSA-SI-NEXT: buffer_store_dword v21, off, s[12:15], 0 offset:28 ; 4-byte Folded Spill 7302; GCN-NOHSA-SI-NEXT: buffer_store_dword v22, off, s[12:15], 0 offset:32 ; 4-byte Folded Spill 7303; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v4, 0xffff, v3 7304; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v32, 16, v5 7305; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v30, 0xffff, v5 7306; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v36, 16, v6 7307; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v34, 0xffff, v6 7308; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v28, 16, v8 7309; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v26, 0xffff, v8 7310; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v40, 16, v7 7311; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v38, 0xffff, v7 7312; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v44, 16, v9 7313; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v42, 0xffff, v9 7314; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v48, 16, v10 7315; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v46, 0xffff, v10 7316; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v24, 16, v12 7317; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 7318; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v22, 0xffff, v12 7319; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v52, 16, v11 7320; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v50, 0xffff, v11 7321; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v56, 16, v13 7322; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v54, 0xffff, v13 7323; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v2, 16, v17 7324; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v60, 16, v14 7325; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v58, 0xffff, v14 7326; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v20, 16, v16 7327; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v18, 0xffff, v16 7328; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v10, 16, v15 7329; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v8, 0xffff, v15 7330; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v0, 0xffff, v17 7331; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, v1 7332; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v9, v1 7333; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v11, v1 7334; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v55, v1 7335; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v57, v1 7336; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v51, v1 7337; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v53, v1 7338; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v43, v1 7339; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v45, v1 7340; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v39, v1 7341; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v41, v1 7342; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v31, v1 7343; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v33, v1 7344; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v6, v23 7345; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v5, v1 7346; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v7, v1 7347; GCN-NOHSA-SI-NEXT: buffer_store_dword v4, off, s[12:15], 0 offset:36 ; 4-byte Folded Spill 7348; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 7349; GCN-NOHSA-SI-NEXT: buffer_store_dword v5, off, s[12:15], 0 offset:40 ; 4-byte Folded Spill 7350; GCN-NOHSA-SI-NEXT: buffer_store_dword v6, off, s[12:15], 0 offset:44 ; 4-byte Folded Spill 7351; GCN-NOHSA-SI-NEXT: buffer_store_dword v7, off, s[12:15], 0 offset:48 ; 4-byte Folded Spill 7352; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v19, v1 7353; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v59, v1 7354; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v23, v1 7355; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v47, v1 7356; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v27, v1 7357; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v35, v1 7358; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 7359; GCN-NOHSA-SI-NEXT: buffer_load_dword v4, off, s[12:15], 0 offset:20 ; 4-byte Folded Reload 7360; GCN-NOHSA-SI-NEXT: buffer_load_dword v5, off, s[12:15], 0 offset:24 ; 4-byte Folded Reload 7361; GCN-NOHSA-SI-NEXT: buffer_load_dword v6, off, s[12:15], 0 offset:28 ; 4-byte Folded Reload 7362; GCN-NOHSA-SI-NEXT: buffer_load_dword v7, off, s[12:15], 0 offset:32 ; 4-byte Folded Reload 7363; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 7364; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v5, v1 7365; GCN-NOHSA-SI-NEXT: buffer_load_dword v12, off, s[12:15], 0 offset:4 ; 4-byte Folded Reload 7366; GCN-NOHSA-SI-NEXT: buffer_load_dword v13, off, s[12:15], 0 offset:8 ; 4-byte Folded Reload 7367; GCN-NOHSA-SI-NEXT: buffer_load_dword v14, off, s[12:15], 0 offset:12 ; 4-byte Folded Reload 7368; GCN-NOHSA-SI-NEXT: buffer_load_dword v15, off, s[12:15], 0 offset:16 ; 4-byte Folded Reload 7369; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 7370; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v13, v1 7371; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 7372; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 7373; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240 7374; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v21, 0 7375; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v61, 0 7376; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v25, 0 7377; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 7378; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, v12 7379; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, v13 7380; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, v14 7381; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, 0 7382; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v7, 0 7383; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v37, 0 7384; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v29, 0 7385; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v49, 0 7386; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:208 7387; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[54:57], off, s[0:3], 0 offset:176 7388; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[50:53], off, s[0:3], 0 offset:144 7389; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[42:45], off, s[0:3], 0 offset:112 7390; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[38:41], off, s[0:3], 0 offset:80 7391; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[30:33], off, s[0:3], 0 offset:48 7392; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(5) 7393; GCN-NOHSA-SI-NEXT: buffer_load_dword v8, off, s[12:15], 0 offset:36 ; 4-byte Folded Reload 7394; GCN-NOHSA-SI-NEXT: buffer_load_dword v9, off, s[12:15], 0 offset:40 ; 4-byte Folded Reload 7395; GCN-NOHSA-SI-NEXT: buffer_load_dword v10, off, s[12:15], 0 offset:44 ; 4-byte Folded Reload 7396; GCN-NOHSA-SI-NEXT: buffer_load_dword v11, off, s[12:15], 0 offset:48 ; 4-byte Folded Reload 7397; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 7398; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:16 7399; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[18:21], off, s[0:3], 0 offset:224 7400; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[58:61], off, s[0:3], 0 offset:192 7401; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[22:25], off, s[0:3], 0 offset:160 7402; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[46:49], off, s[0:3], 0 offset:128 7403; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[26:29], off, s[0:3], 0 offset:96 7404; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[34:37], off, s[0:3], 0 offset:64 7405; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:32 7406; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 7407; GCN-NOHSA-SI-NEXT: s_endpgm 7408; 7409; GCN-HSA-LABEL: global_zextload_v32i16_to_v32i64: 7410; GCN-HSA: ; %bb.0: 7411; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 7412; GCN-HSA-NEXT: v_mov_b32_e32 v4, 0 7413; GCN-HSA-NEXT: v_mov_b32_e32 v6, v4 7414; GCN-HSA-NEXT: v_mov_b32_e32 v8, v4 7415; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 7416; GCN-HSA-NEXT: s_add_u32 s4, s2, 16 7417; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 7418; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 7419; GCN-HSA-NEXT: v_mov_b32_e32 v1, s5 7420; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 7421; GCN-HSA-NEXT: s_add_u32 s4, s2, 32 7422; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 7423; GCN-HSA-NEXT: v_mov_b32_e32 v10, s5 7424; GCN-HSA-NEXT: v_mov_b32_e32 v9, s4 7425; GCN-HSA-NEXT: flat_load_dwordx4 v[9:12], v[9:10] 7426; GCN-HSA-NEXT: v_mov_b32_e32 v14, s3 7427; GCN-HSA-NEXT: v_mov_b32_e32 v13, s2 7428; GCN-HSA-NEXT: s_add_u32 s2, s2, 48 7429; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0 7430; GCN-HSA-NEXT: v_mov_b32_e32 v18, s3 7431; GCN-HSA-NEXT: flat_load_dwordx4 v[13:16], v[13:14] 7432; GCN-HSA-NEXT: v_mov_b32_e32 v17, s2 7433; GCN-HSA-NEXT: flat_load_dwordx4 v[17:20], v[17:18] 7434; GCN-HSA-NEXT: s_add_u32 s4, s0, 48 7435; GCN-HSA-NEXT: s_addc_u32 s5, s1, 0 7436; GCN-HSA-NEXT: s_add_u32 s6, s0, 16 7437; GCN-HSA-NEXT: s_addc_u32 s7, s1, 0 7438; GCN-HSA-NEXT: s_add_u32 s8, s0, 0xf0 7439; GCN-HSA-NEXT: s_addc_u32 s9, s1, 0 7440; GCN-HSA-NEXT: s_add_u32 s10, s0, 0xd0 7441; GCN-HSA-NEXT: s_addc_u32 s11, s1, 0 7442; GCN-HSA-NEXT: s_add_u32 s12, s0, 0xb0 7443; GCN-HSA-NEXT: s_addc_u32 s13, s1, 0 7444; GCN-HSA-NEXT: s_add_u32 s14, s0, 0x90 7445; GCN-HSA-NEXT: s_addc_u32 s15, s1, 0 7446; GCN-HSA-NEXT: s_add_u32 s16, s0, 0x70 7447; GCN-HSA-NEXT: s_addc_u32 s17, s1, 0 7448; GCN-HSA-NEXT: v_mov_b32_e32 v22, s17 7449; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x50 7450; GCN-HSA-NEXT: v_mov_b32_e32 v21, s16 7451; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 7452; GCN-HSA-NEXT: s_waitcnt vmcnt(3) 7453; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v3 7454; GCN-HSA-NEXT: v_and_b32_e32 v5, 0xffff, v3 7455; GCN-HSA-NEXT: flat_store_dwordx4 v[21:22], v[5:8] 7456; GCN-HSA-NEXT: v_mov_b32_e32 v22, s3 7457; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v1 7458; GCN-HSA-NEXT: v_and_b32_e32 v5, 0xffff, v1 7459; GCN-HSA-NEXT: v_mov_b32_e32 v21, s2 7460; GCN-HSA-NEXT: flat_store_dwordx4 v[21:22], v[5:8] 7461; GCN-HSA-NEXT: v_mov_b32_e32 v22, s13 7462; GCN-HSA-NEXT: s_waitcnt vmcnt(4) 7463; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v12 7464; GCN-HSA-NEXT: v_and_b32_e32 v5, 0xffff, v12 7465; GCN-HSA-NEXT: v_mov_b32_e32 v21, s12 7466; GCN-HSA-NEXT: flat_store_dwordx4 v[21:22], v[5:8] 7467; GCN-HSA-NEXT: v_mov_b32_e32 v22, s15 7468; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v10 7469; GCN-HSA-NEXT: v_and_b32_e32 v5, 0xffff, v10 7470; GCN-HSA-NEXT: v_mov_b32_e32 v21, s14 7471; GCN-HSA-NEXT: flat_store_dwordx4 v[21:22], v[5:8] 7472; GCN-HSA-NEXT: v_mov_b32_e32 v22, s7 7473; GCN-HSA-NEXT: s_waitcnt vmcnt(5) 7474; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v14 7475; GCN-HSA-NEXT: v_and_b32_e32 v5, 0xffff, v14 7476; GCN-HSA-NEXT: v_mov_b32_e32 v21, s6 7477; GCN-HSA-NEXT: flat_store_dwordx4 v[21:22], v[5:8] 7478; GCN-HSA-NEXT: s_add_u32 s2, s0, 32 7479; GCN-HSA-NEXT: s_waitcnt vmcnt(5) 7480; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v20 7481; GCN-HSA-NEXT: v_and_b32_e32 v5, 0xffff, v20 7482; GCN-HSA-NEXT: v_mov_b32_e32 v21, s9 7483; GCN-HSA-NEXT: v_mov_b32_e32 v20, s8 7484; GCN-HSA-NEXT: flat_store_dwordx4 v[20:21], v[5:8] 7485; GCN-HSA-NEXT: v_mov_b32_e32 v21, s11 7486; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v18 7487; GCN-HSA-NEXT: v_and_b32_e32 v5, 0xffff, v18 7488; GCN-HSA-NEXT: v_mov_b32_e32 v20, s10 7489; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 7490; GCN-HSA-NEXT: flat_store_dwordx4 v[20:21], v[5:8] 7491; GCN-HSA-NEXT: v_and_b32_e32 v3, 0xffff, v16 7492; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v15 7493; GCN-HSA-NEXT: v_and_b32_e32 v5, 0xffff, v15 7494; GCN-HSA-NEXT: v_mov_b32_e32 v15, s3 7495; GCN-HSA-NEXT: v_mov_b32_e32 v8, 0 7496; GCN-HSA-NEXT: v_mov_b32_e32 v14, s2 7497; GCN-HSA-NEXT: flat_store_dwordx4 v[14:15], v[5:8] 7498; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xe0 7499; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v13 7500; GCN-HSA-NEXT: v_and_b32_e32 v5, 0xffff, v13 7501; GCN-HSA-NEXT: v_mov_b32_e32 v13, s1 7502; GCN-HSA-NEXT: v_mov_b32_e32 v8, 0 7503; GCN-HSA-NEXT: v_mov_b32_e32 v12, s0 7504; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 7505; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[5:8] 7506; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 7507; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 7508; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xc0 7509; GCN-HSA-NEXT: v_mov_b32_e32 v8, 0 7510; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v19 7511; GCN-HSA-NEXT: v_and_b32_e32 v5, 0xffff, v19 7512; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 7513; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[5:8] 7514; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 7515; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 7516; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xa0 7517; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v17 7518; GCN-HSA-NEXT: v_and_b32_e32 v5, 0xffff, v17 7519; GCN-HSA-NEXT: v_mov_b32_e32 v8, 0 7520; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 7521; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[5:8] 7522; GCN-HSA-NEXT: v_lshrrev_b32_e32 v19, 16, v9 7523; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v11 7524; GCN-HSA-NEXT: v_and_b32_e32 v5, 0xffff, v11 7525; GCN-HSA-NEXT: v_mov_b32_e32 v11, s3 7526; GCN-HSA-NEXT: v_mov_b32_e32 v8, 0 7527; GCN-HSA-NEXT: v_mov_b32_e32 v10, s2 7528; GCN-HSA-NEXT: flat_store_dwordx4 v[10:11], v[5:8] 7529; GCN-HSA-NEXT: v_lshrrev_b32_e32 v10, 16, v0 7530; GCN-HSA-NEXT: v_and_b32_e32 v8, 0xffff, v0 7531; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 7532; GCN-HSA-NEXT: v_lshrrev_b32_e32 v5, 16, v16 7533; GCN-HSA-NEXT: v_mov_b32_e32 v1, s5 7534; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x80 7535; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[3:6] 7536; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 7537; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 7538; GCN-HSA-NEXT: v_and_b32_e32 v17, 0xffff, v9 7539; GCN-HSA-NEXT: v_mov_b32_e32 v20, 0 7540; GCN-HSA-NEXT: v_mov_b32_e32 v18, v4 7541; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 7542; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x60 7543; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[17:20] 7544; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 7545; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 7546; GCN-HSA-NEXT: v_lshrrev_b32_e32 v14, 16, v2 7547; GCN-HSA-NEXT: v_and_b32_e32 v12, 0xffff, v2 7548; GCN-HSA-NEXT: v_mov_b32_e32 v15, 0 7549; GCN-HSA-NEXT: v_mov_b32_e32 v13, v4 7550; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 7551; GCN-HSA-NEXT: s_add_u32 s0, s0, 64 7552; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[12:15] 7553; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 7554; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 7555; GCN-HSA-NEXT: v_mov_b32_e32 v11, 0 7556; GCN-HSA-NEXT: v_mov_b32_e32 v9, v4 7557; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 7558; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[8:11] 7559; GCN-HSA-NEXT: s_endpgm 7560; 7561; GCN-NOHSA-VI-LABEL: global_zextload_v32i16_to_v32i64: 7562; GCN-NOHSA-VI: ; %bb.0: 7563; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 7564; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 7565; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 7566; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s2 7567; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s3 7568; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 7569; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s6 7570; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s7 7571; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[1:4], off, s[8:11], 0 7572; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[5:8], off, s[8:11], 0 offset:16 7573; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[31:34], off, s[8:11], 0 offset:32 7574; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[35:38], off, s[8:11], 0 offset:48 7575; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v57, 0 7576; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 7577; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 7578; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v12, 0 7579; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v24, 0 7580; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v16, 0 7581; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v20, 0 7582; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(3) 7583; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, 0xffff, v2 7584; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(1) 7585; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v45, 0xffff, v33 7586; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 7587; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v48, 0xffff, v36 7588; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v50, 16, v36 7589; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v54, 0xffff, v38 7590; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v56, 16, v38 7591; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v36, 0xffff, v37 7592; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v38, 16, v37 7593; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v37, 0 7594; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v55, v37 7595; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v51, 0xffff, v35 7596; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v53, 16, v35 7597; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[54:57], off, s[0:3], 0 offset:240 7598; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v52, v37 7599; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v54, 0 7600; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[51:54], off, s[0:3], 0 offset:192 7601; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v49, v37 7602; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v51, 0 7603; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v47, 16, v33 7604; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[48:51], off, s[0:3], 0 offset:208 7605; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v46, v37 7606; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v48, 0 7607; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v28, 0xffff, v7 7608; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v30, 16, v7 7609; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v42, 0xffff, v31 7610; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v44, 16, v31 7611; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[45:48], off, s[0:3], 0 offset:160 7612; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v43, v37 7613; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v45, 0 7614; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v31, 0 7615; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v29, v37 7616; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v2, 16, v2 7617; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v9, 0xffff, v1 7618; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v11, 16, v1 7619; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v17, 0xffff, v3 7620; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v19, 16, v3 7621; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v25, 0xffff, v8 7622; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v27, 16, v8 7623; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v39, 0xffff, v32 7624; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v41, 16, v32 7625; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v32, 0xffff, v34 7626; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v34, 16, v34 7627; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v35, 0 7628; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v33, v37 7629; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[42:45], off, s[0:3], 0 offset:128 7630; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v40, v37 7631; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v42, 0 7632; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:96 7633; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, 0 7634; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v28, 0 7635; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v26, v37 7636; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v10, v37 7637; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, v37 7638; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v13, 0xffff, v4 7639; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v15, 16, v4 7640; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v4, 0xffff, v6 7641; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v6, 16, v6 7642; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v21, 0xffff, v5 7643; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v23, 16, v5 7644; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[32:35], off, s[0:3], 0 offset:176 7645; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[39:42], off, s[0:3], 0 offset:144 7646; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v7, 0 7647; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v39, 0 7648; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v22, v37 7649; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v5, v37 7650; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v18, v37 7651; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v14, v37 7652; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[25:28], off, s[0:3], 0 offset:112 7653; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[21:24], off, s[0:3], 0 offset:64 7654; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:80 7655; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[36:39], off, s[0:3], 0 offset:224 7656; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[17:20], off, s[0:3], 0 offset:32 7657; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[13:16], off, s[0:3], 0 offset:48 7658; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[9:12], off, s[0:3], 0 7659; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 7660; GCN-NOHSA-VI-NEXT: s_endpgm 7661; 7662; EG-LABEL: global_zextload_v32i16_to_v32i64: 7663; EG: ; %bb.0: 7664; EG-NEXT: ALU 0, @30, KC0[CB0:0-32], KC1[] 7665; EG-NEXT: TEX 2 @22 7666; EG-NEXT: ALU 33, @31, KC0[], KC1[] 7667; EG-NEXT: TEX 0 @28 7668; EG-NEXT: ALU 93, @65, KC0[CB0:0-32], KC1[] 7669; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T50.X, 0 7670; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T49.X, 0 7671; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T48.X, 0 7672; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T47.X, 0 7673; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T26.XYZW, T46.X, 0 7674; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T27.XYZW, T45.X, 0 7675; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T28.XYZW, T44.X, 0 7676; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T22.XYZW, T43.X, 0 7677; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T42.X, 0 7678; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T30.XYZW, T41.X, 0 7679; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T31.XYZW, T40.X, 0 7680; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T39.X, 0 7681; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T32.XYZW, T38.X, 0 7682; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T33.XYZW, T37.X, 0 7683; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T34.XYZW, T36.X, 0 7684; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T29.XYZW, T35.X, 1 7685; EG-NEXT: CF_END 7686; EG-NEXT: Fetch clause starting at 22: 7687; EG-NEXT: VTX_READ_128 T20.XYZW, T19.X, 48, #1 7688; EG-NEXT: VTX_READ_128 T21.XYZW, T19.X, 16, #1 7689; EG-NEXT: VTX_READ_128 T22.XYZW, T19.X, 32, #1 7690; EG-NEXT: Fetch clause starting at 28: 7691; EG-NEXT: VTX_READ_128 T29.XYZW, T19.X, 0, #1 7692; EG-NEXT: ALU clause starting at 30: 7693; EG-NEXT: MOV * T19.X, KC0[2].Z, 7694; EG-NEXT: ALU clause starting at 31: 7695; EG-NEXT: LSHR * T23.Z, T20.Z, literal.x, 7696; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 7697; EG-NEXT: AND_INT T23.X, T20.Z, literal.x, 7698; EG-NEXT: MOV T23.Y, 0.0, 7699; EG-NEXT: LSHR T24.Z, T20.W, literal.y, 7700; EG-NEXT: AND_INT * T24.X, T20.W, literal.x, 7701; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7702; EG-NEXT: MOV T24.Y, 0.0, 7703; EG-NEXT: LSHR * T25.Z, T20.X, literal.x, 7704; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 7705; EG-NEXT: AND_INT T25.X, T20.X, literal.x, 7706; EG-NEXT: MOV T25.Y, 0.0, 7707; EG-NEXT: LSHR T20.Z, T20.Y, literal.y, 7708; EG-NEXT: AND_INT * T20.X, T20.Y, literal.x, 7709; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7710; EG-NEXT: MOV T20.Y, 0.0, 7711; EG-NEXT: LSHR * T26.Z, T22.Z, literal.x, 7712; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 7713; EG-NEXT: AND_INT T26.X, T22.Z, literal.x, 7714; EG-NEXT: MOV T26.Y, 0.0, 7715; EG-NEXT: LSHR T27.Z, T22.W, literal.y, 7716; EG-NEXT: AND_INT * T27.X, T22.W, literal.x, 7717; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7718; EG-NEXT: MOV T27.Y, 0.0, 7719; EG-NEXT: LSHR * T28.Z, T22.X, literal.x, 7720; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 7721; EG-NEXT: AND_INT T28.X, T22.X, literal.x, 7722; EG-NEXT: MOV T28.Y, 0.0, 7723; EG-NEXT: LSHR T22.Z, T22.Y, literal.y, 7724; EG-NEXT: AND_INT * T22.X, T22.Y, literal.x, 7725; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7726; EG-NEXT: MOV T22.Y, 0.0, 7727; EG-NEXT: LSHR * T19.Z, T21.Z, literal.x, 7728; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 7729; EG-NEXT: ALU clause starting at 65: 7730; EG-NEXT: AND_INT T19.X, T21.Z, literal.x, 7731; EG-NEXT: MOV T19.Y, 0.0, 7732; EG-NEXT: LSHR T30.Z, T21.W, literal.y, 7733; EG-NEXT: AND_INT * T30.X, T21.W, literal.x, 7734; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7735; EG-NEXT: MOV T30.Y, 0.0, 7736; EG-NEXT: LSHR * T31.Z, T21.X, literal.x, 7737; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 7738; EG-NEXT: AND_INT T31.X, T21.X, literal.x, 7739; EG-NEXT: MOV T31.Y, 0.0, 7740; EG-NEXT: LSHR T21.Z, T21.Y, literal.y, 7741; EG-NEXT: AND_INT * T21.X, T21.Y, literal.x, 7742; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7743; EG-NEXT: MOV T21.Y, 0.0, 7744; EG-NEXT: LSHR * T32.Z, T29.Z, literal.x, 7745; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 7746; EG-NEXT: AND_INT T32.X, T29.Z, literal.x, 7747; EG-NEXT: MOV T32.Y, 0.0, 7748; EG-NEXT: LSHR T33.Z, T29.W, literal.y, 7749; EG-NEXT: AND_INT * T33.X, T29.W, literal.x, 7750; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7751; EG-NEXT: MOV T33.Y, 0.0, 7752; EG-NEXT: LSHR * T34.Z, T29.X, literal.x, 7753; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 7754; EG-NEXT: AND_INT T34.X, T29.X, literal.x, 7755; EG-NEXT: MOV T34.Y, 0.0, 7756; EG-NEXT: LSHR T29.Z, T29.Y, literal.y, 7757; EG-NEXT: AND_INT * T29.X, T29.Y, literal.x, 7758; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7759; EG-NEXT: MOV T29.Y, 0.0, 7760; EG-NEXT: MOV T23.W, 0.0, 7761; EG-NEXT: MOV * T24.W, 0.0, 7762; EG-NEXT: MOV T25.W, 0.0, 7763; EG-NEXT: MOV * T20.W, 0.0, 7764; EG-NEXT: MOV T26.W, 0.0, 7765; EG-NEXT: MOV * T27.W, 0.0, 7766; EG-NEXT: MOV T28.W, 0.0, 7767; EG-NEXT: MOV * T22.W, 0.0, 7768; EG-NEXT: MOV T19.W, 0.0, 7769; EG-NEXT: MOV * T30.W, 0.0, 7770; EG-NEXT: MOV T31.W, 0.0, 7771; EG-NEXT: MOV * T21.W, 0.0, 7772; EG-NEXT: MOV T32.W, 0.0, 7773; EG-NEXT: MOV * T33.W, 0.0, 7774; EG-NEXT: MOV T34.W, 0.0, 7775; EG-NEXT: MOV * T29.W, 0.0, 7776; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 7777; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 7778; EG-NEXT: LSHR T35.X, PV.W, literal.x, 7779; EG-NEXT: LSHR * T36.X, KC0[2].Y, literal.x, 7780; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 7781; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 7782; EG-NEXT: 48(6.726233e-44), 0(0.000000e+00) 7783; EG-NEXT: LSHR T37.X, PV.W, literal.x, 7784; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7785; EG-NEXT: 2(2.802597e-45), 32(4.484155e-44) 7786; EG-NEXT: LSHR T38.X, PV.W, literal.x, 7787; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7788; EG-NEXT: 2(2.802597e-45), 80(1.121039e-43) 7789; EG-NEXT: LSHR T39.X, PV.W, literal.x, 7790; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7791; EG-NEXT: 2(2.802597e-45), 64(8.968310e-44) 7792; EG-NEXT: LSHR T40.X, PV.W, literal.x, 7793; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7794; EG-NEXT: 2(2.802597e-45), 112(1.569454e-43) 7795; EG-NEXT: LSHR T41.X, PV.W, literal.x, 7796; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7797; EG-NEXT: 2(2.802597e-45), 96(1.345247e-43) 7798; EG-NEXT: LSHR T42.X, PV.W, literal.x, 7799; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7800; EG-NEXT: 2(2.802597e-45), 144(2.017870e-43) 7801; EG-NEXT: LSHR T43.X, PV.W, literal.x, 7802; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7803; EG-NEXT: 2(2.802597e-45), 128(1.793662e-43) 7804; EG-NEXT: LSHR T44.X, PV.W, literal.x, 7805; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7806; EG-NEXT: 2(2.802597e-45), 176(2.466285e-43) 7807; EG-NEXT: LSHR T45.X, PV.W, literal.x, 7808; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7809; EG-NEXT: 2(2.802597e-45), 160(2.242078e-43) 7810; EG-NEXT: LSHR T46.X, PV.W, literal.x, 7811; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7812; EG-NEXT: 2(2.802597e-45), 208(2.914701e-43) 7813; EG-NEXT: LSHR T47.X, PV.W, literal.x, 7814; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7815; EG-NEXT: 2(2.802597e-45), 192(2.690493e-43) 7816; EG-NEXT: LSHR T48.X, PV.W, literal.x, 7817; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7818; EG-NEXT: 2(2.802597e-45), 240(3.363116e-43) 7819; EG-NEXT: LSHR T49.X, PV.W, literal.x, 7820; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7821; EG-NEXT: 2(2.802597e-45), 224(3.138909e-43) 7822; EG-NEXT: LSHR * T50.X, PV.W, literal.x, 7823; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 7824; 7825; CM-LABEL: global_zextload_v32i16_to_v32i64: 7826; CM: ; %bb.0: 7827; CM-NEXT: ALU 0, @30, KC0[CB0:0-32], KC1[] 7828; CM-NEXT: TEX 2 @22 7829; CM-NEXT: ALU 33, @31, KC0[], KC1[] 7830; CM-NEXT: TEX 0 @28 7831; CM-NEXT: ALU 94, @65, KC0[CB0:0-32], KC1[] 7832; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T23, T50.X 7833; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T24, T49.X 7834; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T25, T48.X 7835; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T26, T47.X 7836; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T20, T46.X 7837; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T27, T45.X 7838; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T28, T44.X 7839; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T29, T43.X 7840; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T19, T42.X 7841; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T30, T41.X 7842; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T31, T40.X 7843; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T32, T39.X 7844; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T21, T38.X 7845; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T33, T37.X 7846; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T34, T36.X 7847; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T35, T22.X 7848; CM-NEXT: CF_END 7849; CM-NEXT: Fetch clause starting at 22: 7850; CM-NEXT: VTX_READ_128 T20.XYZW, T19.X, 0, #1 7851; CM-NEXT: VTX_READ_128 T21.XYZW, T19.X, 32, #1 7852; CM-NEXT: VTX_READ_128 T22.XYZW, T19.X, 16, #1 7853; CM-NEXT: Fetch clause starting at 28: 7854; CM-NEXT: VTX_READ_128 T22.XYZW, T19.X, 48, #1 7855; CM-NEXT: ALU clause starting at 30: 7856; CM-NEXT: MOV * T19.X, KC0[2].Z, 7857; CM-NEXT: ALU clause starting at 31: 7858; CM-NEXT: LSHR * T23.Z, T20.Y, literal.x, 7859; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 7860; CM-NEXT: AND_INT T23.X, T20.Y, literal.x, 7861; CM-NEXT: MOV T23.Y, 0.0, 7862; CM-NEXT: LSHR * T24.Z, T20.X, literal.y, 7863; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7864; CM-NEXT: AND_INT T24.X, T20.X, literal.x, 7865; CM-NEXT: MOV T24.Y, 0.0, 7866; CM-NEXT: LSHR * T25.Z, T20.W, literal.y, 7867; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7868; CM-NEXT: AND_INT T25.X, T20.W, literal.x, 7869; CM-NEXT: MOV T25.Y, 0.0, 7870; CM-NEXT: LSHR * T26.Z, T20.Z, literal.y, 7871; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7872; CM-NEXT: AND_INT T26.X, T20.Z, literal.x, 7873; CM-NEXT: MOV T26.Y, 0.0, 7874; CM-NEXT: LSHR * T20.Z, T22.Y, literal.y, 7875; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7876; CM-NEXT: AND_INT T20.X, T22.Y, literal.x, 7877; CM-NEXT: MOV T20.Y, 0.0, 7878; CM-NEXT: LSHR * T27.Z, T22.X, literal.y, 7879; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7880; CM-NEXT: AND_INT T27.X, T22.X, literal.x, 7881; CM-NEXT: MOV T27.Y, 0.0, 7882; CM-NEXT: LSHR * T28.Z, T22.W, literal.y, 7883; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7884; CM-NEXT: AND_INT T28.X, T22.W, literal.x, 7885; CM-NEXT: MOV T28.Y, 0.0, 7886; CM-NEXT: LSHR * T29.Z, T22.Z, literal.y, 7887; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7888; CM-NEXT: AND_INT T29.X, T22.Z, literal.x, 7889; CM-NEXT: MOV T29.Y, 0.0, 7890; CM-NEXT: LSHR * T19.Z, T21.Y, literal.y, 7891; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7892; CM-NEXT: ALU clause starting at 65: 7893; CM-NEXT: AND_INT T19.X, T21.Y, literal.x, 7894; CM-NEXT: MOV T19.Y, 0.0, 7895; CM-NEXT: LSHR * T30.Z, T21.X, literal.y, 7896; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7897; CM-NEXT: AND_INT T30.X, T21.X, literal.x, 7898; CM-NEXT: MOV T30.Y, 0.0, 7899; CM-NEXT: LSHR * T31.Z, T21.W, literal.y, 7900; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7901; CM-NEXT: AND_INT T31.X, T21.W, literal.x, 7902; CM-NEXT: MOV T31.Y, 0.0, 7903; CM-NEXT: LSHR * T32.Z, T21.Z, literal.y, 7904; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7905; CM-NEXT: AND_INT T32.X, T21.Z, literal.x, 7906; CM-NEXT: MOV T32.Y, 0.0, 7907; CM-NEXT: LSHR * T21.Z, T22.Y, literal.y, 7908; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7909; CM-NEXT: AND_INT T21.X, T22.Y, literal.x, 7910; CM-NEXT: MOV T21.Y, 0.0, 7911; CM-NEXT: LSHR * T33.Z, T22.X, literal.y, 7912; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7913; CM-NEXT: AND_INT T33.X, T22.X, literal.x, 7914; CM-NEXT: MOV T33.Y, 0.0, 7915; CM-NEXT: LSHR * T34.Z, T22.W, literal.y, 7916; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7917; CM-NEXT: AND_INT T34.X, T22.W, literal.x, 7918; CM-NEXT: MOV T34.Y, 0.0, 7919; CM-NEXT: LSHR * T35.Z, T22.Z, literal.y, 7920; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7921; CM-NEXT: AND_INT T35.X, T22.Z, literal.x, 7922; CM-NEXT: MOV T35.Y, 0.0, 7923; CM-NEXT: MOV * T23.W, 0.0, 7924; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 7925; CM-NEXT: MOV * T24.W, 0.0, 7926; CM-NEXT: MOV * T25.W, 0.0, 7927; CM-NEXT: MOV * T26.W, 0.0, 7928; CM-NEXT: MOV * T20.W, 0.0, 7929; CM-NEXT: MOV * T27.W, 0.0, 7930; CM-NEXT: MOV * T28.W, 0.0, 7931; CM-NEXT: MOV * T29.W, 0.0, 7932; CM-NEXT: MOV * T19.W, 0.0, 7933; CM-NEXT: MOV * T30.W, 0.0, 7934; CM-NEXT: MOV * T31.W, 0.0, 7935; CM-NEXT: MOV * T32.W, 0.0, 7936; CM-NEXT: MOV * T21.W, 0.0, 7937; CM-NEXT: MOV * T33.W, 0.0, 7938; CM-NEXT: MOV * T34.W, 0.0, 7939; CM-NEXT: MOV * T35.W, 0.0, 7940; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 7941; CM-NEXT: 224(3.138909e-43), 0(0.000000e+00) 7942; CM-NEXT: LSHR T22.X, PV.W, literal.x, 7943; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7944; CM-NEXT: 2(2.802597e-45), 240(3.363116e-43) 7945; CM-NEXT: LSHR T36.X, PV.W, literal.x, 7946; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7947; CM-NEXT: 2(2.802597e-45), 192(2.690493e-43) 7948; CM-NEXT: LSHR T37.X, PV.W, literal.x, 7949; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7950; CM-NEXT: 2(2.802597e-45), 208(2.914701e-43) 7951; CM-NEXT: LSHR T38.X, PV.W, literal.x, 7952; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7953; CM-NEXT: 2(2.802597e-45), 160(2.242078e-43) 7954; CM-NEXT: LSHR T39.X, PV.W, literal.x, 7955; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7956; CM-NEXT: 2(2.802597e-45), 176(2.466285e-43) 7957; CM-NEXT: LSHR T40.X, PV.W, literal.x, 7958; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7959; CM-NEXT: 2(2.802597e-45), 128(1.793662e-43) 7960; CM-NEXT: LSHR T41.X, PV.W, literal.x, 7961; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7962; CM-NEXT: 2(2.802597e-45), 144(2.017870e-43) 7963; CM-NEXT: LSHR T42.X, PV.W, literal.x, 7964; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7965; CM-NEXT: 2(2.802597e-45), 96(1.345247e-43) 7966; CM-NEXT: LSHR T43.X, PV.W, literal.x, 7967; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7968; CM-NEXT: 2(2.802597e-45), 112(1.569454e-43) 7969; CM-NEXT: LSHR T44.X, PV.W, literal.x, 7970; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7971; CM-NEXT: 2(2.802597e-45), 64(8.968310e-44) 7972; CM-NEXT: LSHR T45.X, PV.W, literal.x, 7973; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7974; CM-NEXT: 2(2.802597e-45), 80(1.121039e-43) 7975; CM-NEXT: LSHR T46.X, PV.W, literal.x, 7976; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7977; CM-NEXT: 2(2.802597e-45), 32(4.484155e-44) 7978; CM-NEXT: LSHR T47.X, PV.W, literal.x, 7979; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7980; CM-NEXT: 2(2.802597e-45), 48(6.726233e-44) 7981; CM-NEXT: LSHR * T48.X, PV.W, literal.x, 7982; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 7983; CM-NEXT: LSHR T49.X, KC0[2].Y, literal.x, 7984; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7985; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 7986; CM-NEXT: LSHR * T50.X, PV.W, literal.x, 7987; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 7988 %load = load <32 x i16>, <32 x i16> addrspace(1)* %in 7989 %ext = zext <32 x i16> %load to <32 x i64> 7990 store <32 x i64> %ext, <32 x i64> addrspace(1)* %out 7991 ret void 7992} 7993 7994define amdgpu_kernel void @global_sextload_v32i16_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i16> addrspace(1)* %in) #0 { 7995; GCN-NOHSA-SI-LABEL: global_sextload_v32i16_to_v32i64: 7996; GCN-NOHSA-SI: ; %bb.0: 7997; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 7998; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 7999; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 8000; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s2 8001; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s3 8002; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 8003; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s6 8004; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s7 8005; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[12:15], off, s[8:11], 0 offset:48 8006; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 offset:32 8007; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 8008; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 8009; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[8:11], off, s[8:11], 0 8010; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 8011; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(3) 8012; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v16, v15 8013; GCN-NOHSA-SI-NEXT: v_bfe_i32 v16, v16, 0, 16 8014; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[18:19], v[14:15], 48 8015; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v17, 31, v16 8016; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:240 8017; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 8018; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[17:18], v[12:13], 48 8019; GCN-NOHSA-SI-NEXT: v_bfe_i32 v15, v13, 0, 16 8020; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v16, 31, v15 8021; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:208 8022; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(4) 8023; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v13, v3 8024; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 8025; GCN-NOHSA-SI-NEXT: v_bfe_i32 v15, v13, 0, 16 8026; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[17:18], v[2:3], 48 8027; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v16, 31, v15 8028; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:176 8029; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 8030; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[17:18], v[0:1], 48 8031; GCN-NOHSA-SI-NEXT: v_bfe_i32 v15, v1, 0, 16 8032; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v16, 31, v15 8033; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:144 8034; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(4) 8035; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, v7 8036; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 8037; GCN-NOHSA-SI-NEXT: v_bfe_i32 v15, v1, 0, 16 8038; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[17:18], v[6:7], 48 8039; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v16, 31, v15 8040; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:112 8041; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 8042; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[17:18], v[4:5], 48 8043; GCN-NOHSA-SI-NEXT: v_bfe_i32 v15, v5, 0, 16 8044; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v16, 31, v15 8045; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:80 8046; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, v11 8047; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 8048; GCN-NOHSA-SI-NEXT: v_bfe_i32 v15, v1, 0, 16 8049; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[17:18], v[10:11], 48 8050; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v16, 31, v15 8051; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:48 8052; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 8053; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[17:18], v[8:9], 48 8054; GCN-NOHSA-SI-NEXT: v_bfe_i32 v15, v9, 0, 16 8055; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v16, 31, v15 8056; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:16 8057; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v1, 16, v14 8058; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 8059; GCN-NOHSA-SI-NEXT: v_bfe_i32 v15, v1, 0, 16 8060; GCN-NOHSA-SI-NEXT: v_bfe_i32 v13, v14, 0, 16 8061; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v14, 31, v13 8062; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v16, 31, v15 8063; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[13:16], off, s[0:3], 0 offset:224 8064; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v1, 16, v12 8065; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v3, 16, v2 8066; GCN-NOHSA-SI-NEXT: v_bfe_i32 v11, v12, 0, 16 8067; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 8068; GCN-NOHSA-SI-NEXT: v_bfe_i32 v13, v1, 0, 16 8069; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v9, 16, v4 8070; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 8071; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v14, 31, v13 8072; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:192 8073; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v7, 16, v10 8074; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 8075; GCN-NOHSA-SI-NEXT: v_bfe_i32 v13, v3, 0, 16 8076; GCN-NOHSA-SI-NEXT: v_bfe_i32 v11, v2, 0, 16 8077; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 8078; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v14, 31, v13 8079; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:160 8080; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v1, 16, v8 8081; GCN-NOHSA-SI-NEXT: v_bfe_i32 v3, v1, 0, 16 8082; GCN-NOHSA-SI-NEXT: v_bfe_i32 v1, v8, 0, 16 8083; GCN-NOHSA-SI-NEXT: v_bfe_i32 v5, v10, 0, 16 8084; GCN-NOHSA-SI-NEXT: v_bfe_i32 v7, v7, 0, 16 8085; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 8086; GCN-NOHSA-SI-NEXT: v_bfe_i32 v11, v9, 0, 16 8087; GCN-NOHSA-SI-NEXT: v_bfe_i32 v9, v4, 0, 16 8088; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v2, 16, v6 8089; GCN-NOHSA-SI-NEXT: v_bfe_i32 v13, v6, 0, 16 8090; GCN-NOHSA-SI-NEXT: v_bfe_i32 v15, v2, 0, 16 8091; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v2, 16, v0 8092; GCN-NOHSA-SI-NEXT: v_bfe_i32 v17, v0, 0, 16 8093; GCN-NOHSA-SI-NEXT: v_bfe_i32 v19, v2, 0, 16 8094; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v2, 31, v1 8095; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v6, 31, v5 8096; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v10, 31, v9 8097; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v14, 31, v13 8098; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v18, 31, v17 8099; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v4, 31, v3 8100; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v8, 31, v7 8101; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 8102; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v16, 31, v15 8103; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v20, 31, v19 8104; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[17:20], off, s[0:3], 0 offset:128 8105; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[13:16], off, s[0:3], 0 offset:96 8106; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[9:12], off, s[0:3], 0 offset:64 8107; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[5:8], off, s[0:3], 0 offset:32 8108; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[1:4], off, s[0:3], 0 8109; GCN-NOHSA-SI-NEXT: s_endpgm 8110; 8111; GCN-HSA-LABEL: global_sextload_v32i16_to_v32i64: 8112; GCN-HSA: ; %bb.0: 8113; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 8114; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 8115; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 8116; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 8117; GCN-HSA-NEXT: flat_load_dwordx4 v[8:11], v[0:1] 8118; GCN-HSA-NEXT: s_add_u32 s4, s2, 48 8119; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 8120; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 8121; GCN-HSA-NEXT: v_mov_b32_e32 v1, s5 8122; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 8123; GCN-HSA-NEXT: s_add_u32 s4, s2, 32 8124; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 8125; GCN-HSA-NEXT: v_mov_b32_e32 v4, s4 8126; GCN-HSA-NEXT: v_mov_b32_e32 v5, s5 8127; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5] 8128; GCN-HSA-NEXT: s_add_u32 s2, s2, 16 8129; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0 8130; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 8131; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 8132; GCN-HSA-NEXT: flat_load_dwordx4 v[12:15], v[12:13] 8133; GCN-HSA-NEXT: s_add_u32 s2, s0, 48 8134; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 8135; GCN-HSA-NEXT: s_add_u32 s4, s0, 16 8136; GCN-HSA-NEXT: s_addc_u32 s5, s1, 0 8137; GCN-HSA-NEXT: v_mov_b32_e32 v21, s5 8138; GCN-HSA-NEXT: v_mov_b32_e32 v20, s4 8139; GCN-HSA-NEXT: s_waitcnt vmcnt(3) 8140; GCN-HSA-NEXT: v_ashr_i64 v[18:19], v[8:9], 48 8141; GCN-HSA-NEXT: v_bfe_i32 v16, v9, 0, 16 8142; GCN-HSA-NEXT: v_ashrrev_i32_e32 v17, 31, v16 8143; GCN-HSA-NEXT: flat_store_dwordx4 v[20:21], v[16:19] 8144; GCN-HSA-NEXT: v_mov_b32_e32 v21, s3 8145; GCN-HSA-NEXT: v_mov_b32_e32 v20, s2 8146; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xf0 8147; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 8148; GCN-HSA-NEXT: s_add_u32 s4, s0, 0xd0 8149; GCN-HSA-NEXT: s_addc_u32 s5, s1, 0 8150; GCN-HSA-NEXT: s_add_u32 s6, s0, 0xb0 8151; GCN-HSA-NEXT: s_addc_u32 s7, s1, 0 8152; GCN-HSA-NEXT: s_add_u32 s8, s0, 0x90 8153; GCN-HSA-NEXT: s_addc_u32 s9, s1, 0 8154; GCN-HSA-NEXT: s_add_u32 s10, s0, 0x70 8155; GCN-HSA-NEXT: s_addc_u32 s11, s1, 0 8156; GCN-HSA-NEXT: v_mov_b32_e32 v9, v11 8157; GCN-HSA-NEXT: s_add_u32 s12, s0, 0x50 8158; GCN-HSA-NEXT: v_bfe_i32 v16, v9, 0, 16 8159; GCN-HSA-NEXT: v_ashr_i64 v[18:19], v[10:11], 48 8160; GCN-HSA-NEXT: s_addc_u32 s13, s1, 0 8161; GCN-HSA-NEXT: v_ashrrev_i32_e32 v17, 31, v16 8162; GCN-HSA-NEXT: s_add_u32 s14, s0, 32 8163; GCN-HSA-NEXT: v_lshrrev_b32_e32 v9, 16, v10 8164; GCN-HSA-NEXT: flat_store_dwordx4 v[20:21], v[16:19] 8165; GCN-HSA-NEXT: s_addc_u32 s15, s1, 0 8166; GCN-HSA-NEXT: v_bfe_i32 v18, v9, 0, 16 8167; GCN-HSA-NEXT: v_bfe_i32 v16, v10, 0, 16 8168; GCN-HSA-NEXT: v_mov_b32_e32 v9, s14 8169; GCN-HSA-NEXT: v_ashrrev_i32_e32 v17, 31, v16 8170; GCN-HSA-NEXT: v_ashrrev_i32_e32 v19, 31, v18 8171; GCN-HSA-NEXT: v_mov_b32_e32 v10, s15 8172; GCN-HSA-NEXT: flat_store_dwordx4 v[9:10], v[16:19] 8173; GCN-HSA-NEXT: v_lshrrev_b32_e32 v9, 16, v8 8174; GCN-HSA-NEXT: v_mov_b32_e32 v17, s1 8175; GCN-HSA-NEXT: v_bfe_i32 v8, v8, 0, 16 8176; GCN-HSA-NEXT: v_bfe_i32 v10, v9, 0, 16 8177; GCN-HSA-NEXT: v_mov_b32_e32 v16, s0 8178; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 31, v8 8179; GCN-HSA-NEXT: v_ashrrev_i32_e32 v11, 31, v10 8180; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[8:11] 8181; GCN-HSA-NEXT: v_mov_b32_e32 v17, s5 8182; GCN-HSA-NEXT: s_waitcnt vmcnt(6) 8183; GCN-HSA-NEXT: v_ashr_i64 v[10:11], v[0:1], 48 8184; GCN-HSA-NEXT: v_bfe_i32 v8, v1, 0, 16 8185; GCN-HSA-NEXT: v_mov_b32_e32 v16, s4 8186; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 31, v8 8187; GCN-HSA-NEXT: v_mov_b32_e32 v1, v3 8188; GCN-HSA-NEXT: v_mov_b32_e32 v19, s3 8189; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[8:11] 8190; GCN-HSA-NEXT: v_mov_b32_e32 v18, s2 8191; GCN-HSA-NEXT: v_bfe_i32 v8, v1, 0, 16 8192; GCN-HSA-NEXT: v_ashr_i64 v[10:11], v[2:3], 48 8193; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 31, v8 8194; GCN-HSA-NEXT: flat_store_dwordx4 v[18:19], v[8:11] 8195; GCN-HSA-NEXT: v_mov_b32_e32 v19, s9 8196; GCN-HSA-NEXT: s_waitcnt vmcnt(7) 8197; GCN-HSA-NEXT: v_ashr_i64 v[10:11], v[4:5], 48 8198; GCN-HSA-NEXT: v_bfe_i32 v8, v5, 0, 16 8199; GCN-HSA-NEXT: v_mov_b32_e32 v18, s8 8200; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 31, v8 8201; GCN-HSA-NEXT: v_mov_b32_e32 v1, v7 8202; GCN-HSA-NEXT: v_mov_b32_e32 v17, s7 8203; GCN-HSA-NEXT: flat_store_dwordx4 v[18:19], v[8:11] 8204; GCN-HSA-NEXT: v_mov_b32_e32 v16, s6 8205; GCN-HSA-NEXT: v_bfe_i32 v8, v1, 0, 16 8206; GCN-HSA-NEXT: v_ashr_i64 v[10:11], v[6:7], 48 8207; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 31, v8 8208; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[8:11] 8209; GCN-HSA-NEXT: v_mov_b32_e32 v17, s13 8210; GCN-HSA-NEXT: s_waitcnt vmcnt(8) 8211; GCN-HSA-NEXT: v_ashr_i64 v[9:10], v[12:13], 48 8212; GCN-HSA-NEXT: v_bfe_i32 v7, v13, 0, 16 8213; GCN-HSA-NEXT: v_mov_b32_e32 v16, s12 8214; GCN-HSA-NEXT: v_ashrrev_i32_e32 v8, 31, v7 8215; GCN-HSA-NEXT: v_mov_b32_e32 v3, v15 8216; GCN-HSA-NEXT: v_mov_b32_e32 v19, s11 8217; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[7:10] 8218; GCN-HSA-NEXT: v_mov_b32_e32 v18, s10 8219; GCN-HSA-NEXT: v_bfe_i32 v7, v3, 0, 16 8220; GCN-HSA-NEXT: v_ashr_i64 v[9:10], v[14:15], 48 8221; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v2 8222; GCN-HSA-NEXT: v_ashrrev_i32_e32 v8, 31, v7 8223; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xe0 8224; GCN-HSA-NEXT: flat_store_dwordx4 v[18:19], v[7:10] 8225; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 8226; GCN-HSA-NEXT: v_bfe_i32 v7, v2, 0, 16 8227; GCN-HSA-NEXT: v_bfe_i32 v9, v1, 0, 16 8228; GCN-HSA-NEXT: v_mov_b32_e32 v1, s2 8229; GCN-HSA-NEXT: v_mov_b32_e32 v2, s3 8230; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xc0 8231; GCN-HSA-NEXT: v_ashrrev_i32_e32 v8, 31, v7 8232; GCN-HSA-NEXT: v_ashrrev_i32_e32 v10, 31, v9 8233; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 8234; GCN-HSA-NEXT: flat_store_dwordx4 v[1:2], v[7:10] 8235; GCN-HSA-NEXT: v_lshrrev_b32_e32 v5, 16, v6 8236; GCN-HSA-NEXT: v_mov_b32_e32 v8, s3 8237; GCN-HSA-NEXT: v_mov_b32_e32 v7, s2 8238; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xa0 8239; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 8240; GCN-HSA-NEXT: v_lshrrev_b32_e32 v13, 16, v4 8241; GCN-HSA-NEXT: v_bfe_i32 v11, v4, 0, 16 8242; GCN-HSA-NEXT: v_bfe_i32 v17, v5, 0, 16 8243; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 8244; GCN-HSA-NEXT: v_bfe_i32 v15, v6, 0, 16 8245; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 8246; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x80 8247; GCN-HSA-NEXT: v_lshrrev_b32_e32 v3, 16, v0 8248; GCN-HSA-NEXT: v_ashrrev_i32_e32 v16, 31, v15 8249; GCN-HSA-NEXT: v_ashrrev_i32_e32 v18, 31, v17 8250; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 8251; GCN-HSA-NEXT: v_bfe_i32 v0, v0, 0, 16 8252; GCN-HSA-NEXT: v_bfe_i32 v2, v3, 0, 16 8253; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[15:18] 8254; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 8255; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 31, v0 8256; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 31, v2 8257; GCN-HSA-NEXT: v_bfe_i32 v13, v13, 0, 16 8258; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 8259; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x60 8260; GCN-HSA-NEXT: v_lshrrev_b32_e32 v9, 16, v14 8261; GCN-HSA-NEXT: flat_store_dwordx4 v[7:8], v[0:3] 8262; GCN-HSA-NEXT: v_bfe_i32 v7, v14, 0, 16 8263; GCN-HSA-NEXT: v_lshrrev_b32_e32 v2, 16, v12 8264; GCN-HSA-NEXT: v_bfe_i32 v0, v12, 0, 16 8265; GCN-HSA-NEXT: v_ashrrev_i32_e32 v12, 31, v11 8266; GCN-HSA-NEXT: v_ashrrev_i32_e32 v14, 31, v13 8267; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 8268; GCN-HSA-NEXT: v_bfe_i32 v9, v9, 0, 16 8269; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[11:14] 8270; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 8271; GCN-HSA-NEXT: s_add_u32 s0, s0, 64 8272; GCN-HSA-NEXT: v_ashrrev_i32_e32 v8, 31, v7 8273; GCN-HSA-NEXT: v_ashrrev_i32_e32 v10, 31, v9 8274; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 8275; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 8276; GCN-HSA-NEXT: v_bfe_i32 v2, v2, 0, 16 8277; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[7:10] 8278; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 8279; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 31, v0 8280; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 31, v2 8281; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 8282; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 8283; GCN-HSA-NEXT: s_endpgm 8284; 8285; GCN-NOHSA-VI-LABEL: global_sextload_v32i16_to_v32i64: 8286; GCN-NOHSA-VI: ; %bb.0: 8287; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 8288; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 8289; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 8290; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s2 8291; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s3 8292; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 8293; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s6 8294; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s7 8295; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[12:15], off, s[8:11], 0 offset:48 8296; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[8:11], off, s[8:11], 0 offset:32 8297; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 8298; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 offset:16 8299; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 8300; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 8301; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(3) 8302; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v16, 16, v14 8303; GCN-NOHSA-VI-NEXT: v_bfe_i32 v18, v16, 0, 16 8304; GCN-NOHSA-VI-NEXT: v_bfe_i32 v16, v14, 0, 16 8305; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v17, 31, v16 8306; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v19, 31, v18 8307; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v14, v15 8308; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v15, 16, v15 8309; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:224 8310; GCN-NOHSA-VI-NEXT: v_bfe_i32 v14, v14, 0, 16 8311; GCN-NOHSA-VI-NEXT: v_bfe_i32 v16, v15, 0, 16 8312; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v15, 31, v14 8313; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v17, 31, v16 8314; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[14:17], off, s[0:3], 0 offset:240 8315; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(2) 8316; GCN-NOHSA-VI-NEXT: v_bfe_i32 v18, v1, 0, 16 8317; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v14, 16, v12 8318; GCN-NOHSA-VI-NEXT: v_bfe_i32 v16, v14, 0, 16 8319; GCN-NOHSA-VI-NEXT: v_bfe_i32 v14, v12, 0, 16 8320; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v15, 31, v14 8321; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v17, 31, v16 8322; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[14:17], off, s[0:3], 0 offset:192 8323; GCN-NOHSA-VI-NEXT: v_bfe_i32 v12, v13, 0, 16 8324; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v14, 16, v13 8325; GCN-NOHSA-VI-NEXT: v_bfe_i32 v14, v14, 0, 16 8326; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v13, 31, v12 8327; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v15, 31, v14 8328; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v16, v11 8329; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:208 8330; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v17, 16, v11 8331; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v12, 16, v10 8332; GCN-NOHSA-VI-NEXT: v_bfe_i32 v11, v16, 0, 16 8333; GCN-NOHSA-VI-NEXT: v_bfe_i32 v16, v12, 0, 16 8334; GCN-NOHSA-VI-NEXT: v_bfe_i32 v14, v10, 0, 16 8335; GCN-NOHSA-VI-NEXT: v_bfe_i32 v13, v17, 0, 16 8336; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v15, 31, v14 8337; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v17, 31, v16 8338; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[14:17], off, s[0:3], 0 offset:160 8339; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 8340; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v14, 31, v13 8341; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:176 8342; GCN-NOHSA-VI-NEXT: v_bfe_i32 v10, v5, 0, 16 8343; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v11, 16, v8 8344; GCN-NOHSA-VI-NEXT: v_bfe_i32 v13, v11, 0, 16 8345; GCN-NOHSA-VI-NEXT: v_bfe_i32 v11, v8, 0, 16 8346; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 8347; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v14, 31, v13 8348; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v8, 16, v9 8349; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:128 8350; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v5, 16, v5 8351; GCN-NOHSA-VI-NEXT: v_bfe_i32 v11, v9, 0, 16 8352; GCN-NOHSA-VI-NEXT: v_bfe_i32 v13, v8, 0, 16 8353; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 8354; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v14, 31, v13 8355; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v9, 16, v2 8356; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:144 8357; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v8, v3 8358; GCN-NOHSA-VI-NEXT: v_bfe_i32 v13, v9, 0, 16 8359; GCN-NOHSA-VI-NEXT: v_bfe_i32 v11, v2, 0, 16 8360; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 8361; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v14, 31, v13 8362; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v2, 16, v3 8363; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:96 8364; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v3, 16, v4 8365; GCN-NOHSA-VI-NEXT: v_bfe_i32 v11, v8, 0, 16 8366; GCN-NOHSA-VI-NEXT: v_bfe_i32 v13, v2, 0, 16 8367; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 8368; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v14, 31, v13 8369; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v2, 16, v0 8370; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:112 8371; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v19, 31, v18 8372; GCN-NOHSA-VI-NEXT: v_bfe_i32 v13, v2, 0, 16 8373; GCN-NOHSA-VI-NEXT: v_bfe_i32 v11, v0, 0, 16 8374; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, v7 8375; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v2, 16, v7 8376; GCN-NOHSA-VI-NEXT: v_bfe_i32 v7, v3, 0, 16 8377; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v3, 16, v6 8378; GCN-NOHSA-VI-NEXT: v_bfe_i32 v16, v3, 0, 16 8379; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v3, 16, v1 8380; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 8381; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v14, 31, v13 8382; GCN-NOHSA-VI-NEXT: v_bfe_i32 v20, v3, 0, 16 8383; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:64 8384; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v0, 0, 16 8385; GCN-NOHSA-VI-NEXT: v_bfe_i32 v12, v5, 0, 16 8386; GCN-NOHSA-VI-NEXT: v_bfe_i32 v2, v2, 0, 16 8387; GCN-NOHSA-VI-NEXT: v_bfe_i32 v5, v4, 0, 16 8388; GCN-NOHSA-VI-NEXT: v_bfe_i32 v14, v6, 0, 16 8389; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v21, 31, v20 8390; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v11, 31, v10 8391; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v13, 31, v12 8392; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v6, 31, v5 8393; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v8, 31, v7 8394; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 8395; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v3, 31, v2 8396; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v15, 31, v14 8397; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v17, 31, v16 8398; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[18:21], off, s[0:3], 0 offset:80 8399; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[14:17], off, s[0:3], 0 offset:32 8400; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 8401; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[5:8], off, s[0:3], 0 8402; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[10:13], off, s[0:3], 0 offset:16 8403; GCN-NOHSA-VI-NEXT: s_endpgm 8404; 8405; EG-LABEL: global_sextload_v32i16_to_v32i64: 8406; EG: ; %bb.0: 8407; EG-NEXT: ALU 0, @30, KC0[CB0:0-32], KC1[] 8408; EG-NEXT: TEX 0 @22 8409; EG-NEXT: ALU 56, @31, KC0[CB0:0-32], KC1[] 8410; EG-NEXT: TEX 2 @24 8411; EG-NEXT: ALU 74, @88, KC0[CB0:0-32], KC1[] 8412; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T50.XYZW, T38.X, 0 8413; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T49.XYZW, T36.X, 0 8414; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T48.XYZW, T34.X, 0 8415; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T39.XYZW, T33.X, 0 8416; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T47.XYZW, T32.X, 0 8417; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T46.XYZW, T31.X, 0 8418; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T45.XYZW, T30.X, 0 8419; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T40.XYZW, T29.X, 0 8420; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T44.XYZW, T28.X, 0 8421; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T43.XYZW, T27.X, 0 8422; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T42.XYZW, T26.X, 0 8423; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T25.X, 0 8424; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T41.XYZW, T24.X, 0 8425; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T23.X, 0 8426; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T37.XYZW, T22.X, 0 8427; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T35.XYZW, T21.X, 1 8428; EG-NEXT: CF_END 8429; EG-NEXT: Fetch clause starting at 22: 8430; EG-NEXT: VTX_READ_128 T20.XYZW, T19.X, 0, #1 8431; EG-NEXT: Fetch clause starting at 24: 8432; EG-NEXT: VTX_READ_128 T38.XYZW, T19.X, 48, #1 8433; EG-NEXT: VTX_READ_128 T39.XYZW, T19.X, 32, #1 8434; EG-NEXT: VTX_READ_128 T40.XYZW, T19.X, 16, #1 8435; EG-NEXT: ALU clause starting at 30: 8436; EG-NEXT: MOV * T19.X, KC0[2].Z, 8437; EG-NEXT: ALU clause starting at 31: 8438; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 8439; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 8440; EG-NEXT: LSHR T21.X, PV.W, literal.x, 8441; EG-NEXT: LSHR * T22.X, KC0[2].Y, literal.x, 8442; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 8443; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 8444; EG-NEXT: 48(6.726233e-44), 0(0.000000e+00) 8445; EG-NEXT: LSHR T23.X, PV.W, literal.x, 8446; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8447; EG-NEXT: 2(2.802597e-45), 32(4.484155e-44) 8448; EG-NEXT: LSHR T24.X, PV.W, literal.x, 8449; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8450; EG-NEXT: 2(2.802597e-45), 80(1.121039e-43) 8451; EG-NEXT: LSHR T25.X, PV.W, literal.x, 8452; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8453; EG-NEXT: 2(2.802597e-45), 64(8.968310e-44) 8454; EG-NEXT: LSHR T26.X, PV.W, literal.x, 8455; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8456; EG-NEXT: 2(2.802597e-45), 112(1.569454e-43) 8457; EG-NEXT: LSHR T27.X, PV.W, literal.x, 8458; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8459; EG-NEXT: 2(2.802597e-45), 96(1.345247e-43) 8460; EG-NEXT: LSHR T28.X, PV.W, literal.x, 8461; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8462; EG-NEXT: 2(2.802597e-45), 144(2.017870e-43) 8463; EG-NEXT: LSHR T29.X, PV.W, literal.x, 8464; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8465; EG-NEXT: 2(2.802597e-45), 128(1.793662e-43) 8466; EG-NEXT: LSHR T30.X, PV.W, literal.x, 8467; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8468; EG-NEXT: 2(2.802597e-45), 176(2.466285e-43) 8469; EG-NEXT: LSHR T31.X, PV.W, literal.x, 8470; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8471; EG-NEXT: 2(2.802597e-45), 160(2.242078e-43) 8472; EG-NEXT: LSHR T32.X, PV.W, literal.x, 8473; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8474; EG-NEXT: 2(2.802597e-45), 208(2.914701e-43) 8475; EG-NEXT: LSHR T33.X, PV.W, literal.x, 8476; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8477; EG-NEXT: 2(2.802597e-45), 192(2.690493e-43) 8478; EG-NEXT: LSHR T34.X, PV.W, literal.x, 8479; EG-NEXT: ADD_INT T0.W, KC0[2].Y, literal.y, 8480; EG-NEXT: ASHR * T35.W, T20.Y, literal.z, 8481; EG-NEXT: 2(2.802597e-45), 240(3.363116e-43) 8482; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 8483; EG-NEXT: LSHR T36.X, PV.W, literal.x, 8484; EG-NEXT: ASHR T35.Z, T20.Y, literal.y, 8485; EG-NEXT: ASHR * T37.W, T20.X, literal.z, 8486; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 8487; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 8488; EG-NEXT: BFE_INT T35.X, T20.Y, 0.0, literal.x, 8489; EG-NEXT: ASHR * T37.Z, T20.X, literal.x, 8490; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 8491; EG-NEXT: BFE_INT T37.X, T20.X, 0.0, literal.x, 8492; EG-NEXT: ASHR T35.Y, PV.X, literal.y, 8493; EG-NEXT: ASHR * T19.W, T20.W, literal.y, 8494; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8495; EG-NEXT: ALU clause starting at 88: 8496; EG-NEXT: ASHR T19.Z, T20.W, literal.x, 8497; EG-NEXT: ASHR * T41.W, T20.Z, literal.y, 8498; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8499; EG-NEXT: BFE_INT T19.X, T20.W, 0.0, literal.x, 8500; EG-NEXT: ASHR T37.Y, T37.X, literal.y, 8501; EG-NEXT: ASHR T41.Z, T20.Z, literal.x, 8502; EG-NEXT: ASHR * T20.W, T40.Y, literal.y, 8503; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8504; EG-NEXT: BFE_INT T41.X, T20.Z, 0.0, literal.x, 8505; EG-NEXT: ASHR T19.Y, PV.X, literal.y, 8506; EG-NEXT: ASHR T20.Z, T40.Y, literal.x, 8507; EG-NEXT: ASHR * T42.W, T40.X, literal.y, 8508; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8509; EG-NEXT: BFE_INT T20.X, T40.Y, 0.0, literal.x, 8510; EG-NEXT: ASHR T41.Y, PV.X, literal.y, 8511; EG-NEXT: ASHR T42.Z, T40.X, literal.x, 8512; EG-NEXT: ASHR * T43.W, T40.W, literal.y, 8513; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8514; EG-NEXT: BFE_INT T42.X, T40.X, 0.0, literal.x, 8515; EG-NEXT: ASHR T20.Y, PV.X, literal.y, 8516; EG-NEXT: ASHR T43.Z, T40.W, literal.x, 8517; EG-NEXT: ASHR * T44.W, T40.Z, literal.y, 8518; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8519; EG-NEXT: BFE_INT T43.X, T40.W, 0.0, literal.x, 8520; EG-NEXT: ASHR T42.Y, PV.X, literal.y, 8521; EG-NEXT: ASHR T44.Z, T40.Z, literal.x, 8522; EG-NEXT: ASHR * T40.W, T39.Y, literal.y, 8523; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8524; EG-NEXT: BFE_INT T44.X, T40.Z, 0.0, literal.x, 8525; EG-NEXT: ASHR T43.Y, PV.X, literal.y, 8526; EG-NEXT: ASHR T40.Z, T39.Y, literal.x, 8527; EG-NEXT: ASHR * T45.W, T39.X, literal.y, 8528; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8529; EG-NEXT: BFE_INT T40.X, T39.Y, 0.0, literal.x, 8530; EG-NEXT: ASHR T44.Y, PV.X, literal.y, 8531; EG-NEXT: ASHR T45.Z, T39.X, literal.x, 8532; EG-NEXT: ASHR * T46.W, T39.W, literal.y, 8533; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8534; EG-NEXT: BFE_INT T45.X, T39.X, 0.0, literal.x, 8535; EG-NEXT: ASHR T40.Y, PV.X, literal.y, 8536; EG-NEXT: ASHR T46.Z, T39.W, literal.x, 8537; EG-NEXT: ASHR * T47.W, T39.Z, literal.y, 8538; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8539; EG-NEXT: BFE_INT T46.X, T39.W, 0.0, literal.x, 8540; EG-NEXT: ASHR T45.Y, PV.X, literal.y, 8541; EG-NEXT: ASHR T47.Z, T39.Z, literal.x, 8542; EG-NEXT: ASHR * T39.W, T38.Y, literal.y, 8543; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8544; EG-NEXT: BFE_INT T47.X, T39.Z, 0.0, literal.x, 8545; EG-NEXT: ASHR T46.Y, PV.X, literal.y, 8546; EG-NEXT: ASHR T39.Z, T38.Y, literal.x, 8547; EG-NEXT: ASHR * T48.W, T38.X, literal.y, 8548; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8549; EG-NEXT: BFE_INT T39.X, T38.Y, 0.0, literal.x, 8550; EG-NEXT: ASHR T47.Y, PV.X, literal.y, 8551; EG-NEXT: ASHR T48.Z, T38.X, literal.x, 8552; EG-NEXT: ASHR * T49.W, T38.W, literal.y, 8553; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8554; EG-NEXT: BFE_INT T48.X, T38.X, 0.0, literal.x, 8555; EG-NEXT: ASHR T39.Y, PV.X, literal.y, 8556; EG-NEXT: ASHR T49.Z, T38.W, literal.x, 8557; EG-NEXT: ASHR * T50.W, T38.Z, literal.y, 8558; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8559; EG-NEXT: BFE_INT T49.X, T38.W, 0.0, literal.x, 8560; EG-NEXT: ASHR T48.Y, PV.X, literal.y, 8561; EG-NEXT: ASHR * T50.Z, T38.Z, literal.x, 8562; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8563; EG-NEXT: BFE_INT T50.X, T38.Z, 0.0, literal.x, 8564; EG-NEXT: ASHR T49.Y, PV.X, literal.y, 8565; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 8566; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8567; EG-NEXT: 224(3.138909e-43), 0(0.000000e+00) 8568; EG-NEXT: LSHR T38.X, PV.W, literal.x, 8569; EG-NEXT: ASHR * T50.Y, PV.X, literal.y, 8570; EG-NEXT: 2(2.802597e-45), 31(4.344025e-44) 8571; 8572; CM-LABEL: global_sextload_v32i16_to_v32i64: 8573; CM: ; %bb.0: 8574; CM-NEXT: ALU 0, @30, KC0[CB0:0-32], KC1[] 8575; CM-NEXT: TEX 0 @22 8576; CM-NEXT: ALU 55, @31, KC0[CB0:0-32], KC1[] 8577; CM-NEXT: TEX 2 @24 8578; CM-NEXT: ALU 73, @87, KC0[CB0:0-32], KC1[] 8579; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T38, T50.X 8580; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T49, T36.X 8581; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T48, T34.X 8582; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T47, T33.X 8583; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T39, T32.X 8584; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T46, T31.X 8585; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T45, T30.X 8586; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T44, T29.X 8587; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T40, T28.X 8588; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T43, T27.X 8589; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T42, T26.X 8590; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T41, T25.X 8591; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T20, T24.X 8592; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T19, T23.X 8593; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T37, T22.X 8594; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T35, T21.X 8595; CM-NEXT: CF_END 8596; CM-NEXT: Fetch clause starting at 22: 8597; CM-NEXT: VTX_READ_128 T20.XYZW, T19.X, 48, #1 8598; CM-NEXT: Fetch clause starting at 24: 8599; CM-NEXT: VTX_READ_128 T38.XYZW, T19.X, 0, #1 8600; CM-NEXT: VTX_READ_128 T39.XYZW, T19.X, 16, #1 8601; CM-NEXT: VTX_READ_128 T40.XYZW, T19.X, 32, #1 8602; CM-NEXT: ALU clause starting at 30: 8603; CM-NEXT: MOV * T19.X, KC0[2].Z, 8604; CM-NEXT: ALU clause starting at 31: 8605; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 8606; CM-NEXT: 224(3.138909e-43), 0(0.000000e+00) 8607; CM-NEXT: LSHR T21.X, PV.W, literal.x, 8608; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8609; CM-NEXT: 2(2.802597e-45), 240(3.363116e-43) 8610; CM-NEXT: LSHR T22.X, PV.W, literal.x, 8611; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8612; CM-NEXT: 2(2.802597e-45), 192(2.690493e-43) 8613; CM-NEXT: LSHR T23.X, PV.W, literal.x, 8614; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8615; CM-NEXT: 2(2.802597e-45), 208(2.914701e-43) 8616; CM-NEXT: LSHR T24.X, PV.W, literal.x, 8617; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8618; CM-NEXT: 2(2.802597e-45), 160(2.242078e-43) 8619; CM-NEXT: LSHR T25.X, PV.W, literal.x, 8620; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8621; CM-NEXT: 2(2.802597e-45), 176(2.466285e-43) 8622; CM-NEXT: LSHR T26.X, PV.W, literal.x, 8623; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8624; CM-NEXT: 2(2.802597e-45), 128(1.793662e-43) 8625; CM-NEXT: LSHR T27.X, PV.W, literal.x, 8626; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8627; CM-NEXT: 2(2.802597e-45), 144(2.017870e-43) 8628; CM-NEXT: LSHR T28.X, PV.W, literal.x, 8629; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8630; CM-NEXT: 2(2.802597e-45), 96(1.345247e-43) 8631; CM-NEXT: LSHR T29.X, PV.W, literal.x, 8632; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8633; CM-NEXT: 2(2.802597e-45), 112(1.569454e-43) 8634; CM-NEXT: LSHR T30.X, PV.W, literal.x, 8635; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8636; CM-NEXT: 2(2.802597e-45), 64(8.968310e-44) 8637; CM-NEXT: LSHR T31.X, PV.W, literal.x, 8638; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8639; CM-NEXT: 2(2.802597e-45), 80(1.121039e-43) 8640; CM-NEXT: LSHR T32.X, PV.W, literal.x, 8641; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8642; CM-NEXT: 2(2.802597e-45), 32(4.484155e-44) 8643; CM-NEXT: LSHR T33.X, PV.W, literal.x, 8644; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8645; CM-NEXT: 2(2.802597e-45), 48(6.726233e-44) 8646; CM-NEXT: LSHR T34.X, PV.W, literal.x, 8647; CM-NEXT: ASHR * T35.W, T20.Z, literal.y, 8648; CM-NEXT: 2(2.802597e-45), 31(4.344025e-44) 8649; CM-NEXT: LSHR T36.X, KC0[2].Y, literal.x, 8650; CM-NEXT: ASHR T35.Z, T20.Z, literal.y, 8651; CM-NEXT: ASHR * T37.W, T20.W, literal.z, 8652; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 8653; CM-NEXT: 31(4.344025e-44), 0(0.000000e+00) 8654; CM-NEXT: BFE_INT T35.X, T20.Z, 0.0, literal.x, 8655; CM-NEXT: ASHR * T37.Z, T20.W, literal.x, 8656; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 8657; CM-NEXT: BFE_INT T37.X, T20.W, 0.0, literal.x, 8658; CM-NEXT: ASHR T35.Y, PV.X, literal.y, 8659; CM-NEXT: ASHR * T19.W, T20.X, literal.y, 8660; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8661; CM-NEXT: ALU clause starting at 87: 8662; CM-NEXT: ASHR T19.Z, T20.X, literal.x, 8663; CM-NEXT: ASHR * T20.W, T20.Y, literal.y, 8664; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8665; CM-NEXT: BFE_INT T19.X, T20.X, 0.0, literal.x, 8666; CM-NEXT: ASHR T37.Y, T37.X, literal.y, BS:VEC_120/SCL_212 8667; CM-NEXT: ASHR T20.Z, T20.Y, literal.x, 8668; CM-NEXT: ASHR * T41.W, T40.Z, literal.y, 8669; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8670; CM-NEXT: BFE_INT T20.X, T20.Y, 0.0, literal.x, 8671; CM-NEXT: ASHR T19.Y, PV.X, literal.y, 8672; CM-NEXT: ASHR T41.Z, T40.Z, literal.x, 8673; CM-NEXT: ASHR * T42.W, T40.W, literal.y, 8674; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8675; CM-NEXT: BFE_INT T41.X, T40.Z, 0.0, literal.x, 8676; CM-NEXT: ASHR T20.Y, PV.X, literal.y, 8677; CM-NEXT: ASHR T42.Z, T40.W, literal.x, 8678; CM-NEXT: ASHR * T43.W, T40.X, literal.y, 8679; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8680; CM-NEXT: BFE_INT T42.X, T40.W, 0.0, literal.x, 8681; CM-NEXT: ASHR T41.Y, PV.X, literal.y, 8682; CM-NEXT: ASHR T43.Z, T40.X, literal.x, 8683; CM-NEXT: ASHR * T40.W, T40.Y, literal.y, 8684; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8685; CM-NEXT: BFE_INT T43.X, T40.X, 0.0, literal.x, 8686; CM-NEXT: ASHR T42.Y, PV.X, literal.y, 8687; CM-NEXT: ASHR T40.Z, T40.Y, literal.x, 8688; CM-NEXT: ASHR * T44.W, T39.Z, literal.y, 8689; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8690; CM-NEXT: BFE_INT T40.X, T40.Y, 0.0, literal.x, 8691; CM-NEXT: ASHR T43.Y, PV.X, literal.y, 8692; CM-NEXT: ASHR T44.Z, T39.Z, literal.x, 8693; CM-NEXT: ASHR * T45.W, T39.W, literal.y, 8694; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8695; CM-NEXT: BFE_INT T44.X, T39.Z, 0.0, literal.x, 8696; CM-NEXT: ASHR T40.Y, PV.X, literal.y, 8697; CM-NEXT: ASHR T45.Z, T39.W, literal.x, 8698; CM-NEXT: ASHR * T46.W, T39.X, literal.y, 8699; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8700; CM-NEXT: BFE_INT T45.X, T39.W, 0.0, literal.x, 8701; CM-NEXT: ASHR T44.Y, PV.X, literal.y, 8702; CM-NEXT: ASHR T46.Z, T39.X, literal.x, 8703; CM-NEXT: ASHR * T39.W, T39.Y, literal.y, 8704; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8705; CM-NEXT: BFE_INT T46.X, T39.X, 0.0, literal.x, 8706; CM-NEXT: ASHR T45.Y, PV.X, literal.y, 8707; CM-NEXT: ASHR T39.Z, T39.Y, literal.x, 8708; CM-NEXT: ASHR * T47.W, T38.Z, literal.y, 8709; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8710; CM-NEXT: BFE_INT T39.X, T39.Y, 0.0, literal.x, 8711; CM-NEXT: ASHR T46.Y, PV.X, literal.y, 8712; CM-NEXT: ASHR T47.Z, T38.Z, literal.x, 8713; CM-NEXT: ASHR * T48.W, T38.W, literal.y, 8714; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8715; CM-NEXT: BFE_INT T47.X, T38.Z, 0.0, literal.x, 8716; CM-NEXT: ASHR T39.Y, PV.X, literal.y, 8717; CM-NEXT: ASHR T48.Z, T38.W, literal.x, 8718; CM-NEXT: ASHR * T49.W, T38.X, literal.y, 8719; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8720; CM-NEXT: BFE_INT T48.X, T38.W, 0.0, literal.x, 8721; CM-NEXT: ASHR T47.Y, PV.X, literal.y, 8722; CM-NEXT: ASHR T49.Z, T38.X, literal.x, 8723; CM-NEXT: ASHR * T38.W, T38.Y, literal.y, 8724; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8725; CM-NEXT: BFE_INT T49.X, T38.X, 0.0, literal.x, 8726; CM-NEXT: ASHR T48.Y, PV.X, literal.y, 8727; CM-NEXT: ASHR * T38.Z, T38.Y, literal.x, 8728; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8729; CM-NEXT: BFE_INT T38.X, T38.Y, 0.0, literal.x, 8730; CM-NEXT: ASHR T49.Y, PV.X, literal.y, 8731; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 8732; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8733; CM-NEXT: LSHR T50.X, PV.W, literal.x, 8734; CM-NEXT: ASHR * T38.Y, PV.X, literal.y, 8735; CM-NEXT: 2(2.802597e-45), 31(4.344025e-44) 8736 %load = load <32 x i16>, <32 x i16> addrspace(1)* %in 8737 %ext = sext <32 x i16> %load to <32 x i64> 8738 store <32 x i64> %ext, <32 x i64> addrspace(1)* %out 8739 ret void 8740} 8741 8742; define amdgpu_kernel void @global_zextload_v64i16_to_v64i64(<64 x i64> addrspace(1)* %out, <64 x i16> addrspace(1)* %in) #0 { 8743; %load = load <64 x i16>, <64 x i16> addrspace(1)* %in 8744; %ext = zext <64 x i16> %load to <64 x i64> 8745; store <64 x i64> %ext, <64 x i64> addrspace(1)* %out 8746; ret void 8747; } 8748 8749; define amdgpu_kernel void @global_sextload_v64i16_to_v64i64(<64 x i64> addrspace(1)* %out, <64 x i16> addrspace(1)* %in) #0 { 8750; %load = load <64 x i16>, <64 x i16> addrspace(1)* %in 8751; %ext = sext <64 x i16> %load to <64 x i64> 8752; store <64 x i64> %ext, <64 x i64> addrspace(1)* %out 8753; ret void 8754; } 8755 8756attributes #0 = { nounwind } 8757