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 s2, 0xffff 1361; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 1362; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 1363; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 1364; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v3, 16, v0 1365; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v2, s2, v0 1366; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v0, s2, v1 1367; GCN-NOHSA-SI-NEXT: buffer_store_dword v0, off, s[4:7], 0 offset:8 1368; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[2:3], off, s[4:7], 0 1369; GCN-NOHSA-SI-NEXT: s_endpgm 1370; 1371; GCN-HSA-LABEL: global_zextload_v3i16_to_v3i32: 1372; GCN-HSA: ; %bb.0: ; %entry 1373; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 1374; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1375; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 1376; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 1377; GCN-HSA-NEXT: flat_load_dwordx2 v[3:4], v[0:1] 1378; GCN-HSA-NEXT: s_mov_b32 s2, 0xffff 1379; GCN-HSA-NEXT: v_mov_b32_e32 v5, s0 1380; GCN-HSA-NEXT: v_mov_b32_e32 v6, s1 1381; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 1382; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v3 1383; GCN-HSA-NEXT: v_and_b32_e32 v2, s2, v4 1384; GCN-HSA-NEXT: v_and_b32_e32 v0, s2, v3 1385; GCN-HSA-NEXT: flat_store_dwordx3 v[5:6], v[0:2] 1386; GCN-HSA-NEXT: s_endpgm 1387; 1388; GCN-NOHSA-VI-LABEL: global_zextload_v3i16_to_v3i32: 1389; GCN-NOHSA-VI: ; %bb.0: ; %entry 1390; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 1391; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 1392; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 1393; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 1394; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 1395; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1396; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 1397; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 1398; GCN-NOHSA-VI-NEXT: buffer_load_dwordx2 v[0:1], off, s[8:11], 0 1399; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, 0xffff 1400; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 1401; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 1402; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 1403; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v2, s2, v1 1404; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v1, 16, v0 1405; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, s2, v0 1406; GCN-NOHSA-VI-NEXT: buffer_store_dwordx3 v[0:2], off, s[4:7], 0 1407; GCN-NOHSA-VI-NEXT: s_endpgm 1408; 1409; EG-LABEL: global_zextload_v3i16_to_v3i32: 1410; EG: ; %bb.0: ; %entry 1411; EG-NEXT: ALU 4, @12, KC0[CB0:0-32], KC1[] 1412; EG-NEXT: TEX 2 @6 1413; EG-NEXT: ALU 2, @17, KC0[], KC1[] 1414; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T2.X, T4.X, 0 1415; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T3.XY, T0.X, 1 1416; EG-NEXT: CF_END 1417; EG-NEXT: Fetch clause starting at 6: 1418; EG-NEXT: VTX_READ_16 T2.X, T1.X, 4, #1 1419; EG-NEXT: VTX_READ_16 T3.X, T1.X, 0, #1 1420; EG-NEXT: VTX_READ_16 T1.X, T1.X, 2, #1 1421; EG-NEXT: ALU clause starting at 12: 1422; EG-NEXT: LSHR T0.X, KC0[2].Y, literal.x, 1423; EG-NEXT: MOV * T1.X, KC0[2].Z, 1424; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1425; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 1426; EG-NEXT: 8(1.121039e-44), 0(0.000000e+00) 1427; EG-NEXT: ALU clause starting at 17: 1428; EG-NEXT: LSHR T4.X, T0.W, literal.x, 1429; EG-NEXT: MOV * T3.Y, T1.X, 1430; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1431; 1432; CM-LABEL: global_zextload_v3i16_to_v3i32: 1433; CM: ; %bb.0: ; %entry 1434; CM-NEXT: ALU 4, @12, KC0[CB0:0-32], KC1[] 1435; CM-NEXT: TEX 2 @6 1436; CM-NEXT: ALU 2, @17, KC0[CB0:0-32], KC1[] 1437; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T3, T4.X 1438; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T2.X, T0.X 1439; CM-NEXT: CF_END 1440; CM-NEXT: Fetch clause starting at 6: 1441; CM-NEXT: VTX_READ_16 T2.X, T1.X, 4, #1 1442; CM-NEXT: VTX_READ_16 T3.X, T1.X, 0, #1 1443; CM-NEXT: VTX_READ_16 T1.X, T1.X, 2, #1 1444; CM-NEXT: ALU clause starting at 12: 1445; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 1446; CM-NEXT: 8(1.121039e-44), 0(0.000000e+00) 1447; CM-NEXT: LSHR * T0.X, PV.W, literal.x, 1448; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1449; CM-NEXT: MOV * T1.X, KC0[2].Z, 1450; CM-NEXT: ALU clause starting at 17: 1451; CM-NEXT: LSHR T4.X, KC0[2].Y, literal.x, 1452; CM-NEXT: MOV * T3.Y, T1.X, 1453; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1454entry: 1455 %ld = load <3 x i16>, <3 x i16> addrspace(1)* %in 1456 %ext = zext <3 x i16> %ld to <3 x i32> 1457 store <3 x i32> %ext, <3 x i32> addrspace(1)* %out 1458 ret void 1459} 1460 1461define amdgpu_kernel void @global_sextload_v3i16_to_v3i32(<3 x i32> addrspace(1)* %out, <3 x i16> addrspace(1)* %in) { 1462; GCN-NOHSA-SI-LABEL: global_sextload_v3i16_to_v3i32: 1463; GCN-NOHSA-SI: ; %bb.0: ; %entry 1464; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 1465; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 1466; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 1467; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 1468; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 1469; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1470; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 1471; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 1472; GCN-NOHSA-SI-NEXT: buffer_load_dwordx2 v[0:1], off, s[8:11], 0 1473; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 1474; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 1475; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 1476; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v3, 16, v0 1477; GCN-NOHSA-SI-NEXT: v_bfe_i32 v2, v0, 0, 16 1478; GCN-NOHSA-SI-NEXT: v_bfe_i32 v0, v1, 0, 16 1479; GCN-NOHSA-SI-NEXT: buffer_store_dword v0, off, s[4:7], 0 offset:8 1480; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[2:3], off, s[4:7], 0 1481; GCN-NOHSA-SI-NEXT: s_endpgm 1482; 1483; GCN-HSA-LABEL: global_sextload_v3i16_to_v3i32: 1484; GCN-HSA: ; %bb.0: ; %entry 1485; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 1486; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1487; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 1488; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 1489; GCN-HSA-NEXT: flat_load_dwordx2 v[3:4], v[0:1] 1490; GCN-HSA-NEXT: v_mov_b32_e32 v5, s0 1491; GCN-HSA-NEXT: v_mov_b32_e32 v6, s1 1492; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 1493; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 16, v3 1494; GCN-HSA-NEXT: v_bfe_i32 v2, v4, 0, 16 1495; GCN-HSA-NEXT: v_bfe_i32 v0, v3, 0, 16 1496; GCN-HSA-NEXT: flat_store_dwordx3 v[5:6], v[0:2] 1497; GCN-HSA-NEXT: s_endpgm 1498; 1499; GCN-NOHSA-VI-LABEL: global_sextload_v3i16_to_v3i32: 1500; GCN-NOHSA-VI: ; %bb.0: ; %entry 1501; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 1502; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 1503; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 1504; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 1505; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 1506; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1507; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 1508; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 1509; GCN-NOHSA-VI-NEXT: buffer_load_dwordx2 v[3:4], off, s[8:11], 0 1510; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 1511; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 1512; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 1513; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 16, v3 1514; GCN-NOHSA-VI-NEXT: v_bfe_i32 v2, v4, 0, 16 1515; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v3, 0, 16 1516; GCN-NOHSA-VI-NEXT: buffer_store_dwordx3 v[0:2], off, s[4:7], 0 1517; GCN-NOHSA-VI-NEXT: s_endpgm 1518; 1519; EG-LABEL: global_sextload_v3i16_to_v3i32: 1520; EG: ; %bb.0: ; %entry 1521; EG-NEXT: ALU 0, @12, KC0[CB0:0-32], KC1[] 1522; EG-NEXT: TEX 2 @6 1523; EG-NEXT: ALU 9, @13, KC0[CB0:0-32], KC1[] 1524; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T2.X, T3.X, 0 1525; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1 1526; EG-NEXT: CF_END 1527; EG-NEXT: Fetch clause starting at 6: 1528; EG-NEXT: VTX_READ_16 T1.X, T0.X, 2, #1 1529; EG-NEXT: VTX_READ_16 T2.X, T0.X, 4, #1 1530; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 1531; EG-NEXT: ALU clause starting at 12: 1532; EG-NEXT: MOV * T0.X, KC0[2].Z, 1533; EG-NEXT: ALU clause starting at 13: 1534; EG-NEXT: BFE_INT * T0.Y, T1.X, 0.0, literal.x, 1535; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1536; EG-NEXT: BFE_INT T0.X, T0.X, 0.0, literal.x, 1537; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.y, 1538; EG-NEXT: 16(2.242078e-44), 2(2.802597e-45) 1539; EG-NEXT: BFE_INT T2.X, T2.X, 0.0, literal.x, 1540; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 1541; EG-NEXT: 16(2.242078e-44), 8(1.121039e-44) 1542; EG-NEXT: LSHR * T3.X, PV.W, literal.x, 1543; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1544; 1545; CM-LABEL: global_sextload_v3i16_to_v3i32: 1546; CM: ; %bb.0: ; %entry 1547; CM-NEXT: ALU 0, @12, KC0[CB0:0-32], KC1[] 1548; CM-NEXT: TEX 2 @6 1549; CM-NEXT: ALU 9, @13, KC0[CB0:0-32], KC1[] 1550; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T0, T2.X 1551; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T1.X, T3.X 1552; CM-NEXT: CF_END 1553; CM-NEXT: Fetch clause starting at 6: 1554; CM-NEXT: VTX_READ_16 T1.X, T0.X, 4, #1 1555; CM-NEXT: VTX_READ_16 T2.X, T0.X, 0, #1 1556; CM-NEXT: VTX_READ_16 T0.X, T0.X, 2, #1 1557; CM-NEXT: ALU clause starting at 12: 1558; CM-NEXT: MOV * T0.X, KC0[2].Z, 1559; CM-NEXT: ALU clause starting at 13: 1560; CM-NEXT: BFE_INT T1.X, T1.X, 0.0, literal.x, 1561; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 1562; CM-NEXT: 16(2.242078e-44), 8(1.121039e-44) 1563; CM-NEXT: LSHR T3.X, PV.W, literal.x, 1564; CM-NEXT: BFE_INT * T0.Y, T0.X, 0.0, literal.y, 1565; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 1566; CM-NEXT: BFE_INT * T0.X, T2.X, 0.0, literal.x, 1567; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1568; CM-NEXT: LSHR * T2.X, KC0[2].Y, literal.x, 1569; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1570entry: 1571 %ld = load <3 x i16>, <3 x i16> addrspace(1)* %in 1572 %ext = sext <3 x i16> %ld to <3 x i32> 1573 store <3 x i32> %ext, <3 x i32> addrspace(1)* %out 1574 ret void 1575} 1576 1577; TODO: This should use DST, but for some there are redundant MOVs 1578define amdgpu_kernel void @global_zextload_v4i16_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x i16> addrspace(1)* %in) #0 { 1579; GCN-NOHSA-SI-LABEL: global_zextload_v4i16_to_v4i32: 1580; GCN-NOHSA-SI: ; %bb.0: 1581; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 1582; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 1583; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 1584; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 1585; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 1586; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1587; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 1588; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 1589; GCN-NOHSA-SI-NEXT: buffer_load_dwordx2 v[4:5], off, s[8:11], 0 1590; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, 0xffff 1591; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 1592; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 1593; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 1594; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v3, 16, v5 1595; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v1, 16, v4 1596; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v2, s2, v5 1597; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v0, s2, v4 1598; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 1599; GCN-NOHSA-SI-NEXT: s_endpgm 1600; 1601; GCN-HSA-LABEL: global_zextload_v4i16_to_v4i32: 1602; GCN-HSA: ; %bb.0: 1603; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 1604; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1605; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 1606; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 1607; GCN-HSA-NEXT: flat_load_dwordx2 v[4:5], v[0:1] 1608; GCN-HSA-NEXT: s_mov_b32 s2, 0xffff 1609; GCN-HSA-NEXT: v_mov_b32_e32 v6, s0 1610; GCN-HSA-NEXT: v_mov_b32_e32 v7, s1 1611; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 1612; GCN-HSA-NEXT: v_lshrrev_b32_e32 v3, 16, v5 1613; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v4 1614; GCN-HSA-NEXT: v_and_b32_e32 v2, s2, v5 1615; GCN-HSA-NEXT: v_and_b32_e32 v0, s2, v4 1616; GCN-HSA-NEXT: flat_store_dwordx4 v[6:7], v[0:3] 1617; GCN-HSA-NEXT: s_endpgm 1618; 1619; GCN-NOHSA-VI-LABEL: global_zextload_v4i16_to_v4i32: 1620; GCN-NOHSA-VI: ; %bb.0: 1621; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 1622; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 1623; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 1624; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 1625; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 1626; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1627; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 1628; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 1629; GCN-NOHSA-VI-NEXT: buffer_load_dwordx2 v[0:1], off, s[8:11], 0 1630; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, 0xffff 1631; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 1632; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 1633; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 1634; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v3, 16, v1 1635; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v2, s2, v1 1636; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v1, 16, v0 1637; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, s2, v0 1638; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 1639; GCN-NOHSA-VI-NEXT: s_endpgm 1640; 1641; EG-LABEL: global_zextload_v4i16_to_v4i32: 1642; EG: ; %bb.0: 1643; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1644; EG-NEXT: TEX 0 @6 1645; EG-NEXT: ALU 12, @9, KC0[CB0:0-32], KC1[] 1646; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T6.X, 1 1647; EG-NEXT: CF_END 1648; EG-NEXT: PAD 1649; EG-NEXT: Fetch clause starting at 6: 1650; EG-NEXT: VTX_READ_64 T5.XY, T5.X, 0, #1 1651; EG-NEXT: ALU clause starting at 8: 1652; EG-NEXT: MOV * T5.X, KC0[2].Z, 1653; EG-NEXT: ALU clause starting at 9: 1654; EG-NEXT: MOV T2.X, T5.X, 1655; EG-NEXT: MOV * T3.X, T5.Y, 1656; EG-NEXT: MOV T0.Y, PV.X, 1657; EG-NEXT: MOV * T0.Z, PS, 1658; EG-NEXT: LSHR * T5.W, PV.Z, literal.x, 1659; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1660; EG-NEXT: AND_INT * T5.Z, T0.Z, literal.x, 1661; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 1662; EG-NEXT: LSHR * T5.Y, T0.Y, literal.x, 1663; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1664; EG-NEXT: AND_INT T5.X, T0.Y, literal.x, 1665; EG-NEXT: LSHR * T6.X, KC0[2].Y, literal.y, 1666; EG-NEXT: 65535(9.183409e-41), 2(2.802597e-45) 1667; 1668; CM-LABEL: global_zextload_v4i16_to_v4i32: 1669; CM: ; %bb.0: 1670; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1671; CM-NEXT: TEX 0 @6 1672; CM-NEXT: ALU 13, @9, KC0[CB0:0-32], KC1[] 1673; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T5, T6.X 1674; CM-NEXT: CF_END 1675; CM-NEXT: PAD 1676; CM-NEXT: Fetch clause starting at 6: 1677; CM-NEXT: VTX_READ_64 T5.XY, T5.X, 0, #1 1678; CM-NEXT: ALU clause starting at 8: 1679; CM-NEXT: MOV * T5.X, KC0[2].Z, 1680; CM-NEXT: ALU clause starting at 9: 1681; CM-NEXT: MOV * T2.X, T5.X, 1682; CM-NEXT: MOV T3.X, T5.Y, 1683; CM-NEXT: MOV * T0.Y, PV.X, 1684; CM-NEXT: MOV * T0.Z, PV.X, 1685; CM-NEXT: LSHR * T5.W, PV.Z, literal.x, 1686; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1687; CM-NEXT: AND_INT * T5.Z, T0.Z, literal.x, 1688; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 1689; CM-NEXT: LSHR * T5.Y, T0.Y, literal.x, 1690; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1691; CM-NEXT: AND_INT * T5.X, T0.Y, literal.x, 1692; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 1693; CM-NEXT: LSHR * T6.X, KC0[2].Y, literal.x, 1694; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1695 %load = load <4 x i16>, <4 x i16> addrspace(1)* %in 1696 %ext = zext <4 x i16> %load to <4 x i32> 1697 store <4 x i32> %ext, <4 x i32> addrspace(1)* %out 1698 ret void 1699} 1700 1701; TODO: We should use ASHR instead of LSHR + BFE 1702; TODO: This should use DST, but for some there are redundant MOVs 1703define amdgpu_kernel void @global_sextload_v4i16_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x i16> addrspace(1)* %in) #0 { 1704; GCN-NOHSA-SI-LABEL: global_sextload_v4i16_to_v4i32: 1705; GCN-NOHSA-SI: ; %bb.0: 1706; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 1707; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 1708; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 1709; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 1710; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 1711; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1712; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 1713; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 1714; GCN-NOHSA-SI-NEXT: buffer_load_dwordx2 v[3:4], off, s[8:11], 0 1715; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 1716; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 1717; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 1718; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 16, v3 1719; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[5:6], v[3:4], 48 1720; GCN-NOHSA-SI-NEXT: v_bfe_i32 v2, v4, 0, 16 1721; GCN-NOHSA-SI-NEXT: v_bfe_i32 v0, v3, 0, 16 1722; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, v5 1723; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 1724; GCN-NOHSA-SI-NEXT: s_endpgm 1725; 1726; GCN-HSA-LABEL: global_sextload_v4i16_to_v4i32: 1727; GCN-HSA: ; %bb.0: 1728; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 1729; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1730; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 1731; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 1732; GCN-HSA-NEXT: flat_load_dwordx2 v[3:4], v[0:1] 1733; GCN-HSA-NEXT: v_mov_b32_e32 v5, s0 1734; GCN-HSA-NEXT: v_mov_b32_e32 v6, s1 1735; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 1736; GCN-HSA-NEXT: v_ashr_i64 v[7:8], v[3:4], 48 1737; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 16, v3 1738; GCN-HSA-NEXT: v_bfe_i32 v2, v4, 0, 16 1739; GCN-HSA-NEXT: v_bfe_i32 v0, v3, 0, 16 1740; GCN-HSA-NEXT: v_mov_b32_e32 v3, v7 1741; GCN-HSA-NEXT: flat_store_dwordx4 v[5:6], v[0:3] 1742; GCN-HSA-NEXT: s_endpgm 1743; 1744; GCN-NOHSA-VI-LABEL: global_sextload_v4i16_to_v4i32: 1745; GCN-NOHSA-VI: ; %bb.0: 1746; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 1747; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 1748; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 1749; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 1750; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 1751; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1752; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 1753; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 1754; GCN-NOHSA-VI-NEXT: buffer_load_dwordx2 v[4:5], off, s[8:11], 0 1755; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 1756; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 1757; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 1758; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v3, 16, v5 1759; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 16, v4 1760; GCN-NOHSA-VI-NEXT: v_bfe_i32 v2, v5, 0, 16 1761; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v4, 0, 16 1762; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 1763; GCN-NOHSA-VI-NEXT: s_endpgm 1764; 1765; EG-LABEL: global_sextload_v4i16_to_v4i32: 1766; EG: ; %bb.0: 1767; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1768; EG-NEXT: TEX 0 @6 1769; EG-NEXT: ALU 14, @9, KC0[CB0:0-32], KC1[] 1770; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T6.X, 1 1771; EG-NEXT: CF_END 1772; EG-NEXT: PAD 1773; EG-NEXT: Fetch clause starting at 6: 1774; EG-NEXT: VTX_READ_64 T5.XY, T5.X, 0, #1 1775; EG-NEXT: ALU clause starting at 8: 1776; EG-NEXT: MOV * T5.X, KC0[2].Z, 1777; EG-NEXT: ALU clause starting at 9: 1778; EG-NEXT: MOV T2.X, T5.X, 1779; EG-NEXT: MOV * T3.X, T5.Y, 1780; EG-NEXT: MOV T0.Y, PV.X, 1781; EG-NEXT: MOV * T0.Z, PS, 1782; EG-NEXT: BFE_INT * T5.Z, PV.Z, 0.0, literal.x, 1783; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1784; EG-NEXT: BFE_INT T5.X, T0.Y, 0.0, literal.x, 1785; EG-NEXT: LSHR * T0.W, T0.Z, literal.x, 1786; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1787; EG-NEXT: BFE_INT T5.W, PV.W, 0.0, literal.x, 1788; EG-NEXT: LSHR * T0.W, T0.Y, literal.x, 1789; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1790; EG-NEXT: LSHR T6.X, KC0[2].Y, literal.x, 1791; EG-NEXT: BFE_INT * T5.Y, PS, 0.0, literal.y, 1792; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 1793; 1794; CM-LABEL: global_sextload_v4i16_to_v4i32: 1795; CM: ; %bb.0: 1796; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1797; CM-NEXT: TEX 0 @6 1798; CM-NEXT: ALU 14, @9, KC0[CB0:0-32], KC1[] 1799; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T5, T6.X 1800; CM-NEXT: CF_END 1801; CM-NEXT: PAD 1802; CM-NEXT: Fetch clause starting at 6: 1803; CM-NEXT: VTX_READ_64 T5.XY, T5.X, 0, #1 1804; CM-NEXT: ALU clause starting at 8: 1805; CM-NEXT: MOV * T5.X, KC0[2].Z, 1806; CM-NEXT: ALU clause starting at 9: 1807; CM-NEXT: MOV * T2.X, T5.X, 1808; CM-NEXT: MOV T3.X, T5.Y, 1809; CM-NEXT: MOV * T0.Y, PV.X, 1810; CM-NEXT: MOV * T0.Z, PV.X, 1811; CM-NEXT: BFE_INT * T5.Z, PV.Z, 0.0, literal.x, 1812; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1813; CM-NEXT: BFE_INT T5.X, T0.Y, 0.0, literal.x, 1814; CM-NEXT: LSHR * T0.W, T0.Z, literal.x, 1815; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1816; CM-NEXT: LSHR T0.Z, T0.Y, literal.x, 1817; CM-NEXT: BFE_INT * T5.W, PV.W, 0.0, literal.x, 1818; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1819; CM-NEXT: LSHR T6.X, KC0[2].Y, literal.x, 1820; CM-NEXT: BFE_INT * T5.Y, PV.Z, 0.0, literal.y, 1821; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 1822 %load = load <4 x i16>, <4 x i16> addrspace(1)* %in 1823 %ext = sext <4 x i16> %load to <4 x i32> 1824 store <4 x i32> %ext, <4 x i32> addrspace(1)* %out 1825 ret void 1826} 1827 1828; TODO: These should use LSHR instead of BFE_UINT 1829define amdgpu_kernel void @global_zextload_v8i16_to_v8i32(<8 x i32> addrspace(1)* %out, <8 x i16> addrspace(1)* %in) #0 { 1830; GCN-NOHSA-SI-LABEL: global_zextload_v8i16_to_v8i32: 1831; GCN-NOHSA-SI: ; %bb.0: 1832; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 1833; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 1834; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 1835; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 1836; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 1837; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1838; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 1839; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 1840; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 1841; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, 0xffff 1842; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 1843; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 1844; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 1845; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v7, 16, v1 1846; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v5, 16, v0 1847; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v11, 16, v3 1848; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v9, 16, v2 1849; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v6, s2, v1 1850; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v4, s2, v0 1851; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v10, s2, v3 1852; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v8, s2, v2 1853; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[4:7], 0 offset:16 1854; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 1855; GCN-NOHSA-SI-NEXT: s_endpgm 1856; 1857; GCN-HSA-LABEL: global_zextload_v8i16_to_v8i32: 1858; GCN-HSA: ; %bb.0: 1859; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 1860; GCN-HSA-NEXT: s_mov_b32 s4, 0xffff 1861; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 1862; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 1863; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 1864; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 1865; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 1866; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 1867; GCN-HSA-NEXT: v_mov_b32_e32 v15, s3 1868; GCN-HSA-NEXT: v_mov_b32_e32 v13, s1 1869; GCN-HSA-NEXT: v_mov_b32_e32 v14, s2 1870; GCN-HSA-NEXT: v_mov_b32_e32 v12, s0 1871; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 1872; GCN-HSA-NEXT: v_lshrrev_b32_e32 v11, 16, v3 1873; GCN-HSA-NEXT: v_lshrrev_b32_e32 v9, 16, v2 1874; GCN-HSA-NEXT: v_and_b32_e32 v10, s4, v3 1875; GCN-HSA-NEXT: v_and_b32_e32 v8, s4, v2 1876; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v1 1877; GCN-HSA-NEXT: v_lshrrev_b32_e32 v5, 16, v0 1878; GCN-HSA-NEXT: v_and_b32_e32 v6, s4, v1 1879; GCN-HSA-NEXT: v_and_b32_e32 v4, s4, v0 1880; GCN-HSA-NEXT: flat_store_dwordx4 v[14:15], v[8:11] 1881; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[4:7] 1882; GCN-HSA-NEXT: s_endpgm 1883; 1884; GCN-NOHSA-VI-LABEL: global_zextload_v8i16_to_v8i32: 1885; GCN-NOHSA-VI: ; %bb.0: 1886; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 1887; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 1888; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 1889; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 1890; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 1891; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 1892; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 1893; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 1894; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 1895; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, 0xffff 1896; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 1897; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 1898; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 1899; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v11, 16, v3 1900; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v10, s2, v3 1901; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v9, 16, v2 1902; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v8, s2, v2 1903; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v7, 16, v1 1904; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v6, s2, v1 1905; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v5, 16, v0 1906; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v4, s2, v0 1907; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[8:11], off, s[4:7], 0 offset:16 1908; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 1909; GCN-NOHSA-VI-NEXT: s_endpgm 1910; 1911; EG-LABEL: global_zextload_v8i16_to_v8i32: 1912; EG: ; %bb.0: 1913; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1914; EG-NEXT: TEX 0 @6 1915; EG-NEXT: ALU 17, @9, KC0[CB0:0-32], KC1[] 1916; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T10.X, 0 1917; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T7.X, 1 1918; EG-NEXT: CF_END 1919; EG-NEXT: Fetch clause starting at 6: 1920; EG-NEXT: VTX_READ_128 T7.XYZW, T7.X, 0, #1 1921; EG-NEXT: ALU clause starting at 8: 1922; EG-NEXT: MOV * T7.X, KC0[2].Z, 1923; EG-NEXT: ALU clause starting at 9: 1924; EG-NEXT: LSHR * T8.W, T7.Y, literal.x, 1925; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1926; EG-NEXT: AND_INT * T8.Z, T7.Y, literal.x, 1927; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 1928; EG-NEXT: LSHR T8.Y, T7.X, literal.x, 1929; EG-NEXT: LSHR * T9.W, T7.W, literal.x, 1930; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1931; EG-NEXT: AND_INT T8.X, T7.X, literal.x, 1932; EG-NEXT: AND_INT T9.Z, T7.W, literal.x, 1933; EG-NEXT: LSHR * T7.X, KC0[2].Y, literal.y, 1934; EG-NEXT: 65535(9.183409e-41), 2(2.802597e-45) 1935; EG-NEXT: LSHR * T9.Y, T7.Z, literal.x, 1936; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1937; EG-NEXT: AND_INT T9.X, T7.Z, literal.x, 1938; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 1939; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 1940; EG-NEXT: LSHR * T10.X, PV.W, literal.x, 1941; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1942; 1943; CM-LABEL: global_zextload_v8i16_to_v8i32: 1944; CM: ; %bb.0: 1945; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 1946; CM-NEXT: TEX 0 @6 1947; CM-NEXT: ALU 17, @9, KC0[CB0:0-32], KC1[] 1948; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T7, T10.X 1949; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T8, T9.X 1950; CM-NEXT: CF_END 1951; CM-NEXT: Fetch clause starting at 6: 1952; CM-NEXT: VTX_READ_128 T7.XYZW, T7.X, 0, #1 1953; CM-NEXT: ALU clause starting at 8: 1954; CM-NEXT: MOV * T7.X, KC0[2].Z, 1955; CM-NEXT: ALU clause starting at 9: 1956; CM-NEXT: LSHR * T8.W, T7.W, literal.x, 1957; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1958; CM-NEXT: AND_INT * T8.Z, T7.W, literal.x, 1959; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 1960; CM-NEXT: LSHR T8.Y, T7.Z, literal.x, 1961; CM-NEXT: LSHR * T7.W, T7.Y, literal.x, 1962; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 1963; CM-NEXT: AND_INT T8.X, T7.Z, literal.x, 1964; CM-NEXT: AND_INT T7.Z, T7.Y, literal.x, 1965; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 1966; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 1967; CM-NEXT: LSHR T9.X, PV.W, literal.x, 1968; CM-NEXT: LSHR * T7.Y, T7.X, literal.y, 1969; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 1970; CM-NEXT: AND_INT * T7.X, T7.X, literal.x, 1971; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 1972; CM-NEXT: LSHR * T10.X, KC0[2].Y, literal.x, 1973; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 1974 %load = load <8 x i16>, <8 x i16> addrspace(1)* %in 1975 %ext = zext <8 x i16> %load to <8 x i32> 1976 store <8 x i32> %ext, <8 x i32> addrspace(1)* %out 1977 ret void 1978} 1979 1980; TODO: These should use ASHR instead of LSHR + BFE_INT 1981define amdgpu_kernel void @global_sextload_v8i16_to_v8i32(<8 x i32> addrspace(1)* %out, <8 x i16> addrspace(1)* %in) #0 { 1982; GCN-NOHSA-SI-LABEL: global_sextload_v8i16_to_v8i32: 1983; GCN-NOHSA-SI: ; %bb.0: 1984; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 1985; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 1986; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 1987; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 1988; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 1989; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 1990; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 1991; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 1992; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 1993; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 1994; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 1995; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 1996; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v7, 16, v1 1997; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v5, 16, v0 1998; GCN-NOHSA-SI-NEXT: v_bfe_i32 v6, v1, 0, 16 1999; GCN-NOHSA-SI-NEXT: v_bfe_i32 v4, v0, 0, 16 2000; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v11, 16, v3 2001; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v9, 16, v2 2002; GCN-NOHSA-SI-NEXT: v_bfe_i32 v10, v3, 0, 16 2003; GCN-NOHSA-SI-NEXT: v_bfe_i32 v8, v2, 0, 16 2004; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[4:7], 0 offset:16 2005; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 2006; GCN-NOHSA-SI-NEXT: s_endpgm 2007; 2008; GCN-HSA-LABEL: global_sextload_v8i16_to_v8i32: 2009; GCN-HSA: ; %bb.0: 2010; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 2011; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 2012; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 2013; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 2014; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 2015; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 2016; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2017; GCN-HSA-NEXT: v_mov_b32_e32 v15, s3 2018; GCN-HSA-NEXT: v_mov_b32_e32 v13, s1 2019; GCN-HSA-NEXT: v_mov_b32_e32 v14, s2 2020; GCN-HSA-NEXT: v_mov_b32_e32 v12, s0 2021; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 2022; GCN-HSA-NEXT: v_ashrrev_i32_e32 v11, 16, v3 2023; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 16, v2 2024; GCN-HSA-NEXT: v_bfe_i32 v10, v3, 0, 16 2025; GCN-HSA-NEXT: v_bfe_i32 v8, v2, 0, 16 2026; GCN-HSA-NEXT: v_ashrrev_i32_e32 v7, 16, v1 2027; GCN-HSA-NEXT: v_ashrrev_i32_e32 v5, 16, v0 2028; GCN-HSA-NEXT: v_bfe_i32 v6, v1, 0, 16 2029; GCN-HSA-NEXT: v_bfe_i32 v4, v0, 0, 16 2030; GCN-HSA-NEXT: flat_store_dwordx4 v[14:15], v[8:11] 2031; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[4:7] 2032; GCN-HSA-NEXT: s_endpgm 2033; 2034; GCN-NOHSA-VI-LABEL: global_sextload_v8i16_to_v8i32: 2035; GCN-NOHSA-VI: ; %bb.0: 2036; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 2037; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 2038; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 2039; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 2040; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 2041; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 2042; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 2043; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 2044; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 2045; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 2046; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 2047; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 2048; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v11, 16, v3 2049; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v9, 16, v2 2050; GCN-NOHSA-VI-NEXT: v_bfe_i32 v10, v3, 0, 16 2051; GCN-NOHSA-VI-NEXT: v_bfe_i32 v8, v2, 0, 16 2052; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v7, 16, v1 2053; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v5, 16, v0 2054; GCN-NOHSA-VI-NEXT: v_bfe_i32 v6, v1, 0, 16 2055; GCN-NOHSA-VI-NEXT: v_bfe_i32 v4, v0, 0, 16 2056; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[8:11], off, s[4:7], 0 offset:16 2057; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 2058; GCN-NOHSA-VI-NEXT: s_endpgm 2059; 2060; EG-LABEL: global_sextload_v8i16_to_v8i32: 2061; EG: ; %bb.0: 2062; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 2063; EG-NEXT: TEX 0 @6 2064; EG-NEXT: ALU 19, @9, KC0[CB0:0-32], KC1[] 2065; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T10.X, 0 2066; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T7.X, 1 2067; EG-NEXT: CF_END 2068; EG-NEXT: Fetch clause starting at 6: 2069; EG-NEXT: VTX_READ_128 T7.XYZW, T7.X, 0, #1 2070; EG-NEXT: ALU clause starting at 8: 2071; EG-NEXT: MOV * T7.X, KC0[2].Z, 2072; EG-NEXT: ALU clause starting at 9: 2073; EG-NEXT: BFE_INT * T8.Z, T7.Y, 0.0, literal.x, 2074; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2075; EG-NEXT: BFE_INT T8.X, T7.X, 0.0, literal.x, 2076; EG-NEXT: BFE_INT T9.Z, T7.W, 0.0, literal.x, 2077; EG-NEXT: LSHR * T0.W, T7.Y, literal.x, 2078; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2079; EG-NEXT: BFE_INT T9.X, T7.Z, 0.0, literal.x, 2080; EG-NEXT: LSHR T0.Z, T7.W, literal.x, 2081; EG-NEXT: BFE_INT T8.W, PV.W, 0.0, literal.x, 2082; EG-NEXT: LSHR * T0.W, T7.X, literal.x, 2083; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2084; EG-NEXT: LSHR T7.X, KC0[2].Y, literal.x, 2085; EG-NEXT: BFE_INT T8.Y, PS, 0.0, literal.y, 2086; EG-NEXT: LSHR T1.Z, T7.Z, literal.y, 2087; EG-NEXT: BFE_INT T9.W, PV.Z, 0.0, literal.y, 2088; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2089; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2090; EG-NEXT: LSHR T10.X, PS, literal.x, 2091; EG-NEXT: BFE_INT * T9.Y, PV.Z, 0.0, literal.y, 2092; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2093; 2094; CM-LABEL: global_sextload_v8i16_to_v8i32: 2095; CM: ; %bb.0: 2096; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 2097; CM-NEXT: TEX 0 @6 2098; CM-NEXT: ALU 19, @9, KC0[CB0:0-32], KC1[] 2099; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T9, T7.X 2100; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T8, T10.X 2101; CM-NEXT: CF_END 2102; CM-NEXT: Fetch clause starting at 6: 2103; CM-NEXT: VTX_READ_128 T7.XYZW, T7.X, 0, #1 2104; CM-NEXT: ALU clause starting at 8: 2105; CM-NEXT: MOV * T7.X, KC0[2].Z, 2106; CM-NEXT: ALU clause starting at 9: 2107; CM-NEXT: BFE_INT * T8.Z, T7.W, 0.0, literal.x, 2108; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2109; CM-NEXT: BFE_INT T8.X, T7.Z, 0.0, literal.x, 2110; CM-NEXT: LSHR T0.Y, T7.Y, literal.x, 2111; CM-NEXT: BFE_INT T9.Z, T7.Y, 0.0, literal.x, 2112; CM-NEXT: LSHR * T0.W, T7.W, literal.x, 2113; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2114; CM-NEXT: BFE_INT T9.X, T7.X, 0.0, literal.x, 2115; CM-NEXT: LSHR T1.Y, T7.Z, literal.x, 2116; CM-NEXT: ADD_INT T0.Z, KC0[2].Y, literal.x, 2117; CM-NEXT: BFE_INT * T8.W, PV.W, 0.0, literal.x, 2118; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2119; CM-NEXT: LSHR T10.X, PV.Z, literal.x, 2120; CM-NEXT: BFE_INT T8.Y, PV.Y, 0.0, literal.y, 2121; CM-NEXT: LSHR T0.Z, T7.X, literal.y, 2122; CM-NEXT: BFE_INT * T9.W, T0.Y, 0.0, literal.y, 2123; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2124; CM-NEXT: LSHR T7.X, KC0[2].Y, literal.x, 2125; CM-NEXT: BFE_INT * T9.Y, PV.Z, 0.0, literal.y, 2126; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2127 %load = load <8 x i16>, <8 x i16> addrspace(1)* %in 2128 %ext = sext <8 x i16> %load to <8 x i32> 2129 store <8 x i32> %ext, <8 x i32> addrspace(1)* %out 2130 ret void 2131} 2132 2133define amdgpu_kernel void @global_zextload_v16i16_to_v16i32(<16 x i32> addrspace(1)* %out, <16 x i16> addrspace(1)* %in) #0 { 2134; GCN-NOHSA-SI-LABEL: global_zextload_v16i16_to_v16i32: 2135; GCN-NOHSA-SI: ; %bb.0: 2136; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 2137; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 2138; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 2139; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s2 2140; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s3 2141; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 2142; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s6 2143; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s7 2144; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 2145; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, 0xffff 2146; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 2147; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 2148; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 2149; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(1) 2150; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v11, 16, v1 2151; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v9, 16, v0 2152; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v15, 16, v3 2153; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v13, 16, v2 2154; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 2155; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v19, 16, v5 2156; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v17, 16, v4 2157; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v10, s6, v1 2158; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v8, s6, v0 2159; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v14, s6, v3 2160; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v12, s6, v2 2161; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v3, 16, v7 2162; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v1, 16, v6 2163; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v18, s6, v5 2164; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v16, s6, v4 2165; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v2, s6, v7 2166; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v0, s6, v6 2167; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 2168; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:32 2169; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:16 2170; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 2171; GCN-NOHSA-SI-NEXT: s_endpgm 2172; 2173; GCN-HSA-LABEL: global_zextload_v16i16_to_v16i32: 2174; GCN-HSA: ; %bb.0: 2175; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 2176; GCN-HSA-NEXT: s_mov_b32 s4, 0xffff 2177; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 2178; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 2179; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 2180; GCN-HSA-NEXT: s_add_u32 s2, s2, 16 2181; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0 2182; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 2183; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 2184; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 2185; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5] 2186; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 2187; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2188; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 2189; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 2190; GCN-HSA-NEXT: s_add_u32 s2, s0, 48 2191; GCN-HSA-NEXT: v_mov_b32_e32 v17, s1 2192; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2193; GCN-HSA-NEXT: v_mov_b32_e32 v16, s0 2194; GCN-HSA-NEXT: s_add_u32 s0, s0, 32 2195; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 2196; GCN-HSA-NEXT: v_mov_b32_e32 v19, s3 2197; GCN-HSA-NEXT: v_mov_b32_e32 v18, s2 2198; GCN-HSA-NEXT: s_waitcnt vmcnt(1) 2199; GCN-HSA-NEXT: v_lshrrev_b32_e32 v11, 16, v3 2200; GCN-HSA-NEXT: v_lshrrev_b32_e32 v9, 16, v2 2201; GCN-HSA-NEXT: v_and_b32_e32 v10, s4, v3 2202; GCN-HSA-NEXT: v_and_b32_e32 v8, s4, v2 2203; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[8:11] 2204; GCN-HSA-NEXT: s_waitcnt vmcnt(1) 2205; GCN-HSA-NEXT: v_lshrrev_b32_e32 v13, 16, v6 2206; GCN-HSA-NEXT: v_lshrrev_b32_e32 v11, 16, v5 2207; GCN-HSA-NEXT: v_lshrrev_b32_e32 v9, 16, v4 2208; GCN-HSA-NEXT: v_and_b32_e32 v10, s4, v5 2209; GCN-HSA-NEXT: v_and_b32_e32 v8, s4, v4 2210; GCN-HSA-NEXT: v_and_b32_e32 v12, s4, v6 2211; GCN-HSA-NEXT: v_lshrrev_b32_e32 v4, 16, v1 2212; GCN-HSA-NEXT: v_lshrrev_b32_e32 v2, 16, v0 2213; GCN-HSA-NEXT: v_and_b32_e32 v3, s4, v1 2214; GCN-HSA-NEXT: v_and_b32_e32 v1, s4, v0 2215; GCN-HSA-NEXT: v_mov_b32_e32 v6, s1 2216; GCN-HSA-NEXT: v_lshrrev_b32_e32 v15, 16, v7 2217; GCN-HSA-NEXT: v_and_b32_e32 v14, s4, v7 2218; GCN-HSA-NEXT: v_mov_b32_e32 v5, s0 2219; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[1:4] 2220; GCN-HSA-NEXT: flat_store_dwordx4 v[18:19], v[12:15] 2221; GCN-HSA-NEXT: flat_store_dwordx4 v[5:6], v[8:11] 2222; GCN-HSA-NEXT: s_endpgm 2223; 2224; GCN-NOHSA-VI-LABEL: global_zextload_v16i16_to_v16i32: 2225; GCN-NOHSA-VI: ; %bb.0: 2226; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 2227; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 2228; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 2229; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s2 2230; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s3 2231; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 2232; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s6 2233; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s7 2234; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 2235; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 2236; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, 0xffff 2237; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 2238; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 2239; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(1) 2240; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v11, 16, v1 2241; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 2242; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v19, 16, v7 2243; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v18, s6, v7 2244; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v17, 16, v6 2245; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v16, s6, v6 2246; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v10, s6, v1 2247; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v9, 16, v0 2248; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v8, s6, v0 2249; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v15, 16, v3 2250; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v14, s6, v3 2251; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v13, 16, v2 2252; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v12, s6, v2 2253; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v3, 16, v5 2254; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v2, s6, v5 2255; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v1, 16, v4 2256; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, s6, v4 2257; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:48 2258; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 2259; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:16 2260; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 2261; GCN-NOHSA-VI-NEXT: s_endpgm 2262; 2263; EG-LABEL: global_zextload_v16i16_to_v16i32: 2264; EG: ; %bb.0: 2265; EG-NEXT: ALU 0, @12, KC0[CB0:0-32], KC1[] 2266; EG-NEXT: TEX 1 @8 2267; EG-NEXT: ALU 35, @13, KC0[CB0:0-32], KC1[] 2268; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T18.X, 0 2269; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T15.XYZW, T11.X, 0 2270; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T16.X, 0 2271; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T12.X, 1 2272; EG-NEXT: CF_END 2273; EG-NEXT: Fetch clause starting at 8: 2274; EG-NEXT: VTX_READ_128 T12.XYZW, T11.X, 0, #1 2275; EG-NEXT: VTX_READ_128 T11.XYZW, T11.X, 16, #1 2276; EG-NEXT: ALU clause starting at 12: 2277; EG-NEXT: MOV * T11.X, KC0[2].Z, 2278; EG-NEXT: ALU clause starting at 13: 2279; EG-NEXT: LSHR * T13.W, T12.Y, literal.x, 2280; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2281; EG-NEXT: AND_INT * T13.Z, T12.Y, literal.x, 2282; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2283; EG-NEXT: LSHR T13.Y, T12.X, literal.x, 2284; EG-NEXT: LSHR * T14.W, T12.W, literal.x, 2285; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2286; EG-NEXT: AND_INT T13.X, T12.X, literal.x, 2287; EG-NEXT: AND_INT T14.Z, T12.W, literal.x, 2288; EG-NEXT: LSHR * T12.X, KC0[2].Y, literal.y, 2289; EG-NEXT: 65535(9.183409e-41), 2(2.802597e-45) 2290; EG-NEXT: LSHR T14.Y, T12.Z, literal.x, 2291; EG-NEXT: LSHR * T15.W, T11.Y, literal.x, 2292; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2293; EG-NEXT: AND_INT T14.X, T12.Z, literal.x, 2294; EG-NEXT: AND_INT T15.Z, T11.Y, literal.x, 2295; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2296; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 2297; EG-NEXT: LSHR T16.X, PV.W, literal.x, 2298; EG-NEXT: LSHR T15.Y, T11.X, literal.y, 2299; EG-NEXT: LSHR T17.W, T11.W, literal.y, 2300; EG-NEXT: AND_INT * T15.X, T11.X, literal.z, 2301; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2302; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2303; EG-NEXT: AND_INT T17.Z, T11.W, literal.x, 2304; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2305; EG-NEXT: 65535(9.183409e-41), 32(4.484155e-44) 2306; EG-NEXT: LSHR T11.X, PV.W, literal.x, 2307; EG-NEXT: LSHR T17.Y, T11.Z, literal.y, 2308; EG-NEXT: AND_INT * T17.X, T11.Z, literal.z, 2309; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2310; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2311; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 2312; EG-NEXT: 48(6.726233e-44), 0(0.000000e+00) 2313; EG-NEXT: LSHR * T18.X, PV.W, literal.x, 2314; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 2315; 2316; CM-LABEL: global_zextload_v16i16_to_v16i32: 2317; CM: ; %bb.0: 2318; CM-NEXT: ALU 0, @12, KC0[CB0:0-32], KC1[] 2319; CM-NEXT: TEX 1 @8 2320; CM-NEXT: ALU 33, @13, KC0[CB0:0-32], KC1[] 2321; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T11, T18.X 2322; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T15, T17.X 2323; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T12, T16.X 2324; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T13, T14.X 2325; CM-NEXT: CF_END 2326; CM-NEXT: Fetch clause starting at 8: 2327; CM-NEXT: VTX_READ_128 T12.XYZW, T11.X, 16, #1 2328; CM-NEXT: VTX_READ_128 T11.XYZW, T11.X, 0, #1 2329; CM-NEXT: ALU clause starting at 12: 2330; CM-NEXT: MOV * T11.X, KC0[2].Z, 2331; CM-NEXT: ALU clause starting at 13: 2332; CM-NEXT: LSHR * T13.W, T12.W, literal.x, 2333; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2334; CM-NEXT: AND_INT * T13.Z, T12.W, literal.x, 2335; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2336; CM-NEXT: LSHR T13.Y, T12.Z, literal.x, 2337; CM-NEXT: LSHR * T12.W, T12.Y, literal.x, 2338; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2339; CM-NEXT: AND_INT T13.X, T12.Z, literal.x, 2340; CM-NEXT: AND_INT T12.Z, T12.Y, literal.x, 2341; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2342; CM-NEXT: 65535(9.183409e-41), 48(6.726233e-44) 2343; CM-NEXT: LSHR T14.X, PV.W, literal.x, 2344; CM-NEXT: LSHR T12.Y, T12.X, literal.y, 2345; CM-NEXT: LSHR * T15.W, T11.W, literal.y, 2346; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2347; CM-NEXT: AND_INT T12.X, T12.X, literal.x, 2348; CM-NEXT: AND_INT T15.Z, T11.W, literal.x, 2349; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2350; CM-NEXT: 65535(9.183409e-41), 32(4.484155e-44) 2351; CM-NEXT: LSHR T16.X, PV.W, literal.x, 2352; CM-NEXT: LSHR T15.Y, T11.Z, literal.y, 2353; CM-NEXT: LSHR * T11.W, T11.Y, literal.y, 2354; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2355; CM-NEXT: AND_INT T15.X, T11.Z, literal.x, 2356; CM-NEXT: AND_INT T11.Z, T11.Y, literal.x, 2357; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2358; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 2359; CM-NEXT: LSHR T17.X, PV.W, literal.x, 2360; CM-NEXT: LSHR * T11.Y, T11.X, literal.y, 2361; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2362; CM-NEXT: AND_INT * T11.X, T11.X, literal.x, 2363; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2364; CM-NEXT: LSHR * T18.X, KC0[2].Y, literal.x, 2365; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 2366 %load = load <16 x i16>, <16 x i16> addrspace(1)* %in 2367 %ext = zext <16 x i16> %load to <16 x i32> 2368 store <16 x i32> %ext, <16 x i32> addrspace(1)* %out 2369 ret void 2370} 2371 2372define amdgpu_kernel void @global_sextload_v16i16_to_v16i32(<16 x i32> addrspace(1)* %out, <16 x i16> addrspace(1)* %in) #0 { 2373; GCN-NOHSA-SI-LABEL: global_sextload_v16i16_to_v16i32: 2374; GCN-NOHSA-SI: ; %bb.0: 2375; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 2376; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 2377; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 2378; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s2 2379; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s3 2380; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 2381; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s6 2382; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s7 2383; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 2384; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 2385; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 2386; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 2387; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(1) 2388; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v11, 16, v1 2389; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v9, 16, v0 2390; GCN-NOHSA-SI-NEXT: v_bfe_i32 v10, v1, 0, 16 2391; GCN-NOHSA-SI-NEXT: v_bfe_i32 v8, v0, 0, 16 2392; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v15, 16, v3 2393; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v13, 16, v2 2394; GCN-NOHSA-SI-NEXT: v_bfe_i32 v14, v3, 0, 16 2395; GCN-NOHSA-SI-NEXT: v_bfe_i32 v12, v2, 0, 16 2396; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 2397; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v3, 16, v5 2398; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 16, v4 2399; GCN-NOHSA-SI-NEXT: v_bfe_i32 v2, v5, 0, 16 2400; GCN-NOHSA-SI-NEXT: v_bfe_i32 v0, v4, 0, 16 2401; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v19, 16, v7 2402; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v17, 16, v6 2403; GCN-NOHSA-SI-NEXT: v_bfe_i32 v18, v7, 0, 16 2404; GCN-NOHSA-SI-NEXT: v_bfe_i32 v16, v6, 0, 16 2405; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:48 2406; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 2407; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:16 2408; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 2409; GCN-NOHSA-SI-NEXT: s_endpgm 2410; 2411; GCN-HSA-LABEL: global_sextload_v16i16_to_v16i32: 2412; GCN-HSA: ; %bb.0: 2413; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 2414; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 2415; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 2416; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 2417; GCN-HSA-NEXT: s_add_u32 s2, s2, 16 2418; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0 2419; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 2420; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 2421; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 2422; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5] 2423; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 2424; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2425; GCN-HSA-NEXT: v_mov_b32_e32 v19, s3 2426; GCN-HSA-NEXT: v_mov_b32_e32 v18, s2 2427; GCN-HSA-NEXT: s_add_u32 s2, s0, 48 2428; GCN-HSA-NEXT: v_mov_b32_e32 v17, s1 2429; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2430; GCN-HSA-NEXT: v_mov_b32_e32 v16, s0 2431; GCN-HSA-NEXT: s_add_u32 s0, s0, 32 2432; GCN-HSA-NEXT: v_mov_b32_e32 v21, s3 2433; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 2434; GCN-HSA-NEXT: v_mov_b32_e32 v20, s2 2435; GCN-HSA-NEXT: v_mov_b32_e32 v23, s1 2436; GCN-HSA-NEXT: v_mov_b32_e32 v22, s0 2437; GCN-HSA-NEXT: s_waitcnt vmcnt(1) 2438; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 16, v0 2439; GCN-HSA-NEXT: v_bfe_i32 v10, v1, 0, 16 2440; GCN-HSA-NEXT: v_bfe_i32 v8, v0, 0, 16 2441; GCN-HSA-NEXT: v_ashrrev_i32_e32 v15, 16, v3 2442; GCN-HSA-NEXT: v_ashrrev_i32_e32 v13, 16, v2 2443; GCN-HSA-NEXT: v_bfe_i32 v14, v3, 0, 16 2444; GCN-HSA-NEXT: v_bfe_i32 v12, v2, 0, 16 2445; GCN-HSA-NEXT: v_ashrrev_i32_e32 v11, 16, v1 2446; GCN-HSA-NEXT: flat_store_dwordx4 v[18:19], v[12:15] 2447; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[8:11] 2448; GCN-HSA-NEXT: s_waitcnt vmcnt(2) 2449; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 16, v5 2450; GCN-HSA-NEXT: v_ashrrev_i32_e32 v10, 16, v7 2451; GCN-HSA-NEXT: v_ashrrev_i32_e32 v8, 16, v6 2452; GCN-HSA-NEXT: v_bfe_i32 v9, v7, 0, 16 2453; GCN-HSA-NEXT: v_bfe_i32 v7, v6, 0, 16 2454; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 16, v4 2455; GCN-HSA-NEXT: v_bfe_i32 v2, v5, 0, 16 2456; GCN-HSA-NEXT: v_bfe_i32 v0, v4, 0, 16 2457; GCN-HSA-NEXT: flat_store_dwordx4 v[20:21], v[7:10] 2458; GCN-HSA-NEXT: flat_store_dwordx4 v[22:23], v[0:3] 2459; GCN-HSA-NEXT: s_endpgm 2460; 2461; GCN-NOHSA-VI-LABEL: global_sextload_v16i16_to_v16i32: 2462; GCN-NOHSA-VI: ; %bb.0: 2463; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 2464; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 2465; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 2466; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s2 2467; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s3 2468; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 2469; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s6 2470; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s7 2471; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 2472; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 2473; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 2474; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 2475; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(1) 2476; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v11, 16, v1 2477; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 2478; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v19, 16, v7 2479; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v17, 16, v6 2480; GCN-NOHSA-VI-NEXT: v_bfe_i32 v18, v7, 0, 16 2481; GCN-NOHSA-VI-NEXT: v_bfe_i32 v16, v6, 0, 16 2482; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v9, 16, v0 2483; GCN-NOHSA-VI-NEXT: v_bfe_i32 v10, v1, 0, 16 2484; GCN-NOHSA-VI-NEXT: v_bfe_i32 v8, v0, 0, 16 2485; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v15, 16, v3 2486; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v13, 16, v2 2487; GCN-NOHSA-VI-NEXT: v_bfe_i32 v14, v3, 0, 16 2488; GCN-NOHSA-VI-NEXT: v_bfe_i32 v12, v2, 0, 16 2489; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v3, 16, v5 2490; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 16, v4 2491; GCN-NOHSA-VI-NEXT: v_bfe_i32 v2, v5, 0, 16 2492; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v4, 0, 16 2493; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:48 2494; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 2495; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:16 2496; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 2497; GCN-NOHSA-VI-NEXT: s_endpgm 2498; 2499; EG-LABEL: global_sextload_v16i16_to_v16i32: 2500; EG: ; %bb.0: 2501; EG-NEXT: ALU 0, @12, KC0[CB0:0-32], KC1[] 2502; EG-NEXT: TEX 1 @8 2503; EG-NEXT: ALU 39, @13, KC0[CB0:0-32], KC1[] 2504; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T18.XYZW, T12.X, 0 2505; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T11.X, 0 2506; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T16.XYZW, T14.X, 0 2507; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T15.XYZW, T13.X, 1 2508; EG-NEXT: CF_END 2509; EG-NEXT: Fetch clause starting at 8: 2510; EG-NEXT: VTX_READ_128 T12.XYZW, T11.X, 16, #1 2511; EG-NEXT: VTX_READ_128 T11.XYZW, T11.X, 0, #1 2512; EG-NEXT: ALU clause starting at 12: 2513; EG-NEXT: MOV * T11.X, KC0[2].Z, 2514; EG-NEXT: ALU clause starting at 13: 2515; EG-NEXT: LSHR T13.X, KC0[2].Y, literal.x, 2516; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2517; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2518; EG-NEXT: LSHR T14.X, PV.W, literal.x, 2519; EG-NEXT: BFE_INT * T15.Z, T11.Y, 0.0, literal.y, 2520; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2521; EG-NEXT: BFE_INT T15.X, T11.X, 0.0, literal.x, 2522; EG-NEXT: LSHR T0.Y, T12.W, literal.x, 2523; EG-NEXT: BFE_INT T16.Z, T11.W, 0.0, literal.x, BS:VEC_120/SCL_212 2524; EG-NEXT: LSHR T0.W, T12.Y, literal.x, 2525; EG-NEXT: LSHR * T1.W, T11.Y, literal.x, 2526; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2527; EG-NEXT: BFE_INT T16.X, T11.Z, 0.0, literal.x, 2528; EG-NEXT: LSHR T1.Y, T11.W, literal.x, 2529; EG-NEXT: BFE_INT T17.Z, T12.Y, 0.0, literal.x, 2530; EG-NEXT: BFE_INT T15.W, PS, 0.0, literal.x, 2531; EG-NEXT: LSHR * T1.W, T11.X, literal.x, 2532; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2533; EG-NEXT: BFE_INT T17.X, T12.X, 0.0, literal.x, 2534; EG-NEXT: BFE_INT T15.Y, PS, 0.0, literal.x, 2535; EG-NEXT: BFE_INT T18.Z, T12.W, 0.0, literal.x, 2536; EG-NEXT: BFE_INT T16.W, PV.Y, 0.0, literal.x, 2537; EG-NEXT: LSHR * T1.W, T11.Z, literal.x, 2538; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2539; EG-NEXT: BFE_INT T18.X, T12.Z, 0.0, literal.x, 2540; EG-NEXT: BFE_INT T16.Y, PS, 0.0, literal.x, 2541; EG-NEXT: LSHR T0.Z, T12.X, literal.x, 2542; EG-NEXT: BFE_INT T17.W, T0.W, 0.0, literal.x, 2543; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2544; EG-NEXT: 16(2.242078e-44), 32(4.484155e-44) 2545; EG-NEXT: LSHR T11.X, PS, literal.x, 2546; EG-NEXT: BFE_INT T17.Y, PV.Z, 0.0, literal.y, 2547; EG-NEXT: LSHR T0.Z, T12.Z, literal.y, 2548; EG-NEXT: BFE_INT T18.W, T0.Y, 0.0, literal.y, 2549; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 2550; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2551; EG-NEXT: 48(6.726233e-44), 0(0.000000e+00) 2552; EG-NEXT: LSHR T12.X, PS, literal.x, 2553; EG-NEXT: BFE_INT * T18.Y, PV.Z, 0.0, literal.y, 2554; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2555; 2556; CM-LABEL: global_sextload_v16i16_to_v16i32: 2557; CM: ; %bb.0: 2558; CM-NEXT: ALU 0, @12, KC0[CB0:0-32], KC1[] 2559; CM-NEXT: TEX 1 @8 2560; CM-NEXT: ALU 40, @13, KC0[CB0:0-32], KC1[] 2561; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T17, T11.X 2562; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T12, T18.X 2563; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T16, T14.X 2564; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T15, T13.X 2565; CM-NEXT: CF_END 2566; CM-NEXT: Fetch clause starting at 8: 2567; CM-NEXT: VTX_READ_128 T12.XYZW, T11.X, 16, #1 2568; CM-NEXT: VTX_READ_128 T11.XYZW, T11.X, 0, #1 2569; CM-NEXT: ALU clause starting at 12: 2570; CM-NEXT: MOV * T11.X, KC0[2].Z, 2571; CM-NEXT: ALU clause starting at 13: 2572; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 2573; CM-NEXT: 48(6.726233e-44), 0(0.000000e+00) 2574; CM-NEXT: LSHR T13.X, PV.W, literal.x, 2575; CM-NEXT: LSHR T0.Y, T11.Y, literal.y, 2576; CM-NEXT: LSHR T0.Z, T11.Z, literal.y, 2577; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 2578; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2579; CM-NEXT: 32(4.484155e-44), 0(0.000000e+00) 2580; CM-NEXT: LSHR T14.X, PV.W, literal.x, 2581; CM-NEXT: LSHR T1.Y, T11.W, literal.y, 2582; CM-NEXT: BFE_INT T15.Z, T12.W, 0.0, literal.y, BS:VEC_120/SCL_212 2583; CM-NEXT: LSHR * T0.W, T12.X, literal.y, 2584; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2585; CM-NEXT: BFE_INT T15.X, T12.Z, 0.0, literal.x, 2586; CM-NEXT: LSHR T2.Y, T12.Y, literal.x, 2587; CM-NEXT: BFE_INT T16.Z, T12.Y, 0.0, literal.x, 2588; CM-NEXT: LSHR * T1.W, T12.W, literal.x, 2589; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2590; CM-NEXT: BFE_INT T16.X, T12.X, 0.0, literal.x, 2591; CM-NEXT: LSHR T3.Y, T12.Z, literal.x, 2592; CM-NEXT: BFE_INT T12.Z, T11.W, 0.0, literal.x, 2593; CM-NEXT: BFE_INT * T15.W, PV.W, 0.0, literal.x, 2594; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2595; CM-NEXT: BFE_INT T12.X, T11.Z, 0.0, literal.x, 2596; CM-NEXT: BFE_INT T15.Y, PV.Y, 0.0, literal.x, 2597; CM-NEXT: BFE_INT T17.Z, T11.Y, 0.0, literal.x, 2598; CM-NEXT: BFE_INT * T16.W, T2.Y, 0.0, literal.x, BS:VEC_120/SCL_212 2599; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2600; CM-NEXT: BFE_INT T17.X, T11.X, 0.0, literal.x, 2601; CM-NEXT: BFE_INT T16.Y, T0.W, 0.0, literal.x, 2602; CM-NEXT: ADD_INT T1.Z, KC0[2].Y, literal.x, 2603; CM-NEXT: BFE_INT * T12.W, T1.Y, 0.0, literal.x, 2604; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2605; CM-NEXT: LSHR T18.X, PV.Z, literal.x, 2606; CM-NEXT: BFE_INT T12.Y, T0.Z, 0.0, literal.y, 2607; CM-NEXT: LSHR T0.Z, T11.X, literal.y, 2608; CM-NEXT: BFE_INT * T17.W, T0.Y, 0.0, literal.y, 2609; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2610; CM-NEXT: LSHR T11.X, KC0[2].Y, literal.x, 2611; CM-NEXT: BFE_INT * T17.Y, PV.Z, 0.0, literal.y, 2612; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2613 %load = load <16 x i16>, <16 x i16> addrspace(1)* %in 2614 %ext = sext <16 x i16> %load to <16 x i32> 2615 store <16 x i32> %ext, <16 x i32> addrspace(1)* %out 2616 ret void 2617} 2618 2619define amdgpu_kernel void @global_zextload_v32i16_to_v32i32(<32 x i32> addrspace(1)* %out, <32 x i16> addrspace(1)* %in) #0 { 2620; GCN-NOHSA-SI-LABEL: global_zextload_v32i16_to_v32i32: 2621; GCN-NOHSA-SI: ; %bb.0: 2622; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 2623; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 2624; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 2625; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, 0xffff 2626; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s2 2627; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s3 2628; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 2629; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s6 2630; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s7 2631; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 2632; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 2633; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[8:11], off, s[8:11], 0 offset:32 2634; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[12:15], off, s[8:11], 0 offset:48 2635; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(3) 2636; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v19, 16, v3 2637; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v17, 16, v2 2638; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v23, 16, v1 2639; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v21, 16, v0 2640; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(2) 2641; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v27, 16, v7 2642; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v25, 16, v6 2643; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v18, s0, v3 2644; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v16, s0, v2 2645; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v22, s0, v1 2646; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v20, s0, v0 2647; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v3, 16, v5 2648; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v1, 16, v4 2649; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v26, s0, v7 2650; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v24, s0, v6 2651; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v2, s0, v5 2652; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v0, s0, v4 2653; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(1) 2654; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v7, 16, v11 2655; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v5, 16, v10 2656; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v31, 16, v9 2657; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v29, 16, v8 2658; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v6, s0, v11 2659; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v4, s0, v10 2660; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v30, s0, v9 2661; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v28, s0, v8 2662; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 2663; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v11, 16, v15 2664; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v9, 16, v14 2665; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v35, 16, v13 2666; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v33, 16, v12 2667; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v10, s0, v15 2668; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v8, s0, v14 2669; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v34, s0, v13 2670; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v32, s0, v12 2671; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 2672; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 2673; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[32:35], off, s[0:3], 0 offset:96 2674; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:112 2675; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:64 2676; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:80 2677; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 2678; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:48 2679; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[20:23], off, s[0:3], 0 2680; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:16 2681; GCN-NOHSA-SI-NEXT: s_endpgm 2682; 2683; GCN-HSA-LABEL: global_zextload_v32i16_to_v32i32: 2684; GCN-HSA: ; %bb.0: 2685; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 2686; GCN-HSA-NEXT: s_mov_b32 s14, 0xffff 2687; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 2688; GCN-HSA-NEXT: s_add_u32 s4, s2, 16 2689; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 2690; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 2691; GCN-HSA-NEXT: v_mov_b32_e32 v1, s5 2692; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 2693; GCN-HSA-NEXT: s_add_u32 s4, s2, 32 2694; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 2695; GCN-HSA-NEXT: v_mov_b32_e32 v4, s4 2696; GCN-HSA-NEXT: v_mov_b32_e32 v5, s5 2697; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5] 2698; GCN-HSA-NEXT: v_mov_b32_e32 v9, s3 2699; GCN-HSA-NEXT: v_mov_b32_e32 v8, s2 2700; GCN-HSA-NEXT: s_add_u32 s2, s2, 48 2701; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0 2702; GCN-HSA-NEXT: flat_load_dwordx4 v[8:11], v[8:9] 2703; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 2704; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 2705; GCN-HSA-NEXT: flat_load_dwordx4 v[12:15], v[12:13] 2706; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 2707; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 2708; GCN-HSA-NEXT: s_add_u32 s4, s0, 0x60 2709; GCN-HSA-NEXT: s_addc_u32 s5, s1, 0 2710; GCN-HSA-NEXT: s_add_u32 s6, s0, 0x70 2711; GCN-HSA-NEXT: s_addc_u32 s7, s1, 0 2712; GCN-HSA-NEXT: s_add_u32 s8, s0, 64 2713; GCN-HSA-NEXT: s_addc_u32 s9, s1, 0 2714; GCN-HSA-NEXT: s_add_u32 s10, s0, 0x50 2715; GCN-HSA-NEXT: s_addc_u32 s11, s1, 0 2716; GCN-HSA-NEXT: s_add_u32 s12, s0, 32 2717; GCN-HSA-NEXT: s_addc_u32 s13, s1, 0 2718; GCN-HSA-NEXT: v_mov_b32_e32 v21, s3 2719; GCN-HSA-NEXT: v_mov_b32_e32 v20, s2 2720; GCN-HSA-NEXT: v_mov_b32_e32 v23, s7 2721; GCN-HSA-NEXT: v_mov_b32_e32 v22, s6 2722; GCN-HSA-NEXT: s_waitcnt vmcnt(3) 2723; GCN-HSA-NEXT: v_lshrrev_b32_e32 v19, 16, v1 2724; GCN-HSA-NEXT: v_lshrrev_b32_e32 v17, 16, v0 2725; GCN-HSA-NEXT: v_and_b32_e32 v18, s14, v1 2726; GCN-HSA-NEXT: v_and_b32_e32 v16, s14, v0 2727; GCN-HSA-NEXT: v_mov_b32_e32 v0, s12 2728; GCN-HSA-NEXT: v_mov_b32_e32 v1, s13 2729; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[16:19] 2730; GCN-HSA-NEXT: v_mov_b32_e32 v0, s8 2731; GCN-HSA-NEXT: s_waitcnt vmcnt(3) 2732; GCN-HSA-NEXT: v_lshrrev_b32_e32 v19, 16, v5 2733; GCN-HSA-NEXT: v_lshrrev_b32_e32 v17, 16, v4 2734; GCN-HSA-NEXT: v_and_b32_e32 v18, s14, v5 2735; GCN-HSA-NEXT: v_and_b32_e32 v16, s14, v4 2736; GCN-HSA-NEXT: v_mov_b32_e32 v1, s9 2737; GCN-HSA-NEXT: v_mov_b32_e32 v4, s10 2738; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[16:19] 2739; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 2740; GCN-HSA-NEXT: v_lshrrev_b32_e32 v19, 16, v7 2741; GCN-HSA-NEXT: v_lshrrev_b32_e32 v17, 16, v6 2742; GCN-HSA-NEXT: v_and_b32_e32 v18, s14, v7 2743; GCN-HSA-NEXT: v_and_b32_e32 v16, s14, v6 2744; GCN-HSA-NEXT: v_mov_b32_e32 v5, s11 2745; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 2746; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[16:19] 2747; GCN-HSA-NEXT: s_waitcnt vmcnt(4) 2748; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v9 2749; GCN-HSA-NEXT: v_lshrrev_b32_e32 v5, 16, v8 2750; GCN-HSA-NEXT: v_and_b32_e32 v6, s14, v9 2751; GCN-HSA-NEXT: v_and_b32_e32 v4, s14, v8 2752; GCN-HSA-NEXT: s_add_u32 s0, s0, 48 2753; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[4:7] 2754; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 2755; GCN-HSA-NEXT: v_lshrrev_b32_e32 v19, 16, v11 2756; GCN-HSA-NEXT: v_lshrrev_b32_e32 v17, 16, v10 2757; GCN-HSA-NEXT: v_and_b32_e32 v18, s14, v11 2758; GCN-HSA-NEXT: v_and_b32_e32 v16, s14, v10 2759; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 2760; GCN-HSA-NEXT: v_mov_b32_e32 v1, s5 2761; GCN-HSA-NEXT: flat_store_dwordx4 v[20:21], v[16:19] 2762; GCN-HSA-NEXT: s_waitcnt vmcnt(5) 2763; GCN-HSA-NEXT: v_lshrrev_b32_e32 v10, 16, v15 2764; GCN-HSA-NEXT: v_lshrrev_b32_e32 v18, 16, v13 2765; GCN-HSA-NEXT: v_lshrrev_b32_e32 v16, 16, v12 2766; GCN-HSA-NEXT: v_and_b32_e32 v9, s14, v15 2767; GCN-HSA-NEXT: v_and_b32_e32 v17, s14, v13 2768; GCN-HSA-NEXT: v_and_b32_e32 v15, s14, v12 2769; GCN-HSA-NEXT: v_mov_b32_e32 v12, s1 2770; GCN-HSA-NEXT: v_lshrrev_b32_e32 v6, 16, v3 2771; GCN-HSA-NEXT: v_lshrrev_b32_e32 v4, 16, v2 2772; GCN-HSA-NEXT: v_and_b32_e32 v5, s14, v3 2773; GCN-HSA-NEXT: v_and_b32_e32 v3, s14, v2 2774; GCN-HSA-NEXT: v_lshrrev_b32_e32 v8, 16, v14 2775; GCN-HSA-NEXT: v_and_b32_e32 v7, s14, v14 2776; GCN-HSA-NEXT: v_mov_b32_e32 v11, s0 2777; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[15:18] 2778; GCN-HSA-NEXT: flat_store_dwordx4 v[22:23], v[7:10] 2779; GCN-HSA-NEXT: flat_store_dwordx4 v[11:12], v[3:6] 2780; GCN-HSA-NEXT: s_endpgm 2781; 2782; GCN-NOHSA-VI-LABEL: global_zextload_v32i16_to_v32i32: 2783; GCN-NOHSA-VI: ; %bb.0: 2784; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 2785; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 2786; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 2787; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s2 2788; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s3 2789; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 2790; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s6 2791; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s7 2792; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 2793; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 2794; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[8:11], off, s[8:11], 0 offset:32 2795; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[12:15], off, s[8:11], 0 offset:48 2796; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, 0xffff 2797; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 2798; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(3) 2799; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v19, 16, v3 2800; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v18, s0, v3 2801; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v17, 16, v2 2802; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v16, s0, v2 2803; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v3, 16, v1 2804; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v2, s0, v1 2805; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v1, 16, v0 2806; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, s0, v0 2807; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(2) 2808; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v23, 16, v7 2809; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v22, s0, v7 2810; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v21, 16, v6 2811; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v20, s0, v6 2812; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v7, 16, v5 2813; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v6, s0, v5 2814; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v5, 16, v4 2815; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v4, s0, v4 2816; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(1) 2817; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v27, 16, v11 2818; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v26, s0, v11 2819; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v25, 16, v10 2820; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v24, s0, v10 2821; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v11, 16, v9 2822; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v10, s0, v9 2823; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v9, 16, v8 2824; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v8, s0, v8 2825; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 2826; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v31, 16, v15 2827; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v30, s0, v15 2828; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v29, 16, v14 2829; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v28, s0, v14 2830; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v15, 16, v13 2831; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v14, s0, v13 2832; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v13, 16, v12 2833; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v12, s0, v12 2834; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 2835; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:96 2836; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:112 2837; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:64 2838; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:80 2839; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:32 2840; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[20:23], off, s[0:3], 0 offset:48 2841; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 2842; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:16 2843; GCN-NOHSA-VI-NEXT: s_endpgm 2844; 2845; EG-LABEL: global_zextload_v32i16_to_v32i32: 2846; EG: ; %bb.0: 2847; EG-NEXT: ALU 0, @20, KC0[CB0:0-32], KC1[] 2848; EG-NEXT: TEX 3 @12 2849; EG-NEXT: ALU 72, @21, KC0[CB0:0-32], KC1[] 2850; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T34.X, 0 2851; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T31.XYZW, T33.X, 0 2852; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T22.XYZW, T32.X, 0 2853; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T28.XYZW, T30.X, 0 2854; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T29.X, 0 2855; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T27.X, 0 2856; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T26.X, 0 2857; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T24.X, 1 2858; EG-NEXT: CF_END 2859; EG-NEXT: Fetch clause starting at 12: 2860; EG-NEXT: VTX_READ_128 T20.XYZW, T19.X, 0, #1 2861; EG-NEXT: VTX_READ_128 T21.XYZW, T19.X, 48, #1 2862; EG-NEXT: VTX_READ_128 T22.XYZW, T19.X, 32, #1 2863; EG-NEXT: VTX_READ_128 T19.XYZW, T19.X, 16, #1 2864; EG-NEXT: ALU clause starting at 20: 2865; EG-NEXT: MOV * T19.X, KC0[2].Z, 2866; EG-NEXT: ALU clause starting at 21: 2867; EG-NEXT: LSHR * T23.W, T20.W, literal.x, 2868; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2869; EG-NEXT: AND_INT * T23.Z, T20.W, literal.x, 2870; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2871; EG-NEXT: LSHR T23.Y, T20.Z, literal.x, 2872; EG-NEXT: LSHR * T20.W, T20.Y, literal.x, 2873; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2874; EG-NEXT: AND_INT T23.X, T20.Z, literal.x, 2875; EG-NEXT: AND_INT T20.Z, T20.Y, literal.x, 2876; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2877; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 2878; EG-NEXT: LSHR T24.X, PV.W, literal.x, 2879; EG-NEXT: LSHR T20.Y, T20.X, literal.y, 2880; EG-NEXT: LSHR T25.W, T19.W, literal.y, 2881; EG-NEXT: AND_INT * T20.X, T20.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 * T25.Z, T19.W, literal.x, 2885; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2886; EG-NEXT: LSHR T26.X, KC0[2].Y, literal.x, 2887; EG-NEXT: LSHR T25.Y, T19.Z, literal.y, 2888; EG-NEXT: LSHR T19.W, T19.Y, literal.y, 2889; EG-NEXT: AND_INT * T25.X, T19.Z, literal.z, 2890; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2891; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2892; EG-NEXT: AND_INT T19.Z, T19.Y, literal.x, 2893; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2894; EG-NEXT: 65535(9.183409e-41), 48(6.726233e-44) 2895; EG-NEXT: LSHR T27.X, PV.W, literal.x, 2896; EG-NEXT: LSHR T19.Y, T19.X, literal.y, 2897; EG-NEXT: LSHR T28.W, T22.W, literal.y, 2898; EG-NEXT: AND_INT * T19.X, T19.X, literal.z, 2899; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2900; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2901; EG-NEXT: AND_INT T28.Z, T22.W, literal.x, 2902; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2903; EG-NEXT: 65535(9.183409e-41), 32(4.484155e-44) 2904; EG-NEXT: LSHR T29.X, PV.W, literal.x, 2905; EG-NEXT: LSHR T28.Y, T22.Z, literal.y, 2906; EG-NEXT: LSHR T22.W, T22.Y, literal.y, 2907; EG-NEXT: AND_INT * T28.X, T22.Z, literal.z, 2908; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2909; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2910; EG-NEXT: AND_INT T22.Z, T22.Y, literal.x, 2911; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2912; EG-NEXT: 65535(9.183409e-41), 80(1.121039e-43) 2913; EG-NEXT: LSHR T30.X, PV.W, literal.x, 2914; EG-NEXT: LSHR T22.Y, T22.X, literal.y, 2915; EG-NEXT: LSHR T31.W, T21.W, literal.y, 2916; EG-NEXT: AND_INT * T22.X, T22.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: AND_INT T31.Z, T21.W, literal.x, 2920; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2921; EG-NEXT: 65535(9.183409e-41), 64(8.968310e-44) 2922; EG-NEXT: LSHR T32.X, PV.W, literal.x, 2923; EG-NEXT: LSHR T31.Y, T21.Z, literal.y, 2924; EG-NEXT: LSHR T21.W, T21.Y, literal.y, 2925; EG-NEXT: AND_INT * T31.X, T21.Z, literal.z, 2926; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2927; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2928; EG-NEXT: AND_INT T21.Z, T21.Y, literal.x, 2929; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2930; EG-NEXT: 65535(9.183409e-41), 112(1.569454e-43) 2931; EG-NEXT: LSHR T33.X, PV.W, literal.x, 2932; EG-NEXT: LSHR T21.Y, T21.X, literal.y, 2933; EG-NEXT: AND_INT * T21.X, T21.X, literal.z, 2934; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2935; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2936; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 2937; EG-NEXT: 96(1.345247e-43), 0(0.000000e+00) 2938; EG-NEXT: LSHR * T34.X, PV.W, literal.x, 2939; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 2940; 2941; CM-LABEL: global_zextload_v32i16_to_v32i32: 2942; CM: ; %bb.0: 2943; CM-NEXT: ALU 0, @20, KC0[CB0:0-32], KC1[] 2944; CM-NEXT: TEX 3 @12 2945; CM-NEXT: ALU 65, @21, KC0[CB0:0-32], KC1[] 2946; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T33, T34.X 2947; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T31, T21.X 2948; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T30, T32.X 2949; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T28, T22.X 2950; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T27, T29.X 2951; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T25, T19.X 2952; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T24, T26.X 2953; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T23, T20.X 2954; CM-NEXT: CF_END 2955; CM-NEXT: Fetch clause starting at 12: 2956; CM-NEXT: VTX_READ_128 T20.XYZW, T19.X, 48, #1 2957; CM-NEXT: VTX_READ_128 T21.XYZW, T19.X, 0, #1 2958; CM-NEXT: VTX_READ_128 T22.XYZW, T19.X, 16, #1 2959; CM-NEXT: VTX_READ_128 T19.XYZW, T19.X, 32, #1 2960; CM-NEXT: ALU clause starting at 20: 2961; CM-NEXT: MOV * T19.X, KC0[2].Z, 2962; CM-NEXT: ALU clause starting at 21: 2963; CM-NEXT: LSHR * T23.W, T20.Y, literal.x, 2964; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2965; CM-NEXT: AND_INT * T23.Z, T20.Y, literal.x, 2966; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 2967; CM-NEXT: LSHR T23.Y, T20.X, literal.x, 2968; CM-NEXT: LSHR * T24.W, T20.W, literal.x, 2969; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 2970; CM-NEXT: AND_INT T23.X, T20.X, literal.x, 2971; CM-NEXT: AND_INT T24.Z, T20.W, literal.x, 2972; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2973; CM-NEXT: 65535(9.183409e-41), 96(1.345247e-43) 2974; CM-NEXT: LSHR T20.X, PV.W, literal.x, 2975; CM-NEXT: LSHR T24.Y, T20.Z, literal.y, 2976; CM-NEXT: LSHR * T25.W, T19.Y, literal.y, 2977; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2978; CM-NEXT: AND_INT T24.X, T20.Z, literal.x, 2979; CM-NEXT: AND_INT T25.Z, T19.Y, literal.x, 2980; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2981; CM-NEXT: 65535(9.183409e-41), 112(1.569454e-43) 2982; CM-NEXT: LSHR T26.X, PV.W, literal.x, 2983; CM-NEXT: LSHR T25.Y, T19.X, literal.y, 2984; CM-NEXT: LSHR * T27.W, T19.W, literal.y, 2985; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2986; CM-NEXT: AND_INT T25.X, T19.X, literal.x, 2987; CM-NEXT: AND_INT T27.Z, T19.W, literal.x, 2988; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2989; CM-NEXT: 65535(9.183409e-41), 64(8.968310e-44) 2990; CM-NEXT: LSHR T19.X, PV.W, literal.x, 2991; CM-NEXT: LSHR T27.Y, T19.Z, literal.y, 2992; CM-NEXT: LSHR * T28.W, T22.Y, literal.y, 2993; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 2994; CM-NEXT: AND_INT T27.X, T19.Z, literal.x, 2995; CM-NEXT: AND_INT T28.Z, T22.Y, literal.x, 2996; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 2997; CM-NEXT: 65535(9.183409e-41), 80(1.121039e-43) 2998; CM-NEXT: LSHR T29.X, PV.W, literal.x, 2999; CM-NEXT: LSHR T28.Y, T22.X, literal.y, 3000; CM-NEXT: LSHR * T30.W, T22.W, literal.y, 3001; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3002; CM-NEXT: AND_INT T28.X, T22.X, literal.x, 3003; CM-NEXT: AND_INT T30.Z, T22.W, literal.x, 3004; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3005; CM-NEXT: 65535(9.183409e-41), 32(4.484155e-44) 3006; CM-NEXT: LSHR T22.X, PV.W, literal.x, 3007; CM-NEXT: LSHR T30.Y, T22.Z, literal.y, 3008; CM-NEXT: LSHR * T31.W, T21.Y, literal.y, 3009; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3010; CM-NEXT: AND_INT T30.X, T22.Z, literal.x, 3011; CM-NEXT: AND_INT T31.Z, T21.Y, literal.x, 3012; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3013; CM-NEXT: 65535(9.183409e-41), 48(6.726233e-44) 3014; CM-NEXT: LSHR T32.X, PV.W, literal.x, 3015; CM-NEXT: LSHR T31.Y, T21.X, literal.y, 3016; CM-NEXT: LSHR * T33.W, T21.W, literal.y, 3017; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3018; CM-NEXT: AND_INT T31.X, T21.X, literal.x, 3019; CM-NEXT: AND_INT * T33.Z, T21.W, literal.x, 3020; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3021; CM-NEXT: LSHR T21.X, KC0[2].Y, literal.x, 3022; CM-NEXT: LSHR * T33.Y, T21.Z, literal.y, 3023; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3024; CM-NEXT: AND_INT T33.X, T21.Z, literal.x, 3025; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3026; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 3027; CM-NEXT: LSHR * T34.X, PV.W, literal.x, 3028; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 3029 %load = load <32 x i16>, <32 x i16> addrspace(1)* %in 3030 %ext = zext <32 x i16> %load to <32 x i32> 3031 store <32 x i32> %ext, <32 x i32> addrspace(1)* %out 3032 ret void 3033} 3034 3035define amdgpu_kernel void @global_sextload_v32i16_to_v32i32(<32 x i32> addrspace(1)* %out, <32 x i16> addrspace(1)* %in) #0 { 3036; GCN-NOHSA-SI-LABEL: global_sextload_v32i16_to_v32i32: 3037; GCN-NOHSA-SI: ; %bb.0: 3038; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 3039; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 3040; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 3041; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s2 3042; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s3 3043; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 3044; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s6 3045; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s7 3046; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 3047; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 3048; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[8:11], off, s[8:11], 0 offset:32 3049; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[12:15], off, s[8:11], 0 offset:48 3050; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(3) 3051; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v19, 16, v3 3052; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v17, 16, v2 3053; GCN-NOHSA-SI-NEXT: v_bfe_i32 v18, v3, 0, 16 3054; GCN-NOHSA-SI-NEXT: v_bfe_i32 v16, v2, 0, 16 3055; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v23, 16, v1 3056; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v21, 16, v0 3057; GCN-NOHSA-SI-NEXT: v_bfe_i32 v22, v1, 0, 16 3058; GCN-NOHSA-SI-NEXT: v_bfe_i32 v20, v0, 0, 16 3059; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(2) 3060; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v3, 16, v7 3061; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 16, v6 3062; GCN-NOHSA-SI-NEXT: v_bfe_i32 v2, v7, 0, 16 3063; GCN-NOHSA-SI-NEXT: v_bfe_i32 v0, v6, 0, 16 3064; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v27, 16, v5 3065; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v25, 16, v4 3066; GCN-NOHSA-SI-NEXT: v_bfe_i32 v26, v5, 0, 16 3067; GCN-NOHSA-SI-NEXT: v_bfe_i32 v24, v4, 0, 16 3068; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(1) 3069; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v7, 16, v11 3070; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v5, 16, v10 3071; GCN-NOHSA-SI-NEXT: v_bfe_i32 v6, v11, 0, 16 3072; GCN-NOHSA-SI-NEXT: v_bfe_i32 v4, v10, 0, 16 3073; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v31, 16, v9 3074; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v29, 16, v8 3075; GCN-NOHSA-SI-NEXT: v_bfe_i32 v30, v9, 0, 16 3076; GCN-NOHSA-SI-NEXT: v_bfe_i32 v28, v8, 0, 16 3077; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 3078; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v11, 16, v15 3079; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v9, 16, v14 3080; GCN-NOHSA-SI-NEXT: v_bfe_i32 v10, v15, 0, 16 3081; GCN-NOHSA-SI-NEXT: v_bfe_i32 v8, v14, 0, 16 3082; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v35, 16, v13 3083; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v33, 16, v12 3084; GCN-NOHSA-SI-NEXT: v_bfe_i32 v34, v13, 0, 16 3085; GCN-NOHSA-SI-NEXT: v_bfe_i32 v32, v12, 0, 16 3086; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 3087; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 3088; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[32:35], off, s[0:3], 0 offset:96 3089; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:112 3090; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:64 3091; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:80 3092; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:32 3093; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 3094; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[20:23], off, s[0:3], 0 3095; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:16 3096; GCN-NOHSA-SI-NEXT: s_endpgm 3097; 3098; GCN-HSA-LABEL: global_sextload_v32i16_to_v32i32: 3099; GCN-HSA: ; %bb.0: 3100; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 3101; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 3102; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 3103; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 3104; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 3105; GCN-HSA-NEXT: s_add_u32 s4, s2, 48 3106; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 3107; GCN-HSA-NEXT: v_mov_b32_e32 v4, s4 3108; GCN-HSA-NEXT: v_mov_b32_e32 v5, s5 3109; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5] 3110; GCN-HSA-NEXT: s_add_u32 s4, s2, 32 3111; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 3112; GCN-HSA-NEXT: s_add_u32 s2, s2, 16 3113; GCN-HSA-NEXT: v_mov_b32_e32 v9, s5 3114; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0 3115; GCN-HSA-NEXT: v_mov_b32_e32 v8, s4 3116; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 3117; GCN-HSA-NEXT: flat_load_dwordx4 v[8:11], v[8:9] 3118; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 3119; GCN-HSA-NEXT: flat_load_dwordx4 v[12:15], v[12:13] 3120; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 3121; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3122; GCN-HSA-NEXT: s_waitcnt vmcnt(3) 3123; GCN-HSA-NEXT: v_ashrrev_i32_e32 v19, 16, v1 3124; GCN-HSA-NEXT: v_ashrrev_i32_e32 v17, 16, v0 3125; GCN-HSA-NEXT: v_bfe_i32 v18, v1, 0, 16 3126; GCN-HSA-NEXT: v_bfe_i32 v16, v0, 0, 16 3127; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 3128; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 3129; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[16:19] 3130; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 3131; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 3132; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x60 3133; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3134; GCN-HSA-NEXT: v_mov_b32_e32 v21, s3 3135; GCN-HSA-NEXT: v_mov_b32_e32 v20, s2 3136; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x70 3137; GCN-HSA-NEXT: v_ashrrev_i32_e32 v19, 16, v3 3138; GCN-HSA-NEXT: v_ashrrev_i32_e32 v17, 16, v2 3139; GCN-HSA-NEXT: v_bfe_i32 v18, v3, 0, 16 3140; GCN-HSA-NEXT: v_bfe_i32 v16, v2, 0, 16 3141; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3142; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[16:19] 3143; GCN-HSA-NEXT: s_waitcnt vmcnt(4) 3144; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 16, v5 3145; GCN-HSA-NEXT: v_mov_b32_e32 v17, s3 3146; GCN-HSA-NEXT: v_mov_b32_e32 v16, s2 3147; GCN-HSA-NEXT: s_add_u32 s2, s0, 64 3148; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3149; GCN-HSA-NEXT: v_mov_b32_e32 v19, s3 3150; GCN-HSA-NEXT: v_mov_b32_e32 v18, s2 3151; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x50 3152; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 16, v4 3153; GCN-HSA-NEXT: v_bfe_i32 v2, v5, 0, 16 3154; GCN-HSA-NEXT: v_bfe_i32 v0, v4, 0, 16 3155; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3156; GCN-HSA-NEXT: flat_store_dwordx4 v[20:21], v[0:3] 3157; GCN-HSA-NEXT: v_mov_b32_e32 v21, s3 3158; GCN-HSA-NEXT: v_mov_b32_e32 v20, s2 3159; GCN-HSA-NEXT: s_add_u32 s2, s0, 32 3160; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3161; GCN-HSA-NEXT: s_add_u32 s0, s0, 48 3162; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 16, v7 3163; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 16, v6 3164; GCN-HSA-NEXT: v_bfe_i32 v2, v7, 0, 16 3165; GCN-HSA-NEXT: v_bfe_i32 v0, v6, 0, 16 3166; GCN-HSA-NEXT: s_waitcnt vmcnt(4) 3167; GCN-HSA-NEXT: v_ashrrev_i32_e32 v7, 16, v9 3168; GCN-HSA-NEXT: v_ashrrev_i32_e32 v5, 16, v8 3169; GCN-HSA-NEXT: v_bfe_i32 v6, v9, 0, 16 3170; GCN-HSA-NEXT: v_bfe_i32 v4, v8, 0, 16 3171; GCN-HSA-NEXT: v_mov_b32_e32 v9, s3 3172; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 3173; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[0:3] 3174; GCN-HSA-NEXT: v_mov_b32_e32 v8, s2 3175; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 16, v11 3176; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 16, v10 3177; GCN-HSA-NEXT: v_bfe_i32 v2, v11, 0, 16 3178; GCN-HSA-NEXT: v_bfe_i32 v0, v10, 0, 16 3179; GCN-HSA-NEXT: v_mov_b32_e32 v11, s1 3180; GCN-HSA-NEXT: flat_store_dwordx4 v[18:19], v[4:7] 3181; GCN-HSA-NEXT: flat_store_dwordx4 v[20:21], v[0:3] 3182; GCN-HSA-NEXT: s_waitcnt vmcnt(6) 3183; GCN-HSA-NEXT: v_ashrrev_i32_e32 v7, 16, v13 3184; GCN-HSA-NEXT: v_ashrrev_i32_e32 v5, 16, v12 3185; GCN-HSA-NEXT: v_bfe_i32 v6, v13, 0, 16 3186; GCN-HSA-NEXT: v_bfe_i32 v4, v12, 0, 16 3187; GCN-HSA-NEXT: v_mov_b32_e32 v10, s0 3188; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 16, v15 3189; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 16, v14 3190; GCN-HSA-NEXT: v_bfe_i32 v2, v15, 0, 16 3191; GCN-HSA-NEXT: v_bfe_i32 v0, v14, 0, 16 3192; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[4:7] 3193; GCN-HSA-NEXT: flat_store_dwordx4 v[10:11], v[0:3] 3194; GCN-HSA-NEXT: s_endpgm 3195; 3196; GCN-NOHSA-VI-LABEL: global_sextload_v32i16_to_v32i32: 3197; GCN-NOHSA-VI: ; %bb.0: 3198; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 3199; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 3200; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 3201; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s2 3202; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s3 3203; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 3204; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s6 3205; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s7 3206; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 3207; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 3208; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[8:11], off, s[8:11], 0 offset:32 3209; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[12:15], off, s[8:11], 0 offset:48 3210; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 3211; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 3212; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(3) 3213; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v19, 16, v3 3214; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v17, 16, v2 3215; GCN-NOHSA-VI-NEXT: v_bfe_i32 v18, v3, 0, 16 3216; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 3217; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v35, 16, v13 3218; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v33, 16, v12 3219; GCN-NOHSA-VI-NEXT: v_bfe_i32 v34, v13, 0, 16 3220; GCN-NOHSA-VI-NEXT: v_bfe_i32 v32, v12, 0, 16 3221; GCN-NOHSA-VI-NEXT: v_bfe_i32 v16, v2, 0, 16 3222; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v23, 16, v1 3223; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v21, 16, v0 3224; GCN-NOHSA-VI-NEXT: v_bfe_i32 v22, v1, 0, 16 3225; GCN-NOHSA-VI-NEXT: v_bfe_i32 v20, v0, 0, 16 3226; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v3, 16, v7 3227; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 16, v6 3228; GCN-NOHSA-VI-NEXT: v_bfe_i32 v2, v7, 0, 16 3229; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v6, 0, 16 3230; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v27, 16, v5 3231; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v25, 16, v4 3232; GCN-NOHSA-VI-NEXT: v_bfe_i32 v26, v5, 0, 16 3233; GCN-NOHSA-VI-NEXT: v_bfe_i32 v24, v4, 0, 16 3234; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v7, 16, v11 3235; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v5, 16, v10 3236; GCN-NOHSA-VI-NEXT: v_bfe_i32 v6, v11, 0, 16 3237; GCN-NOHSA-VI-NEXT: v_bfe_i32 v4, v10, 0, 16 3238; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v31, 16, v9 3239; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v29, 16, v8 3240; GCN-NOHSA-VI-NEXT: v_bfe_i32 v30, v9, 0, 16 3241; GCN-NOHSA-VI-NEXT: v_bfe_i32 v28, v8, 0, 16 3242; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v11, 16, v15 3243; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v9, 16, v14 3244; GCN-NOHSA-VI-NEXT: v_bfe_i32 v10, v15, 0, 16 3245; GCN-NOHSA-VI-NEXT: v_bfe_i32 v8, v14, 0, 16 3246; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[32:35], off, s[0:3], 0 offset:96 3247; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:112 3248; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:64 3249; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:80 3250; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:32 3251; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 3252; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[20:23], off, s[0:3], 0 3253; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:16 3254; GCN-NOHSA-VI-NEXT: s_endpgm 3255; 3256; EG-LABEL: global_sextload_v32i16_to_v32i32: 3257; EG: ; %bb.0: 3258; EG-NEXT: ALU 9, @20, KC0[CB0:0-32], KC1[] 3259; EG-NEXT: TEX 3 @12 3260; EG-NEXT: ALU 73, @30, KC0[CB0:0-32], KC1[] 3261; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T22.X, 0 3262; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T33.XYZW, T34.X, 0 3263; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T28.X, 0 3264; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T32.XYZW, T27.X, 0 3265; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T26.X, 0 3266; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T31.XYZW, T21.X, 0 3267; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T30.XYZW, T20.X, 0 3268; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T29.XYZW, T19.X, 1 3269; EG-NEXT: CF_END 3270; EG-NEXT: Fetch clause starting at 12: 3271; EG-NEXT: VTX_READ_128 T23.XYZW, T22.X, 16, #1 3272; EG-NEXT: VTX_READ_128 T24.XYZW, T22.X, 32, #1 3273; EG-NEXT: VTX_READ_128 T25.XYZW, T22.X, 0, #1 3274; EG-NEXT: VTX_READ_128 T22.XYZW, T22.X, 48, #1 3275; EG-NEXT: ALU clause starting at 20: 3276; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 3277; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3278; EG-NEXT: LSHR T19.X, PV.W, literal.x, 3279; EG-NEXT: LSHR * T20.X, KC0[2].Y, literal.x, 3280; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 3281; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 3282; EG-NEXT: 48(6.726233e-44), 0(0.000000e+00) 3283; EG-NEXT: LSHR T21.X, PV.W, literal.x, 3284; EG-NEXT: MOV * T22.X, KC0[2].Z, 3285; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 3286; EG-NEXT: ALU clause starting at 30: 3287; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 3288; EG-NEXT: 32(4.484155e-44), 0(0.000000e+00) 3289; EG-NEXT: LSHR T26.X, PV.W, literal.x, 3290; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3291; EG-NEXT: 2(2.802597e-45), 80(1.121039e-43) 3292; EG-NEXT: LSHR T27.X, PV.W, literal.x, 3293; EG-NEXT: LSHR T0.W, T22.Y, literal.y, 3294; EG-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 3295; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3296; EG-NEXT: 64(8.968310e-44), 0(0.000000e+00) 3297; EG-NEXT: LSHR T28.X, PS, literal.x, 3298; EG-NEXT: LSHR T0.Y, T22.W, literal.y, 3299; EG-NEXT: BFE_INT T29.Z, T25.W, 0.0, literal.y, BS:VEC_120/SCL_212 3300; EG-NEXT: LSHR T1.W, T24.Y, literal.y, 3301; EG-NEXT: LSHR * T2.W, T24.W, literal.y, 3302; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3303; EG-NEXT: BFE_INT T29.X, T25.Z, 0.0, literal.x, 3304; EG-NEXT: LSHR T1.Y, T23.Y, literal.x, 3305; EG-NEXT: BFE_INT T30.Z, T25.Y, 0.0, literal.x, BS:VEC_120/SCL_212 3306; EG-NEXT: LSHR T3.W, T23.W, literal.x, 3307; EG-NEXT: LSHR * T4.W, T25.W, literal.x, 3308; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3309; EG-NEXT: BFE_INT T30.X, T25.X, 0.0, literal.x, 3310; EG-NEXT: LSHR T2.Y, T25.Y, literal.x, 3311; EG-NEXT: BFE_INT T31.Z, T23.W, 0.0, literal.x, 3312; EG-NEXT: BFE_INT T29.W, PS, 0.0, literal.x, 3313; EG-NEXT: LSHR * T4.W, T25.Z, literal.x, 3314; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3315; EG-NEXT: BFE_INT T31.X, T23.Z, 0.0, literal.x, 3316; EG-NEXT: BFE_INT T29.Y, PS, 0.0, literal.x, 3317; EG-NEXT: BFE_INT T25.Z, T23.Y, 0.0, literal.x, 3318; EG-NEXT: BFE_INT T30.W, PV.Y, 0.0, literal.x, 3319; EG-NEXT: LSHR * T4.W, T25.X, literal.x, 3320; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3321; EG-NEXT: BFE_INT T25.X, T23.X, 0.0, literal.x, 3322; EG-NEXT: BFE_INT T30.Y, PS, 0.0, literal.x, 3323; EG-NEXT: BFE_INT T32.Z, T24.W, 0.0, literal.x, 3324; EG-NEXT: BFE_INT T31.W, T3.W, 0.0, literal.x, BS:VEC_120/SCL_212 3325; EG-NEXT: LSHR * T3.W, T23.Z, literal.x, 3326; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3327; EG-NEXT: BFE_INT T32.X, T24.Z, 0.0, literal.x, 3328; EG-NEXT: BFE_INT T31.Y, PS, 0.0, literal.x, 3329; EG-NEXT: BFE_INT T23.Z, T24.Y, 0.0, literal.x, 3330; EG-NEXT: BFE_INT T25.W, T1.Y, 0.0, literal.x, BS:VEC_120/SCL_212 3331; EG-NEXT: LSHR * T3.W, T23.X, literal.x, 3332; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3333; EG-NEXT: BFE_INT T23.X, T24.X, 0.0, literal.x, 3334; EG-NEXT: BFE_INT T25.Y, PS, 0.0, literal.x, 3335; EG-NEXT: BFE_INT T33.Z, T22.W, 0.0, literal.x, 3336; EG-NEXT: BFE_INT T32.W, T2.W, 0.0, literal.x, BS:VEC_120/SCL_212 3337; EG-NEXT: LSHR * T2.W, T24.Z, literal.x, 3338; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3339; EG-NEXT: BFE_INT T33.X, T22.Z, 0.0, literal.x, 3340; EG-NEXT: BFE_INT T32.Y, PS, 0.0, literal.x, 3341; EG-NEXT: BFE_INT T24.Z, T22.Y, 0.0, literal.x, 3342; EG-NEXT: BFE_INT T23.W, T1.W, 0.0, literal.x, 3343; EG-NEXT: LSHR * T1.W, T24.X, literal.x, 3344; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3345; EG-NEXT: BFE_INT T24.X, T22.X, 0.0, literal.x, 3346; EG-NEXT: BFE_INT T23.Y, PS, 0.0, literal.x, 3347; EG-NEXT: LSHR T0.Z, T22.Z, literal.x, 3348; EG-NEXT: BFE_INT T33.W, T0.Y, 0.0, literal.x, 3349; EG-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.y, 3350; EG-NEXT: 16(2.242078e-44), 112(1.569454e-43) 3351; EG-NEXT: LSHR T34.X, PS, literal.x, 3352; EG-NEXT: BFE_INT T33.Y, PV.Z, 0.0, literal.y, 3353; EG-NEXT: LSHR T0.Z, T22.X, literal.y, 3354; EG-NEXT: BFE_INT T24.W, T0.W, 0.0, literal.y, 3355; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 3356; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3357; EG-NEXT: 96(1.345247e-43), 0(0.000000e+00) 3358; EG-NEXT: LSHR T22.X, PS, literal.x, 3359; EG-NEXT: BFE_INT * T24.Y, PV.Z, 0.0, literal.y, 3360; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3361; 3362; CM-LABEL: global_sextload_v32i16_to_v32i32: 3363; CM: ; %bb.0: 3364; CM-NEXT: ALU 0, @22, KC0[CB0:0-32], KC1[] 3365; CM-NEXT: TEX 0 @14 3366; CM-NEXT: ALU 7, @23, KC0[CB0:0-32], KC1[] 3367; CM-NEXT: TEX 2 @16 3368; CM-NEXT: ALU 76, @31, KC0[CB0:0-32], KC1[] 3369; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T33, T34.X 3370; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T19, T20.X 3371; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T32, T28.X 3372; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T23, T27.X 3373; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T31, T26.X 3374; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T22, T25.X 3375; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T30, T24.X 3376; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T29, T21.X 3377; CM-NEXT: CF_END 3378; CM-NEXT: Fetch clause starting at 14: 3379; CM-NEXT: VTX_READ_128 T20.XYZW, T19.X, 0, #1 3380; CM-NEXT: Fetch clause starting at 16: 3381; CM-NEXT: VTX_READ_128 T22.XYZW, T19.X, 48, #1 3382; CM-NEXT: VTX_READ_128 T23.XYZW, T19.X, 32, #1 3383; CM-NEXT: VTX_READ_128 T19.XYZW, T19.X, 16, #1 3384; CM-NEXT: ALU clause starting at 22: 3385; CM-NEXT: MOV * T19.X, KC0[2].Z, 3386; CM-NEXT: ALU clause starting at 23: 3387; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 3388; CM-NEXT: 96(1.345247e-43), 0(0.000000e+00) 3389; CM-NEXT: LSHR T21.X, PV.W, literal.x, 3390; CM-NEXT: LSHR T0.Y, T20.Z, literal.y, 3391; CM-NEXT: LSHR T0.Z, T20.W, literal.y, 3392; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 3393; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3394; CM-NEXT: 112(1.569454e-43), 0(0.000000e+00) 3395; CM-NEXT: ALU clause starting at 31: 3396; CM-NEXT: LSHR T24.X, T0.W, literal.x, 3397; CM-NEXT: LSHR T1.Y, T20.Y, literal.y, 3398; CM-NEXT: LSHR T1.Z, T19.Z, literal.y, 3399; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 3400; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3401; CM-NEXT: 64(8.968310e-44), 0(0.000000e+00) 3402; CM-NEXT: LSHR T25.X, PV.W, literal.x, 3403; CM-NEXT: LSHR T2.Y, T19.W, literal.y, 3404; CM-NEXT: LSHR T2.Z, T19.X, literal.y, 3405; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 3406; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3407; CM-NEXT: 80(1.121039e-43), 0(0.000000e+00) 3408; CM-NEXT: LSHR T26.X, PV.W, literal.x, 3409; CM-NEXT: LSHR T3.Y, T19.Y, literal.y, 3410; CM-NEXT: LSHR T3.Z, T23.Z, literal.y, 3411; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 3412; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3413; CM-NEXT: 32(4.484155e-44), 0(0.000000e+00) 3414; CM-NEXT: LSHR T27.X, PV.W, literal.x, 3415; CM-NEXT: LSHR T4.Y, T23.W, literal.y, 3416; CM-NEXT: LSHR T4.Z, T23.X, literal.y, 3417; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 3418; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3419; CM-NEXT: 48(6.726233e-44), 0(0.000000e+00) 3420; CM-NEXT: LSHR T28.X, PV.W, literal.x, 3421; CM-NEXT: LSHR T5.Y, T23.Y, literal.y, 3422; CM-NEXT: BFE_INT T29.Z, T22.Y, 0.0, literal.y, BS:VEC_120/SCL_212 3423; CM-NEXT: LSHR * T0.W, T22.Z, literal.y, 3424; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3425; CM-NEXT: BFE_INT T29.X, T22.X, 0.0, literal.x, 3426; CM-NEXT: LSHR T6.Y, T22.W, literal.x, 3427; CM-NEXT: BFE_INT T30.Z, T22.W, 0.0, literal.x, 3428; CM-NEXT: LSHR * T1.W, T22.Y, literal.x, 3429; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3430; CM-NEXT: BFE_INT T30.X, T22.Z, 0.0, literal.x, 3431; CM-NEXT: LSHR T7.Y, T22.X, literal.x, 3432; CM-NEXT: BFE_INT T22.Z, T23.Y, 0.0, literal.x, 3433; CM-NEXT: BFE_INT * T29.W, PV.W, 0.0, literal.x, 3434; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3435; CM-NEXT: BFE_INT T22.X, T23.X, 0.0, literal.x, 3436; CM-NEXT: BFE_INT T29.Y, PV.Y, 0.0, literal.x, 3437; CM-NEXT: BFE_INT T31.Z, T23.W, 0.0, literal.x, 3438; CM-NEXT: BFE_INT * T30.W, T6.Y, 0.0, literal.x, 3439; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3440; CM-NEXT: BFE_INT T31.X, T23.Z, 0.0, literal.x, 3441; CM-NEXT: BFE_INT T30.Y, T0.W, 0.0, literal.x, 3442; CM-NEXT: BFE_INT T23.Z, T19.Y, 0.0, literal.x, 3443; CM-NEXT: BFE_INT * T22.W, T5.Y, 0.0, literal.x, BS:VEC_120/SCL_212 3444; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3445; CM-NEXT: BFE_INT T23.X, T19.X, 0.0, literal.x, 3446; CM-NEXT: BFE_INT T22.Y, T4.Z, 0.0, literal.x, 3447; CM-NEXT: BFE_INT T32.Z, T19.W, 0.0, literal.x, 3448; CM-NEXT: BFE_INT * T31.W, T4.Y, 0.0, literal.x, 3449; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3450; CM-NEXT: BFE_INT T32.X, T19.Z, 0.0, literal.x, 3451; CM-NEXT: BFE_INT T31.Y, T3.Z, 0.0, literal.x, BS:VEC_120/SCL_212 3452; CM-NEXT: BFE_INT T19.Z, T20.Y, 0.0, literal.x, 3453; CM-NEXT: BFE_INT * T23.W, T3.Y, 0.0, literal.x, BS:VEC_120/SCL_212 3454; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3455; CM-NEXT: BFE_INT T19.X, T20.X, 0.0, literal.x, 3456; CM-NEXT: BFE_INT T23.Y, T2.Z, 0.0, literal.x, 3457; CM-NEXT: BFE_INT T33.Z, T20.W, 0.0, literal.x, 3458; CM-NEXT: BFE_INT * T32.W, T2.Y, 0.0, literal.x, 3459; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3460; CM-NEXT: BFE_INT T33.X, T20.Z, 0.0, literal.x, 3461; CM-NEXT: BFE_INT T32.Y, T1.Z, 0.0, literal.x, BS:VEC_120/SCL_212 3462; CM-NEXT: LSHR T1.Z, T20.X, literal.x, 3463; CM-NEXT: BFE_INT * T19.W, T1.Y, 0.0, literal.x, 3464; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3465; CM-NEXT: LSHR T20.X, KC0[2].Y, literal.x, 3466; CM-NEXT: BFE_INT T19.Y, PV.Z, 0.0, literal.y, 3467; CM-NEXT: ADD_INT T1.Z, KC0[2].Y, literal.y, 3468; CM-NEXT: BFE_INT * T33.W, T0.Z, 0.0, literal.y, 3469; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3470; CM-NEXT: LSHR T34.X, PV.Z, literal.x, 3471; CM-NEXT: BFE_INT * T33.Y, T0.Y, 0.0, literal.y, 3472; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3473 %load = load <32 x i16>, <32 x i16> addrspace(1)* %in 3474 %ext = sext <32 x i16> %load to <32 x i32> 3475 store <32 x i32> %ext, <32 x i32> addrspace(1)* %out 3476 ret void 3477} 3478 3479define amdgpu_kernel void @global_zextload_v64i16_to_v64i32(<64 x i32> addrspace(1)* %out, <64 x i16> addrspace(1)* %in) #0 { 3480; GCN-NOHSA-SI-LABEL: global_zextload_v64i16_to_v64i32: 3481; GCN-NOHSA-SI: ; %bb.0: 3482; GCN-NOHSA-SI-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD0 3483; GCN-NOHSA-SI-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD1 3484; GCN-NOHSA-SI-NEXT: s_mov_b32 s14, -1 3485; GCN-NOHSA-SI-NEXT: s_mov_b32 s15, 0xe8f000 3486; GCN-NOHSA-SI-NEXT: s_add_u32 s12, s12, s3 3487; GCN-NOHSA-SI-NEXT: s_addc_u32 s13, s13, 0 3488; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 3489; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 3490; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 3491; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s2 3492; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s3 3493; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 3494; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s6 3495; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s7 3496; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[12:15], off, s[8:11], 0 3497; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, 0xffff 3498; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[16:19], off, s[8:11], 0 offset:16 3499; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(1) 3500; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v3, 16, v15 3501; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v1, 16, v14 3502; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v6, 16, v13 3503; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v4, 16, v12 3504; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 3505; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v9, 16, v19 3506; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v7, 16, v18 3507; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v2, s0, v15 3508; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v0, s0, v14 3509; GCN-NOHSA-SI-NEXT: buffer_store_dword v0, off, s[12:15], 0 offset:4 ; 4-byte Folded Spill 3510; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 3511; GCN-NOHSA-SI-NEXT: buffer_store_dword v1, off, s[12:15], 0 offset:8 ; 4-byte Folded Spill 3512; GCN-NOHSA-SI-NEXT: buffer_store_dword v2, off, s[12:15], 0 offset:12 ; 4-byte Folded Spill 3513; GCN-NOHSA-SI-NEXT: buffer_store_dword v3, off, s[12:15], 0 offset:16 ; 4-byte Folded Spill 3514; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v5, s0, v13 3515; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3516; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v3, s0, v12 3517; GCN-NOHSA-SI-NEXT: buffer_store_dword v3, off, s[12:15], 0 offset:20 ; 4-byte Folded Spill 3518; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 3519; GCN-NOHSA-SI-NEXT: buffer_store_dword v4, off, s[12:15], 0 offset:24 ; 4-byte Folded Spill 3520; GCN-NOHSA-SI-NEXT: buffer_store_dword v5, off, s[12:15], 0 offset:28 ; 4-byte Folded Spill 3521; GCN-NOHSA-SI-NEXT: buffer_store_dword v6, off, s[12:15], 0 offset:32 ; 4-byte Folded Spill 3522; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v15, 16, v17 3523; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v13, 16, v16 3524; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v8, s0, v19 3525; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3526; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v6, s0, v18 3527; GCN-NOHSA-SI-NEXT: buffer_store_dword v6, off, s[12:15], 0 offset:36 ; 4-byte Folded Spill 3528; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 3529; GCN-NOHSA-SI-NEXT: buffer_store_dword v7, off, s[12:15], 0 offset:40 ; 4-byte Folded Spill 3530; GCN-NOHSA-SI-NEXT: buffer_store_dword v8, off, s[12:15], 0 offset:44 ; 4-byte Folded Spill 3531; GCN-NOHSA-SI-NEXT: buffer_store_dword v9, off, s[12:15], 0 offset:48 ; 4-byte Folded Spill 3532; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[24:27], off, s[8:11], 0 offset:32 3533; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v14, s0, v17 3534; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v12, s0, v16 3535; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[28:31], off, s[8:11], 0 offset:48 3536; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(1) 3537; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v19, 16, v27 3538; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v17, 16, v26 3539; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v23, 16, v25 3540; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v21, 16, v24 3541; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v18, s0, v27 3542; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v16, s0, v26 3543; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v22, s0, v25 3544; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v20, s0, v24 3545; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 3546; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v27, 16, v31 3547; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v25, 16, v30 3548; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v34, 16, v29 3549; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v32, 16, v28 3550; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v26, s0, v31 3551; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v24, s0, v30 3552; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[35:38], off, s[8:11], 0 offset:64 3553; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v33, s0, v29 3554; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v31, s0, v28 3555; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[39:42], off, s[8:11], 0 offset:80 3556; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(1) 3557; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v46, 16, v38 3558; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v44, 16, v37 3559; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v50, 16, v36 3560; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v48, 16, v35 3561; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v45, s0, v38 3562; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v43, s0, v37 3563; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v49, s0, v36 3564; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v47, s0, v35 3565; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 3566; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v38, 16, v42 3567; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v36, 16, v41 3568; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v54, 16, v40 3569; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v52, 16, v39 3570; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v37, s0, v42 3571; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v35, s0, v41 3572; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[55:58], off, s[8:11], 0 offset:96 3573; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v53, s0, v40 3574; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v51, s0, v39 3575; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[39:42], off, s[8:11], 0 offset:112 3576; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(1) 3577; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v61, 16, v58 3578; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v59, 16, v57 3579; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v11, 16, v56 3580; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3581; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v9, 16, v55 3582; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v60, s0, v58 3583; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v58, s0, v57 3584; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v10, s0, v56 3585; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v8, s0, v55 3586; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 3587; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v7, 16, v42 3588; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v5, 16, v41 3589; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v3, 16, v40 3590; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v1, 16, v39 3591; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v6, s0, v42 3592; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v4, s0, v41 3593; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v2, s0, v40 3594; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v0, s0, v39 3595; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 3596; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 3597; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:224 3598; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:240 3599; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:192 3600; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[58:61], off, s[0:3], 0 offset:208 3601; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[51:54], off, s[0:3], 0 offset:160 3602; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[35:38], off, s[0:3], 0 offset:176 3603; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[47:50], off, s[0:3], 0 offset:128 3604; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[43:46], off, s[0:3], 0 offset:144 3605; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[31:34], off, s[0:3], 0 offset:96 3606; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:112 3607; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[20:23], off, s[0:3], 0 offset:64 3608; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:80 3609; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:32 3610; GCN-NOHSA-SI-NEXT: buffer_load_dword v0, off, s[12:15], 0 offset:36 ; 4-byte Folded Reload 3611; GCN-NOHSA-SI-NEXT: buffer_load_dword v1, off, s[12:15], 0 offset:40 ; 4-byte Folded Reload 3612; GCN-NOHSA-SI-NEXT: buffer_load_dword v2, off, s[12:15], 0 offset:44 ; 4-byte Folded Reload 3613; GCN-NOHSA-SI-NEXT: buffer_load_dword v3, off, s[12:15], 0 offset:48 ; 4-byte Folded Reload 3614; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 3615; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 3616; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3617; GCN-NOHSA-SI-NEXT: buffer_load_dword v0, off, s[12:15], 0 offset:20 ; 4-byte Folded Reload 3618; GCN-NOHSA-SI-NEXT: buffer_load_dword v1, off, s[12:15], 0 offset:24 ; 4-byte Folded Reload 3619; GCN-NOHSA-SI-NEXT: buffer_load_dword v2, off, s[12:15], 0 offset:28 ; 4-byte Folded Reload 3620; GCN-NOHSA-SI-NEXT: buffer_load_dword v3, off, s[12:15], 0 offset:32 ; 4-byte Folded Reload 3621; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 3622; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 3623; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 3624; GCN-NOHSA-SI-NEXT: buffer_load_dword v0, off, s[12:15], 0 offset:4 ; 4-byte Folded Reload 3625; GCN-NOHSA-SI-NEXT: buffer_load_dword v1, off, s[12:15], 0 offset:8 ; 4-byte Folded Reload 3626; GCN-NOHSA-SI-NEXT: buffer_load_dword v2, off, s[12:15], 0 offset:12 ; 4-byte Folded Reload 3627; GCN-NOHSA-SI-NEXT: buffer_load_dword v3, off, s[12:15], 0 offset:16 ; 4-byte Folded Reload 3628; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 3629; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 3630; GCN-NOHSA-SI-NEXT: s_endpgm 3631; 3632; GCN-HSA-LABEL: global_zextload_v64i16_to_v64i32: 3633; GCN-HSA: ; %bb.0: 3634; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 3635; GCN-HSA-NEXT: s_movk_i32 s12, 0x50 3636; GCN-HSA-NEXT: s_movk_i32 s13, 0x60 3637; GCN-HSA-NEXT: s_movk_i32 s14, 0x70 3638; GCN-HSA-NEXT: s_mov_b32 s15, 0xffff 3639; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 3640; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 3641; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 3642; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 3643; GCN-HSA-NEXT: s_add_u32 s4, s2, s12 3644; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 3645; GCN-HSA-NEXT: v_mov_b32_e32 v4, s4 3646; GCN-HSA-NEXT: v_mov_b32_e32 v5, s5 3647; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5] 3648; GCN-HSA-NEXT: s_add_u32 s4, s2, s13 3649; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 3650; GCN-HSA-NEXT: v_mov_b32_e32 v9, s5 3651; GCN-HSA-NEXT: v_mov_b32_e32 v8, s4 3652; GCN-HSA-NEXT: s_add_u32 s4, s2, s14 3653; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 3654; GCN-HSA-NEXT: v_mov_b32_e32 v13, s5 3655; GCN-HSA-NEXT: v_mov_b32_e32 v12, s4 3656; GCN-HSA-NEXT: s_add_u32 s4, s2, 16 3657; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 3658; GCN-HSA-NEXT: s_add_u32 s6, s2, 32 3659; GCN-HSA-NEXT: s_addc_u32 s7, s3, 0 3660; GCN-HSA-NEXT: flat_load_dwordx4 v[8:11], v[8:9] 3661; GCN-HSA-NEXT: s_add_u32 s8, s2, 48 3662; GCN-HSA-NEXT: s_addc_u32 s9, s3, 0 3663; GCN-HSA-NEXT: s_add_u32 s2, s2, 64 3664; GCN-HSA-NEXT: flat_load_dwordx4 v[12:15], v[12:13] 3665; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0 3666; GCN-HSA-NEXT: v_mov_b32_e32 v17, s3 3667; GCN-HSA-NEXT: v_mov_b32_e32 v16, s2 3668; GCN-HSA-NEXT: flat_load_dwordx4 v[16:19], v[16:17] 3669; GCN-HSA-NEXT: v_mov_b32_e32 v21, s9 3670; GCN-HSA-NEXT: v_mov_b32_e32 v20, s8 3671; GCN-HSA-NEXT: flat_load_dwordx4 v[20:23], v[20:21] 3672; GCN-HSA-NEXT: v_mov_b32_e32 v29, s5 3673; GCN-HSA-NEXT: v_mov_b32_e32 v28, s4 3674; GCN-HSA-NEXT: flat_load_dwordx4 v[28:31], v[28:29] 3675; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 3676; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3677; GCN-HSA-NEXT: v_mov_b32_e32 v37, s1 3678; GCN-HSA-NEXT: v_mov_b32_e32 v36, s0 3679; GCN-HSA-NEXT: s_waitcnt vmcnt(6) 3680; GCN-HSA-NEXT: v_lshrrev_b32_e32 v27, 16, v1 3681; GCN-HSA-NEXT: v_lshrrev_b32_e32 v25, 16, v0 3682; GCN-HSA-NEXT: v_and_b32_e32 v26, s15, v1 3683; GCN-HSA-NEXT: v_and_b32_e32 v24, s15, v0 3684; GCN-HSA-NEXT: v_mov_b32_e32 v0, s6 3685; GCN-HSA-NEXT: v_mov_b32_e32 v1, s7 3686; GCN-HSA-NEXT: flat_load_dwordx4 v[32:35], v[0:1] 3687; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 3688; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 3689; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xe0 3690; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3691; GCN-HSA-NEXT: s_add_u32 s4, s0, 0xf0 3692; GCN-HSA-NEXT: s_addc_u32 s5, s1, 0 3693; GCN-HSA-NEXT: s_add_u32 s6, s0, 0xc0 3694; GCN-HSA-NEXT: s_addc_u32 s7, s1, 0 3695; GCN-HSA-NEXT: s_add_u32 s8, s0, 0xd0 3696; GCN-HSA-NEXT: s_addc_u32 s9, s1, 0 3697; GCN-HSA-NEXT: flat_store_dwordx4 v[36:37], v[24:27] 3698; GCN-HSA-NEXT: s_add_u32 s10, s0, 0xa0 3699; GCN-HSA-NEXT: v_lshrrev_b32_e32 v27, 16, v3 3700; GCN-HSA-NEXT: v_lshrrev_b32_e32 v25, 16, v2 3701; GCN-HSA-NEXT: v_and_b32_e32 v26, s15, v3 3702; GCN-HSA-NEXT: v_and_b32_e32 v24, s15, v2 3703; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[24:27] 3704; GCN-HSA-NEXT: s_addc_u32 s11, s1, 0 3705; GCN-HSA-NEXT: v_mov_b32_e32 v25, s3 3706; GCN-HSA-NEXT: s_waitcnt vmcnt(8) 3707; GCN-HSA-NEXT: v_lshrrev_b32_e32 v3, 16, v5 3708; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v4 3709; GCN-HSA-NEXT: v_and_b32_e32 v2, s15, v5 3710; GCN-HSA-NEXT: v_and_b32_e32 v0, s15, v4 3711; GCN-HSA-NEXT: v_mov_b32_e32 v4, s10 3712; GCN-HSA-NEXT: v_mov_b32_e32 v24, s2 3713; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xb0 3714; GCN-HSA-NEXT: v_mov_b32_e32 v5, s11 3715; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3716; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 3717; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 3718; GCN-HSA-NEXT: v_lshrrev_b32_e32 v3, 16, v7 3719; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v6 3720; GCN-HSA-NEXT: v_and_b32_e32 v2, s15, v7 3721; GCN-HSA-NEXT: v_and_b32_e32 v0, s15, v6 3722; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 3723; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 3724; GCN-HSA-NEXT: v_mov_b32_e32 v4, s6 3725; GCN-HSA-NEXT: v_mov_b32_e32 v5, s7 3726; GCN-HSA-NEXT: s_waitcnt vmcnt(9) 3727; GCN-HSA-NEXT: v_lshrrev_b32_e32 v3, 16, v9 3728; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v8 3729; GCN-HSA-NEXT: v_and_b32_e32 v2, s15, v9 3730; GCN-HSA-NEXT: v_and_b32_e32 v0, s15, v8 3731; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 3732; GCN-HSA-NEXT: v_mov_b32_e32 v4, s8 3733; GCN-HSA-NEXT: v_lshrrev_b32_e32 v3, 16, v11 3734; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v10 3735; GCN-HSA-NEXT: v_and_b32_e32 v2, s15, v11 3736; GCN-HSA-NEXT: v_and_b32_e32 v0, s15, v10 3737; GCN-HSA-NEXT: v_mov_b32_e32 v5, s9 3738; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x80 3739; GCN-HSA-NEXT: v_mov_b32_e32 v9, s5 3740; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 3741; GCN-HSA-NEXT: s_waitcnt vmcnt(10) 3742; GCN-HSA-NEXT: v_lshrrev_b32_e32 v5, 16, v14 3743; GCN-HSA-NEXT: v_lshrrev_b32_e32 v3, 16, v13 3744; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v12 3745; GCN-HSA-NEXT: v_and_b32_e32 v2, s15, v13 3746; GCN-HSA-NEXT: v_and_b32_e32 v0, s15, v12 3747; GCN-HSA-NEXT: v_and_b32_e32 v4, s15, v14 3748; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3749; GCN-HSA-NEXT: v_mov_b32_e32 v8, s4 3750; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v15 3751; GCN-HSA-NEXT: v_and_b32_e32 v6, s15, v15 3752; GCN-HSA-NEXT: flat_store_dwordx4 v[24:25], v[0:3] 3753; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[4:7] 3754; GCN-HSA-NEXT: s_waitcnt vmcnt(11) 3755; GCN-HSA-NEXT: v_lshrrev_b32_e32 v3, 16, v17 3756; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 3757; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 3758; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x90 3759; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v16 3760; GCN-HSA-NEXT: v_and_b32_e32 v2, s15, v17 3761; GCN-HSA-NEXT: v_and_b32_e32 v0, s15, v16 3762; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3763; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 3764; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 3765; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 3766; GCN-HSA-NEXT: s_add_u32 s2, s0, s13 3767; GCN-HSA-NEXT: v_lshrrev_b32_e32 v3, 16, v19 3768; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v18 3769; GCN-HSA-NEXT: v_and_b32_e32 v2, s15, v19 3770; GCN-HSA-NEXT: v_and_b32_e32 v0, s15, v18 3771; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3772; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 3773; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 3774; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 3775; GCN-HSA-NEXT: s_add_u32 s2, s0, s14 3776; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3777; GCN-HSA-NEXT: v_mov_b32_e32 v9, s3 3778; GCN-HSA-NEXT: v_mov_b32_e32 v8, s2 3779; GCN-HSA-NEXT: s_add_u32 s2, s0, 64 3780; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3781; GCN-HSA-NEXT: v_mov_b32_e32 v17, s3 3782; GCN-HSA-NEXT: v_mov_b32_e32 v16, s2 3783; GCN-HSA-NEXT: s_add_u32 s2, s0, s12 3784; GCN-HSA-NEXT: s_waitcnt vmcnt(10) 3785; GCN-HSA-NEXT: v_lshrrev_b32_e32 v15, 16, v33 3786; GCN-HSA-NEXT: v_lshrrev_b32_e32 v13, 16, v32 3787; GCN-HSA-NEXT: v_and_b32_e32 v14, s15, v33 3788; GCN-HSA-NEXT: v_and_b32_e32 v12, s15, v32 3789; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3790; GCN-HSA-NEXT: v_lshrrev_b32_e32 v3, 16, v21 3791; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v20 3792; GCN-HSA-NEXT: v_and_b32_e32 v2, s15, v21 3793; GCN-HSA-NEXT: v_and_b32_e32 v0, s15, v20 3794; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[12:15] 3795; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 3796; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 3797; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v23 3798; GCN-HSA-NEXT: v_lshrrev_b32_e32 v5, 16, v22 3799; GCN-HSA-NEXT: v_and_b32_e32 v6, s15, v23 3800; GCN-HSA-NEXT: v_and_b32_e32 v4, s15, v22 3801; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 3802; GCN-HSA-NEXT: s_add_u32 s2, s0, 32 3803; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[4:7] 3804; GCN-HSA-NEXT: v_lshrrev_b32_e32 v11, 16, v35 3805; GCN-HSA-NEXT: v_lshrrev_b32_e32 v9, 16, v34 3806; GCN-HSA-NEXT: v_and_b32_e32 v10, s15, v35 3807; GCN-HSA-NEXT: v_and_b32_e32 v8, s15, v34 3808; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 3809; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[8:11] 3810; GCN-HSA-NEXT: s_add_u32 s0, s0, 48 3811; GCN-HSA-NEXT: v_mov_b32_e32 v9, s3 3812; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v29 3813; GCN-HSA-NEXT: v_lshrrev_b32_e32 v5, 16, v28 3814; GCN-HSA-NEXT: v_and_b32_e32 v6, s15, v29 3815; GCN-HSA-NEXT: v_and_b32_e32 v4, s15, v28 3816; GCN-HSA-NEXT: v_mov_b32_e32 v8, s2 3817; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 3818; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[4:7] 3819; GCN-HSA-NEXT: v_lshrrev_b32_e32 v3, 16, v31 3820; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 3821; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v30 3822; GCN-HSA-NEXT: v_and_b32_e32 v2, s15, v31 3823; GCN-HSA-NEXT: v_and_b32_e32 v0, s15, v30 3824; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 3825; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 3826; GCN-HSA-NEXT: s_endpgm 3827; 3828; GCN-NOHSA-VI-LABEL: global_zextload_v64i16_to_v64i32: 3829; GCN-NOHSA-VI: ; %bb.0: 3830; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 3831; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 3832; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 3833; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 3834; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 3835; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 3836; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s6 3837; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s7 3838; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, s2 3839; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, s3 3840; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[8:11], off, s[4:7], 0 offset:112 3841; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[12:15], off, s[4:7], 0 offset:96 3842; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[16:19], off, s[4:7], 0 offset:80 3843; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[20:23], off, s[4:7], 0 offset:64 3844; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[4:7], off, s[4:7], 0 3845; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[24:27], off, s[4:7], 0 offset:16 3846; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[28:31], off, s[4:7], 0 offset:32 3847; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[32:35], off, s[4:7], 0 offset:48 3848; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, 0xffff 3849; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(7) 3850; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v63, 16, v11 3851; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v62, s4, v11 3852; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v61, 16, v10 3853; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v60, s4, v10 3854; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v11, 16, v9 3855; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v10, s4, v9 3856; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v9, 16, v8 3857; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v8, s4, v8 3858; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(3) 3859; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v3, 16, v7 3860; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v2, s4, v7 3861; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v1, 16, v6 3862; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, s4, v6 3863; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v7, 16, v5 3864; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v6, s4, v5 3865; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v5, 16, v4 3866; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v4, s4, v4 3867; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(2) 3868; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v39, 16, v27 3869; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v38, s4, v27 3870; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v37, 16, v26 3871; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v36, s4, v26 3872; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v27, 16, v25 3873; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v26, s4, v25 3874; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v25, 16, v24 3875; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v24, s4, v24 3876; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(1) 3877; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v43, 16, v31 3878; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v42, s4, v31 3879; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v41, 16, v30 3880; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v40, s4, v30 3881; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v31, 16, v29 3882; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v30, s4, v29 3883; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v29, 16, v28 3884; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v28, s4, v28 3885; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 3886; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v47, 16, v35 3887; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v46, s4, v35 3888; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v45, 16, v34 3889; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v44, s4, v34 3890; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v35, 16, v33 3891; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v34, s4, v33 3892; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v33, 16, v32 3893; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v32, s4, v32 3894; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v51, 16, v23 3895; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v50, s4, v23 3896; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v49, 16, v22 3897; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v48, s4, v22 3898; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v23, 16, v21 3899; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v22, s4, v21 3900; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v21, 16, v20 3901; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v20, s4, v20 3902; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v55, 16, v19 3903; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v54, s4, v19 3904; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v53, 16, v18 3905; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v52, s4, v18 3906; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v19, 16, v17 3907; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v18, s4, v17 3908; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v17, 16, v16 3909; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v16, s4, v16 3910; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v59, 16, v15 3911; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v58, s4, v15 3912; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v57, 16, v14 3913; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v56, s4, v14 3914; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v15, 16, v13 3915; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v14, s4, v13 3916; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v13, 16, v12 3917; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v12, s4, v12 3918; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:224 3919; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[60:63], off, s[0:3], 0 offset:240 3920; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:192 3921; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[56:59], off, s[0:3], 0 offset:208 3922; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:160 3923; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[52:55], off, s[0:3], 0 offset:176 3924; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[20:23], off, s[0:3], 0 offset:128 3925; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[48:51], off, s[0:3], 0 offset:144 3926; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[32:35], off, s[0:3], 0 offset:96 3927; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[44:47], off, s[0:3], 0 offset:112 3928; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:64 3929; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[40:43], off, s[0:3], 0 offset:80 3930; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:32 3931; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[36:39], off, s[0:3], 0 offset:48 3932; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 3933; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 3934; GCN-NOHSA-VI-NEXT: s_endpgm 3935; 3936; EG-LABEL: global_zextload_v64i16_to_v64i32: 3937; EG: ; %bb.0: 3938; EG-NEXT: ALU 0, @38, KC0[CB0:0-32], KC1[] 3939; EG-NEXT: TEX 3 @22 3940; EG-NEXT: ALU 56, @39, KC0[CB0:0-32], KC1[] 3941; EG-NEXT: TEX 3 @30 3942; EG-NEXT: ALU 87, @96, KC0[CB0:0-32], KC1[] 3943; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T49.XYZW, T66.X, 0 3944; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T63.XYZW, T65.X, 0 3945; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T50.XYZW, T64.X, 0 3946; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T60.XYZW, T62.X, 0 3947; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T51.XYZW, T61.X, 0 3948; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T57.XYZW, T59.X, 0 3949; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T52.XYZW, T58.X, 0 3950; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T54.XYZW, T56.X, 0 3951; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T38.XYZW, T55.X, 0 3952; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T35.XYZW, T53.X, 0 3953; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T39.XYZW, T48.X, 0 3954; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T45.XYZW, T47.X, 0 3955; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T40.XYZW, T46.X, 0 3956; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T42.XYZW, T44.X, 0 3957; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T36.XYZW, T43.X, 0 3958; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T37.XYZW, T41.X, 1 3959; EG-NEXT: CF_END 3960; EG-NEXT: Fetch clause starting at 22: 3961; EG-NEXT: VTX_READ_128 T36.XYZW, T35.X, 0, #1 3962; EG-NEXT: VTX_READ_128 T38.XYZW, T35.X, 48, #1 3963; EG-NEXT: VTX_READ_128 T39.XYZW, T35.X, 32, #1 3964; EG-NEXT: VTX_READ_128 T40.XYZW, T35.X, 16, #1 3965; EG-NEXT: Fetch clause starting at 30: 3966; EG-NEXT: VTX_READ_128 T49.XYZW, T35.X, 112, #1 3967; EG-NEXT: VTX_READ_128 T50.XYZW, T35.X, 96, #1 3968; EG-NEXT: VTX_READ_128 T51.XYZW, T35.X, 80, #1 3969; EG-NEXT: VTX_READ_128 T52.XYZW, T35.X, 64, #1 3970; EG-NEXT: ALU clause starting at 38: 3971; EG-NEXT: MOV * T35.X, KC0[2].Z, 3972; EG-NEXT: ALU clause starting at 39: 3973; EG-NEXT: LSHR * T37.W, T36.W, literal.x, 3974; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3975; EG-NEXT: AND_INT * T37.Z, T36.W, literal.x, 3976; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3977; EG-NEXT: LSHR T37.Y, T36.Z, literal.x, 3978; EG-NEXT: LSHR * T36.W, T36.Y, literal.x, 3979; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 3980; EG-NEXT: AND_INT T37.X, T36.Z, literal.x, 3981; EG-NEXT: AND_INT T36.Z, T36.Y, literal.x, 3982; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 3983; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 3984; EG-NEXT: LSHR T41.X, PV.W, literal.x, 3985; EG-NEXT: LSHR T36.Y, T36.X, literal.y, 3986; EG-NEXT: LSHR T42.W, T40.W, literal.y, 3987; EG-NEXT: AND_INT * T36.X, T36.X, literal.z, 3988; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3989; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3990; EG-NEXT: AND_INT * T42.Z, T40.W, literal.x, 3991; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3992; EG-NEXT: LSHR T43.X, KC0[2].Y, literal.x, 3993; EG-NEXT: LSHR T42.Y, T40.Z, literal.y, 3994; EG-NEXT: LSHR T40.W, T40.Y, literal.y, 3995; EG-NEXT: AND_INT * T42.X, T40.Z, literal.z, 3996; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 3997; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 3998; EG-NEXT: AND_INT T40.Z, T40.Y, literal.x, 3999; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4000; EG-NEXT: 65535(9.183409e-41), 48(6.726233e-44) 4001; EG-NEXT: LSHR T44.X, PV.W, literal.x, 4002; EG-NEXT: LSHR T40.Y, T40.X, literal.y, 4003; EG-NEXT: LSHR T45.W, T39.W, literal.y, 4004; EG-NEXT: AND_INT * T40.X, T40.X, literal.z, 4005; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4006; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4007; EG-NEXT: AND_INT T45.Z, T39.W, literal.x, 4008; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4009; EG-NEXT: 65535(9.183409e-41), 32(4.484155e-44) 4010; EG-NEXT: LSHR T46.X, PV.W, literal.x, 4011; EG-NEXT: LSHR T45.Y, T39.Z, literal.y, 4012; EG-NEXT: LSHR T39.W, T39.Y, literal.y, 4013; EG-NEXT: AND_INT * T45.X, T39.Z, literal.z, 4014; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4015; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4016; EG-NEXT: AND_INT T39.Z, T39.Y, literal.x, 4017; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4018; EG-NEXT: 65535(9.183409e-41), 80(1.121039e-43) 4019; EG-NEXT: LSHR T47.X, PV.W, literal.x, 4020; EG-NEXT: LSHR T39.Y, T39.X, literal.y, 4021; EG-NEXT: AND_INT * T39.X, T39.X, literal.z, 4022; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4023; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4024; EG-NEXT: ADD_INT T0.W, KC0[2].Y, literal.x, 4025; EG-NEXT: LSHR * T35.W, T38.W, literal.y, 4026; EG-NEXT: 64(8.968310e-44), 16(2.242078e-44) 4027; EG-NEXT: LSHR T48.X, PV.W, literal.x, 4028; EG-NEXT: AND_INT * T35.Z, T38.W, literal.y, 4029; EG-NEXT: 2(2.802597e-45), 65535(9.183409e-41) 4030; EG-NEXT: ALU clause starting at 96: 4031; EG-NEXT: LSHR T35.Y, T38.Z, literal.x, 4032; EG-NEXT: LSHR * T38.W, T38.Y, literal.x, 4033; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4034; EG-NEXT: AND_INT T35.X, T38.Z, literal.x, 4035; EG-NEXT: AND_INT T38.Z, T38.Y, literal.x, 4036; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4037; EG-NEXT: 65535(9.183409e-41), 112(1.569454e-43) 4038; EG-NEXT: LSHR T53.X, PV.W, literal.x, 4039; EG-NEXT: LSHR T38.Y, T38.X, literal.y, 4040; EG-NEXT: LSHR T54.W, T52.W, literal.y, 4041; EG-NEXT: AND_INT * T38.X, T38.X, literal.z, 4042; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4043; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4044; EG-NEXT: AND_INT T54.Z, T52.W, literal.x, 4045; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4046; EG-NEXT: 65535(9.183409e-41), 96(1.345247e-43) 4047; EG-NEXT: LSHR T55.X, PV.W, literal.x, 4048; EG-NEXT: LSHR T54.Y, T52.Z, literal.y, 4049; EG-NEXT: LSHR T52.W, T52.Y, literal.y, 4050; EG-NEXT: AND_INT * T54.X, T52.Z, literal.z, 4051; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4052; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4053; EG-NEXT: AND_INT T52.Z, T52.Y, literal.x, 4054; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4055; EG-NEXT: 65535(9.183409e-41), 144(2.017870e-43) 4056; EG-NEXT: LSHR T56.X, PV.W, literal.x, 4057; EG-NEXT: LSHR T52.Y, T52.X, literal.y, 4058; EG-NEXT: LSHR T57.W, T51.W, literal.y, 4059; EG-NEXT: AND_INT * T52.X, T52.X, literal.z, 4060; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4061; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4062; EG-NEXT: AND_INT T57.Z, T51.W, literal.x, 4063; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4064; EG-NEXT: 65535(9.183409e-41), 128(1.793662e-43) 4065; EG-NEXT: LSHR T58.X, PV.W, literal.x, 4066; EG-NEXT: LSHR T57.Y, T51.Z, literal.y, 4067; EG-NEXT: LSHR T51.W, T51.Y, literal.y, 4068; EG-NEXT: AND_INT * T57.X, T51.Z, literal.z, 4069; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4070; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4071; EG-NEXT: AND_INT T51.Z, T51.Y, literal.x, 4072; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4073; EG-NEXT: 65535(9.183409e-41), 176(2.466285e-43) 4074; EG-NEXT: LSHR T59.X, PV.W, literal.x, 4075; EG-NEXT: LSHR T51.Y, T51.X, literal.y, 4076; EG-NEXT: LSHR T60.W, T50.W, literal.y, 4077; EG-NEXT: AND_INT * T51.X, T51.X, literal.z, 4078; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4079; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4080; EG-NEXT: AND_INT T60.Z, T50.W, literal.x, 4081; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4082; EG-NEXT: 65535(9.183409e-41), 160(2.242078e-43) 4083; EG-NEXT: LSHR T61.X, PV.W, literal.x, 4084; EG-NEXT: LSHR T60.Y, T50.Z, literal.y, 4085; EG-NEXT: LSHR T50.W, T50.Y, literal.y, 4086; EG-NEXT: AND_INT * T60.X, T50.Z, literal.z, 4087; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4088; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4089; EG-NEXT: AND_INT T50.Z, T50.Y, literal.x, 4090; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4091; EG-NEXT: 65535(9.183409e-41), 208(2.914701e-43) 4092; EG-NEXT: LSHR T62.X, PV.W, literal.x, 4093; EG-NEXT: LSHR T50.Y, T50.X, literal.y, 4094; EG-NEXT: LSHR T63.W, T49.W, literal.y, 4095; EG-NEXT: AND_INT * T50.X, T50.X, literal.z, 4096; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4097; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4098; EG-NEXT: AND_INT T63.Z, T49.W, literal.x, 4099; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4100; EG-NEXT: 65535(9.183409e-41), 192(2.690493e-43) 4101; EG-NEXT: LSHR T64.X, PV.W, literal.x, 4102; EG-NEXT: LSHR T63.Y, T49.Z, literal.y, 4103; EG-NEXT: LSHR T49.W, T49.Y, literal.y, 4104; EG-NEXT: AND_INT * T63.X, T49.Z, literal.z, 4105; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4106; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4107; EG-NEXT: AND_INT T49.Z, T49.Y, literal.x, 4108; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4109; EG-NEXT: 65535(9.183409e-41), 240(3.363116e-43) 4110; EG-NEXT: LSHR T65.X, PV.W, literal.x, 4111; EG-NEXT: LSHR T49.Y, T49.X, literal.y, 4112; EG-NEXT: AND_INT * T49.X, T49.X, literal.z, 4113; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4114; EG-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4115; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 4116; EG-NEXT: 224(3.138909e-43), 0(0.000000e+00) 4117; EG-NEXT: LSHR * T66.X, PV.W, literal.x, 4118; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 4119; 4120; CM-LABEL: global_zextload_v64i16_to_v64i32: 4121; CM: ; %bb.0: 4122; CM-NEXT: ALU 0, @38, KC0[CB0:0-32], KC1[] 4123; CM-NEXT: TEX 3 @22 4124; CM-NEXT: ALU 50, @39, KC0[CB0:0-32], KC1[] 4125; CM-NEXT: TEX 3 @30 4126; CM-NEXT: ALU 78, @90, KC0[CB0:0-32], KC1[] 4127; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T65, T66.X 4128; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T63, T48.X 4129; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T62, T64.X 4130; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T60, T49.X 4131; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T59, T61.X 4132; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T57, T50.X 4133; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T56, T58.X 4134; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T54, T51.X 4135; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T53, T55.X 4136; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T35, T37.X 4137; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T47, T52.X 4138; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T45, T38.X 4139; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T44, T46.X 4140; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T42, T39.X 4141; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T41, T43.X 4142; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T40, T36.X 4143; CM-NEXT: CF_END 4144; CM-NEXT: Fetch clause starting at 22: 4145; CM-NEXT: VTX_READ_128 T36.XYZW, T35.X, 112, #1 4146; CM-NEXT: VTX_READ_128 T37.XYZW, T35.X, 64, #1 4147; CM-NEXT: VTX_READ_128 T38.XYZW, T35.X, 80, #1 4148; CM-NEXT: VTX_READ_128 T39.XYZW, T35.X, 96, #1 4149; CM-NEXT: Fetch clause starting at 30: 4150; CM-NEXT: VTX_READ_128 T48.XYZW, T35.X, 0, #1 4151; CM-NEXT: VTX_READ_128 T49.XYZW, T35.X, 16, #1 4152; CM-NEXT: VTX_READ_128 T50.XYZW, T35.X, 32, #1 4153; CM-NEXT: VTX_READ_128 T51.XYZW, T35.X, 48, #1 4154; CM-NEXT: ALU clause starting at 38: 4155; CM-NEXT: MOV * T35.X, KC0[2].Z, 4156; CM-NEXT: ALU clause starting at 39: 4157; CM-NEXT: LSHR * T40.W, T36.Y, literal.x, 4158; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4159; CM-NEXT: AND_INT * T40.Z, T36.Y, literal.x, 4160; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4161; CM-NEXT: LSHR T40.Y, T36.X, literal.x, 4162; CM-NEXT: LSHR * T41.W, T36.W, literal.x, 4163; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4164; CM-NEXT: AND_INT T40.X, T36.X, literal.x, 4165; CM-NEXT: AND_INT T41.Z, T36.W, literal.x, 4166; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4167; CM-NEXT: 65535(9.183409e-41), 224(3.138909e-43) 4168; CM-NEXT: LSHR T36.X, PV.W, literal.x, 4169; CM-NEXT: LSHR T41.Y, T36.Z, literal.y, 4170; CM-NEXT: LSHR * T42.W, T39.Y, literal.y, 4171; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4172; CM-NEXT: AND_INT T41.X, T36.Z, literal.x, 4173; CM-NEXT: AND_INT T42.Z, T39.Y, literal.x, 4174; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4175; CM-NEXT: 65535(9.183409e-41), 240(3.363116e-43) 4176; CM-NEXT: LSHR T43.X, PV.W, literal.x, 4177; CM-NEXT: LSHR T42.Y, T39.X, literal.y, 4178; CM-NEXT: LSHR * T44.W, T39.W, literal.y, 4179; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4180; CM-NEXT: AND_INT T42.X, T39.X, literal.x, 4181; CM-NEXT: AND_INT T44.Z, T39.W, literal.x, 4182; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4183; CM-NEXT: 65535(9.183409e-41), 192(2.690493e-43) 4184; CM-NEXT: LSHR T39.X, PV.W, literal.x, 4185; CM-NEXT: LSHR T44.Y, T39.Z, literal.y, 4186; CM-NEXT: LSHR * T45.W, T38.Y, literal.y, 4187; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4188; CM-NEXT: AND_INT T44.X, T39.Z, literal.x, 4189; CM-NEXT: AND_INT T45.Z, T38.Y, literal.x, 4190; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4191; CM-NEXT: 65535(9.183409e-41), 208(2.914701e-43) 4192; CM-NEXT: LSHR T46.X, PV.W, literal.x, 4193; CM-NEXT: LSHR T45.Y, T38.X, literal.y, 4194; CM-NEXT: LSHR * T47.W, T38.W, literal.y, 4195; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4196; CM-NEXT: AND_INT T45.X, T38.X, literal.x, 4197; CM-NEXT: AND_INT T47.Z, T38.W, literal.x, 4198; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4199; CM-NEXT: 65535(9.183409e-41), 160(2.242078e-43) 4200; CM-NEXT: LSHR T38.X, PV.W, literal.x, 4201; CM-NEXT: LSHR T47.Y, T38.Z, literal.y, 4202; CM-NEXT: LSHR * T35.W, T37.Y, literal.y, 4203; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4204; CM-NEXT: AND_INT T47.X, T38.Z, literal.x, 4205; CM-NEXT: AND_INT T35.Z, T37.Y, literal.x, 4206; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4207; CM-NEXT: 65535(9.183409e-41), 176(2.466285e-43) 4208; CM-NEXT: ALU clause starting at 90: 4209; CM-NEXT: LSHR T52.X, T0.W, literal.x, 4210; CM-NEXT: LSHR T35.Y, T37.X, literal.y, 4211; CM-NEXT: LSHR * T53.W, T37.W, literal.y, BS:VEC_120/SCL_212 4212; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4213; CM-NEXT: AND_INT T35.X, T37.X, literal.x, 4214; CM-NEXT: AND_INT T53.Z, T37.W, literal.x, 4215; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4216; CM-NEXT: 65535(9.183409e-41), 128(1.793662e-43) 4217; CM-NEXT: LSHR T37.X, PV.W, literal.x, 4218; CM-NEXT: LSHR T53.Y, T37.Z, literal.y, 4219; CM-NEXT: LSHR * T54.W, T51.Y, literal.y, 4220; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4221; CM-NEXT: AND_INT T53.X, T37.Z, literal.x, 4222; CM-NEXT: AND_INT T54.Z, T51.Y, literal.x, 4223; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4224; CM-NEXT: 65535(9.183409e-41), 144(2.017870e-43) 4225; CM-NEXT: LSHR T55.X, PV.W, literal.x, 4226; CM-NEXT: LSHR T54.Y, T51.X, literal.y, 4227; CM-NEXT: LSHR * T56.W, T51.W, literal.y, 4228; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4229; CM-NEXT: AND_INT T54.X, T51.X, literal.x, 4230; CM-NEXT: AND_INT T56.Z, T51.W, literal.x, 4231; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4232; CM-NEXT: 65535(9.183409e-41), 96(1.345247e-43) 4233; CM-NEXT: LSHR T51.X, PV.W, literal.x, 4234; CM-NEXT: LSHR T56.Y, T51.Z, literal.y, 4235; CM-NEXT: LSHR * T57.W, T50.Y, literal.y, 4236; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4237; CM-NEXT: AND_INT T56.X, T51.Z, literal.x, 4238; CM-NEXT: AND_INT T57.Z, T50.Y, literal.x, 4239; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4240; CM-NEXT: 65535(9.183409e-41), 112(1.569454e-43) 4241; CM-NEXT: LSHR T58.X, PV.W, literal.x, 4242; CM-NEXT: LSHR T57.Y, T50.X, literal.y, 4243; CM-NEXT: LSHR * T59.W, T50.W, literal.y, 4244; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4245; CM-NEXT: AND_INT T57.X, T50.X, literal.x, 4246; CM-NEXT: AND_INT T59.Z, T50.W, literal.x, 4247; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4248; CM-NEXT: 65535(9.183409e-41), 64(8.968310e-44) 4249; CM-NEXT: LSHR T50.X, PV.W, literal.x, 4250; CM-NEXT: LSHR T59.Y, T50.Z, literal.y, 4251; CM-NEXT: LSHR * T60.W, T49.Y, literal.y, 4252; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4253; CM-NEXT: AND_INT T59.X, T50.Z, literal.x, 4254; CM-NEXT: AND_INT T60.Z, T49.Y, literal.x, 4255; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4256; CM-NEXT: 65535(9.183409e-41), 80(1.121039e-43) 4257; CM-NEXT: LSHR T61.X, PV.W, literal.x, 4258; CM-NEXT: LSHR T60.Y, T49.X, literal.y, 4259; CM-NEXT: LSHR * T62.W, T49.W, literal.y, 4260; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4261; CM-NEXT: AND_INT T60.X, T49.X, literal.x, 4262; CM-NEXT: AND_INT T62.Z, T49.W, literal.x, 4263; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4264; CM-NEXT: 65535(9.183409e-41), 32(4.484155e-44) 4265; CM-NEXT: LSHR T49.X, PV.W, literal.x, 4266; CM-NEXT: LSHR T62.Y, T49.Z, literal.y, 4267; CM-NEXT: LSHR * T63.W, T48.Y, literal.y, 4268; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4269; CM-NEXT: AND_INT T62.X, T49.Z, literal.x, 4270; CM-NEXT: AND_INT T63.Z, T48.Y, literal.x, 4271; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4272; CM-NEXT: 65535(9.183409e-41), 48(6.726233e-44) 4273; CM-NEXT: LSHR T64.X, PV.W, literal.x, 4274; CM-NEXT: LSHR T63.Y, T48.X, literal.y, 4275; CM-NEXT: LSHR * T65.W, T48.W, literal.y, 4276; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4277; CM-NEXT: AND_INT T63.X, T48.X, literal.x, 4278; CM-NEXT: AND_INT * T65.Z, T48.W, literal.x, 4279; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 4280; CM-NEXT: LSHR T48.X, KC0[2].Y, literal.x, 4281; CM-NEXT: LSHR * T65.Y, T48.Z, literal.y, 4282; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4283; CM-NEXT: AND_INT T65.X, T48.Z, literal.x, 4284; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4285; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 4286; CM-NEXT: LSHR * T66.X, PV.W, literal.x, 4287; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 4288 %load = load <64 x i16>, <64 x i16> addrspace(1)* %in 4289 %ext = zext <64 x i16> %load to <64 x i32> 4290 store <64 x i32> %ext, <64 x i32> addrspace(1)* %out 4291 ret void 4292} 4293 4294define amdgpu_kernel void @global_sextload_v64i16_to_v64i32(<64 x i32> addrspace(1)* %out, <64 x i16> addrspace(1)* %in) #0 { 4295; GCN-NOHSA-SI-LABEL: global_sextload_v64i16_to_v64i32: 4296; GCN-NOHSA-SI: ; %bb.0: 4297; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, SCRATCH_RSRC_DWORD0 4298; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, SCRATCH_RSRC_DWORD1 4299; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, -1 4300; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, 0xe8f000 4301; GCN-NOHSA-SI-NEXT: s_add_u32 s8, s8, s3 4302; GCN-NOHSA-SI-NEXT: s_addc_u32 s9, s9, 0 4303; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 4304; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 4305; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 4306; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 4307; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 4308; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 4309; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s6 4310; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s7 4311; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, s2 4312; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, s3 4313; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[12:15], off, s[4:7], 0 offset:112 4314; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[16:19], off, s[4:7], 0 offset:96 4315; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[20:23], off, s[4:7], 0 offset:80 4316; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[24:27], off, s[4:7], 0 offset:64 4317; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[8:11], off, s[4:7], 0 4318; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[28:31], off, s[4:7], 0 offset:16 4319; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[32:35], off, s[4:7], 0 offset:32 4320; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[36:39], off, s[4:7], 0 offset:48 4321; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(3) 4322; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v3, 16, v11 4323; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 16, v10 4324; GCN-NOHSA-SI-NEXT: v_bfe_i32 v2, v11, 0, 16 4325; GCN-NOHSA-SI-NEXT: v_bfe_i32 v0, v10, 0, 16 4326; GCN-NOHSA-SI-NEXT: buffer_store_dword v0, off, s[8:11], 0 offset:4 ; 4-byte Folded Spill 4327; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 4328; GCN-NOHSA-SI-NEXT: buffer_store_dword v1, off, s[8:11], 0 offset:8 ; 4-byte Folded Spill 4329; GCN-NOHSA-SI-NEXT: buffer_store_dword v2, off, s[8:11], 0 offset:12 ; 4-byte Folded Spill 4330; GCN-NOHSA-SI-NEXT: buffer_store_dword v3, off, s[8:11], 0 offset:16 ; 4-byte Folded Spill 4331; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v7, 16, v9 4332; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v5, 16, v8 4333; GCN-NOHSA-SI-NEXT: v_bfe_i32 v6, v9, 0, 16 4334; GCN-NOHSA-SI-NEXT: v_bfe_i32 v4, v8, 0, 16 4335; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v11, 16, v31 4336; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v9, 16, v30 4337; GCN-NOHSA-SI-NEXT: v_bfe_i32 v10, v31, 0, 16 4338; GCN-NOHSA-SI-NEXT: v_bfe_i32 v8, v30, 0, 16 4339; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v43, 16, v29 4340; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v41, 16, v28 4341; GCN-NOHSA-SI-NEXT: v_bfe_i32 v42, v29, 0, 16 4342; GCN-NOHSA-SI-NEXT: v_bfe_i32 v40, v28, 0, 16 4343; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v31, 16, v35 4344; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v29, 16, v34 4345; GCN-NOHSA-SI-NEXT: v_bfe_i32 v30, v35, 0, 16 4346; GCN-NOHSA-SI-NEXT: v_bfe_i32 v28, v34, 0, 16 4347; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v47, 16, v33 4348; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v45, 16, v32 4349; GCN-NOHSA-SI-NEXT: v_bfe_i32 v46, v33, 0, 16 4350; GCN-NOHSA-SI-NEXT: v_bfe_i32 v44, v32, 0, 16 4351; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v35, 16, v39 4352; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v33, 16, v38 4353; GCN-NOHSA-SI-NEXT: v_bfe_i32 v34, v39, 0, 16 4354; GCN-NOHSA-SI-NEXT: v_bfe_i32 v32, v38, 0, 16 4355; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v51, 16, v37 4356; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v49, 16, v36 4357; GCN-NOHSA-SI-NEXT: v_bfe_i32 v50, v37, 0, 16 4358; GCN-NOHSA-SI-NEXT: v_bfe_i32 v48, v36, 0, 16 4359; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v39, 16, v27 4360; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v37, 16, v26 4361; GCN-NOHSA-SI-NEXT: v_bfe_i32 v38, v27, 0, 16 4362; GCN-NOHSA-SI-NEXT: v_bfe_i32 v36, v26, 0, 16 4363; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v55, 16, v25 4364; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v53, 16, v24 4365; GCN-NOHSA-SI-NEXT: v_bfe_i32 v54, v25, 0, 16 4366; GCN-NOHSA-SI-NEXT: v_bfe_i32 v52, v24, 0, 16 4367; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v26, 16, v23 4368; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v24, 16, v22 4369; GCN-NOHSA-SI-NEXT: v_bfe_i32 v25, v23, 0, 16 4370; GCN-NOHSA-SI-NEXT: v_bfe_i32 v23, v22, 0, 16 4371; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v59, 16, v21 4372; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v57, 16, v20 4373; GCN-NOHSA-SI-NEXT: v_bfe_i32 v58, v21, 0, 16 4374; GCN-NOHSA-SI-NEXT: v_bfe_i32 v56, v20, 0, 16 4375; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v22, 16, v19 4376; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v20, 16, v18 4377; GCN-NOHSA-SI-NEXT: v_bfe_i32 v21, v19, 0, 16 4378; GCN-NOHSA-SI-NEXT: v_bfe_i32 v19, v18, 0, 16 4379; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v63, 16, v17 4380; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v61, 16, v16 4381; GCN-NOHSA-SI-NEXT: v_bfe_i32 v62, v17, 0, 16 4382; GCN-NOHSA-SI-NEXT: v_bfe_i32 v60, v16, 0, 16 4383; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v18, 16, v15 4384; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v16, 16, v14 4385; GCN-NOHSA-SI-NEXT: v_bfe_i32 v17, v15, 0, 16 4386; GCN-NOHSA-SI-NEXT: v_bfe_i32 v15, v14, 0, 16 4387; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 4388; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v3, 16, v13 4389; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 16, v12 4390; GCN-NOHSA-SI-NEXT: v_bfe_i32 v2, v13, 0, 16 4391; GCN-NOHSA-SI-NEXT: v_bfe_i32 v0, v12, 0, 16 4392; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:224 4393; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:240 4394; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[60:63], off, s[0:3], 0 offset:192 4395; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[19:22], off, s[0:3], 0 offset:208 4396; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[56:59], off, s[0:3], 0 offset:160 4397; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[23:26], off, s[0:3], 0 offset:176 4398; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[52:55], off, s[0:3], 0 offset:128 4399; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[36:39], off, s[0:3], 0 offset:144 4400; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[48:51], off, s[0:3], 0 offset:96 4401; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[32:35], off, s[0:3], 0 offset:112 4402; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[44:47], off, s[0:3], 0 offset:64 4403; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:80 4404; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[40:43], off, s[0:3], 0 offset:32 4405; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:48 4406; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 4407; GCN-NOHSA-SI-NEXT: buffer_load_dword v0, off, s[8:11], 0 offset:4 ; 4-byte Folded Reload 4408; GCN-NOHSA-SI-NEXT: buffer_load_dword v1, off, s[8:11], 0 offset:8 ; 4-byte Folded Reload 4409; GCN-NOHSA-SI-NEXT: buffer_load_dword v2, off, s[8:11], 0 offset:12 ; 4-byte Folded Reload 4410; GCN-NOHSA-SI-NEXT: buffer_load_dword v3, off, s[8:11], 0 offset:16 ; 4-byte Folded Reload 4411; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 4412; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 4413; GCN-NOHSA-SI-NEXT: s_endpgm 4414; 4415; GCN-HSA-LABEL: global_sextload_v64i16_to_v64i32: 4416; GCN-HSA: ; %bb.0: 4417; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 4418; GCN-HSA-NEXT: s_movk_i32 s7, 0x70 4419; GCN-HSA-NEXT: s_movk_i32 s8, 0x60 4420; GCN-HSA-NEXT: s_movk_i32 s6, 0x50 4421; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 4422; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 4423; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 4424; GCN-HSA-NEXT: flat_load_dwordx4 v[12:15], v[0:1] 4425; GCN-HSA-NEXT: s_add_u32 s4, s2, s7 4426; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 4427; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 4428; GCN-HSA-NEXT: v_mov_b32_e32 v1, s5 4429; GCN-HSA-NEXT: flat_load_dwordx4 v[8:11], v[0:1] 4430; GCN-HSA-NEXT: s_add_u32 s4, s2, s8 4431; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 4432; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 4433; GCN-HSA-NEXT: v_mov_b32_e32 v1, s5 4434; GCN-HSA-NEXT: s_add_u32 s4, s2, s6 4435; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[0:1] 4436; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 4437; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 4438; GCN-HSA-NEXT: v_mov_b32_e32 v1, s5 4439; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 4440; GCN-HSA-NEXT: s_add_u32 s4, s2, 64 4441; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 4442; GCN-HSA-NEXT: v_mov_b32_e32 v17, s5 4443; GCN-HSA-NEXT: v_mov_b32_e32 v16, s4 4444; GCN-HSA-NEXT: flat_load_dwordx4 v[16:19], v[16:17] 4445; GCN-HSA-NEXT: s_add_u32 s4, s2, 48 4446; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 4447; GCN-HSA-NEXT: s_add_u32 s10, s2, 32 4448; GCN-HSA-NEXT: s_addc_u32 s11, s3, 0 4449; GCN-HSA-NEXT: s_add_u32 s2, s2, 16 4450; GCN-HSA-NEXT: v_mov_b32_e32 v21, s5 4451; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0 4452; GCN-HSA-NEXT: v_mov_b32_e32 v20, s4 4453; GCN-HSA-NEXT: v_mov_b32_e32 v33, s11 4454; GCN-HSA-NEXT: flat_load_dwordx4 v[20:23], v[20:21] 4455; GCN-HSA-NEXT: v_mov_b32_e32 v32, s10 4456; GCN-HSA-NEXT: v_mov_b32_e32 v37, s1 4457; GCN-HSA-NEXT: v_mov_b32_e32 v36, s0 4458; GCN-HSA-NEXT: s_waitcnt vmcnt(5) 4459; GCN-HSA-NEXT: v_ashrrev_i32_e32 v27, 16, v13 4460; GCN-HSA-NEXT: v_ashrrev_i32_e32 v25, 16, v12 4461; GCN-HSA-NEXT: v_bfe_i32 v26, v13, 0, 16 4462; GCN-HSA-NEXT: v_bfe_i32 v24, v12, 0, 16 4463; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 4464; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 4465; GCN-HSA-NEXT: flat_load_dwordx4 v[28:31], v[12:13] 4466; GCN-HSA-NEXT: flat_load_dwordx4 v[32:35], v[32:33] 4467; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 4468; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4469; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 4470; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 4471; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xe0 4472; GCN-HSA-NEXT: flat_store_dwordx4 v[36:37], v[24:27] 4473; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4474; GCN-HSA-NEXT: v_ashrrev_i32_e32 v27, 16, v15 4475; GCN-HSA-NEXT: v_ashrrev_i32_e32 v25, 16, v14 4476; GCN-HSA-NEXT: v_bfe_i32 v26, v15, 0, 16 4477; GCN-HSA-NEXT: v_bfe_i32 v24, v14, 0, 16 4478; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[24:27] 4479; GCN-HSA-NEXT: s_waitcnt vmcnt(8) 4480; GCN-HSA-NEXT: v_ashrrev_i32_e32 v15, 16, v9 4481; GCN-HSA-NEXT: v_ashrrev_i32_e32 v13, 16, v8 4482; GCN-HSA-NEXT: v_bfe_i32 v14, v9, 0, 16 4483; GCN-HSA-NEXT: v_bfe_i32 v12, v8, 0, 16 4484; GCN-HSA-NEXT: v_mov_b32_e32 v9, s3 4485; GCN-HSA-NEXT: v_mov_b32_e32 v8, s2 4486; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xf0 4487; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4488; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[12:15] 4489; GCN-HSA-NEXT: v_mov_b32_e32 v9, s3 4490; GCN-HSA-NEXT: v_mov_b32_e32 v8, s2 4491; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xc0 4492; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4493; GCN-HSA-NEXT: v_mov_b32_e32 v25, s3 4494; GCN-HSA-NEXT: v_mov_b32_e32 v24, s2 4495; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xd0 4496; GCN-HSA-NEXT: v_ashrrev_i32_e32 v14, 16, v11 4497; GCN-HSA-NEXT: v_ashrrev_i32_e32 v12, 16, v10 4498; GCN-HSA-NEXT: v_bfe_i32 v13, v11, 0, 16 4499; GCN-HSA-NEXT: v_bfe_i32 v11, v10, 0, 16 4500; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4501; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[11:14] 4502; GCN-HSA-NEXT: s_waitcnt vmcnt(9) 4503; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 16, v4 4504; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 4505; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 4506; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xa0 4507; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4508; GCN-HSA-NEXT: v_ashrrev_i32_e32 v11, 16, v5 4509; GCN-HSA-NEXT: v_bfe_i32 v10, v5, 0, 16 4510; GCN-HSA-NEXT: v_bfe_i32 v8, v4, 0, 16 4511; GCN-HSA-NEXT: v_mov_b32_e32 v15, s3 4512; GCN-HSA-NEXT: flat_store_dwordx4 v[24:25], v[8:11] 4513; GCN-HSA-NEXT: v_mov_b32_e32 v14, s2 4514; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xb0 4515; GCN-HSA-NEXT: v_ashrrev_i32_e32 v10, 16, v7 4516; GCN-HSA-NEXT: v_ashrrev_i32_e32 v8, 16, v6 4517; GCN-HSA-NEXT: v_bfe_i32 v9, v7, 0, 16 4518; GCN-HSA-NEXT: v_bfe_i32 v7, v6, 0, 16 4519; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4520; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[7:10] 4521; GCN-HSA-NEXT: s_waitcnt vmcnt(10) 4522; GCN-HSA-NEXT: v_ashrrev_i32_e32 v5, 16, v0 4523; GCN-HSA-NEXT: v_ashrrev_i32_e32 v7, 16, v1 4524; GCN-HSA-NEXT: v_bfe_i32 v6, v1, 0, 16 4525; GCN-HSA-NEXT: v_bfe_i32 v4, v0, 0, 16 4526; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 4527; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 4528; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x80 4529; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4530; GCN-HSA-NEXT: flat_store_dwordx4 v[14:15], v[4:7] 4531; GCN-HSA-NEXT: v_ashrrev_i32_e32 v11, 16, v3 4532; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 4533; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 16, v2 4534; GCN-HSA-NEXT: v_bfe_i32 v10, v3, 0, 16 4535; GCN-HSA-NEXT: v_bfe_i32 v8, v2, 0, 16 4536; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 4537; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x90 4538; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[8:11] 4539; GCN-HSA-NEXT: s_waitcnt vmcnt(11) 4540; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 16, v17 4541; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 16, v16 4542; GCN-HSA-NEXT: v_bfe_i32 v2, v17, 0, 16 4543; GCN-HSA-NEXT: v_bfe_i32 v0, v16, 0, 16 4544; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4545; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 4546; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 4547; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 4548; GCN-HSA-NEXT: s_add_u32 s2, s0, s8 4549; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 16, v19 4550; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 16, v18 4551; GCN-HSA-NEXT: v_bfe_i32 v2, v19, 0, 16 4552; GCN-HSA-NEXT: v_bfe_i32 v0, v18, 0, 16 4553; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4554; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 4555; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 4556; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 4557; GCN-HSA-NEXT: s_add_u32 s2, s0, s7 4558; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4559; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 4560; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 4561; GCN-HSA-NEXT: s_add_u32 s2, s0, 64 4562; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4563; GCN-HSA-NEXT: v_mov_b32_e32 v17, s3 4564; GCN-HSA-NEXT: s_waitcnt vmcnt(12) 4565; GCN-HSA-NEXT: v_ashrrev_i32_e32 v11, 16, v23 4566; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 16, v22 4567; GCN-HSA-NEXT: v_bfe_i32 v10, v23, 0, 16 4568; GCN-HSA-NEXT: v_bfe_i32 v8, v22, 0, 16 4569; GCN-HSA-NEXT: v_mov_b32_e32 v16, s2 4570; GCN-HSA-NEXT: s_add_u32 s2, s0, s6 4571; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[8:11] 4572; GCN-HSA-NEXT: s_waitcnt vmcnt(11) 4573; GCN-HSA-NEXT: v_ashrrev_i32_e32 v15, 16, v33 4574; GCN-HSA-NEXT: v_ashrrev_i32_e32 v13, 16, v32 4575; GCN-HSA-NEXT: v_bfe_i32 v14, v33, 0, 16 4576; GCN-HSA-NEXT: v_bfe_i32 v12, v32, 0, 16 4577; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4578; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[12:15] 4579; GCN-HSA-NEXT: v_ashrrev_i32_e32 v11, 16, v35 4580; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 4581; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 4582; GCN-HSA-NEXT: s_add_u32 s2, s0, 32 4583; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 16, v34 4584; GCN-HSA-NEXT: v_bfe_i32 v10, v35, 0, 16 4585; GCN-HSA-NEXT: v_bfe_i32 v8, v34, 0, 16 4586; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 4587; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 16, v21 4588; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 16, v20 4589; GCN-HSA-NEXT: v_bfe_i32 v2, v21, 0, 16 4590; GCN-HSA-NEXT: v_bfe_i32 v0, v20, 0, 16 4591; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[8:11] 4592; GCN-HSA-NEXT: s_add_u32 s0, s0, 48 4593; GCN-HSA-NEXT: v_mov_b32_e32 v9, s3 4594; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 4595; GCN-HSA-NEXT: v_ashrrev_i32_e32 v7, 16, v29 4596; GCN-HSA-NEXT: v_ashrrev_i32_e32 v5, 16, v28 4597; GCN-HSA-NEXT: v_bfe_i32 v6, v29, 0, 16 4598; GCN-HSA-NEXT: v_bfe_i32 v4, v28, 0, 16 4599; GCN-HSA-NEXT: v_mov_b32_e32 v8, s2 4600; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 4601; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[4:7] 4602; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 16, v31 4603; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 4604; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 16, v30 4605; GCN-HSA-NEXT: v_bfe_i32 v2, v31, 0, 16 4606; GCN-HSA-NEXT: v_bfe_i32 v0, v30, 0, 16 4607; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 4608; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 4609; GCN-HSA-NEXT: s_endpgm 4610; 4611; GCN-NOHSA-VI-LABEL: global_sextload_v64i16_to_v64i32: 4612; GCN-NOHSA-VI: ; %bb.0: 4613; GCN-NOHSA-VI-NEXT: s_mov_b32 s88, SCRATCH_RSRC_DWORD0 4614; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 4615; GCN-NOHSA-VI-NEXT: s_mov_b32 s89, SCRATCH_RSRC_DWORD1 4616; GCN-NOHSA-VI-NEXT: s_mov_b32 s90, -1 4617; GCN-NOHSA-VI-NEXT: s_mov_b32 s91, 0xe80000 4618; GCN-NOHSA-VI-NEXT: s_add_u32 s88, s88, s3 4619; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 4620; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 4621; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 4622; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 4623; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 4624; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s6 4625; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s7 4626; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, s2 4627; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, s3 4628; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[8:11], off, s[4:7], 0 offset:112 4629; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[12:15], off, s[4:7], 0 offset:96 4630; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[16:19], off, s[4:7], 0 offset:80 4631; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[20:23], off, s[4:7], 0 offset:64 4632; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[24:27], off, s[4:7], 0 4633; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[28:31], off, s[4:7], 0 offset:16 4634; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[32:35], off, s[4:7], 0 offset:32 4635; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[36:39], off, s[4:7], 0 offset:48 4636; GCN-NOHSA-VI-NEXT: s_addc_u32 s89, s89, 0 4637; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(6) 4638; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v63, 16, v13 4639; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(5) 4640; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v59, 16, v17 4641; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(4) 4642; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v55, 16, v21 4643; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(3) 4644; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v3, 16, v27 4645; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 16, v26 4646; GCN-NOHSA-VI-NEXT: v_bfe_i32 v2, v27, 0, 16 4647; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v26, 0, 16 4648; GCN-NOHSA-VI-NEXT: buffer_store_dword v0, off, s[88:91], 0 offset:4 ; 4-byte Folded Spill 4649; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 4650; GCN-NOHSA-VI-NEXT: buffer_store_dword v1, off, s[88:91], 0 offset:8 ; 4-byte Folded Spill 4651; GCN-NOHSA-VI-NEXT: buffer_store_dword v2, off, s[88:91], 0 offset:12 ; 4-byte Folded Spill 4652; GCN-NOHSA-VI-NEXT: buffer_store_dword v3, off, s[88:91], 0 offset:16 ; 4-byte Folded Spill 4653; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v3, 16, v9 4654; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 16, v8 4655; GCN-NOHSA-VI-NEXT: v_bfe_i32 v2, v9, 0, 16 4656; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v8, 0, 16 4657; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v7, 16, v25 4658; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v5, 16, v24 4659; GCN-NOHSA-VI-NEXT: v_bfe_i32 v6, v25, 0, 16 4660; GCN-NOHSA-VI-NEXT: v_bfe_i32 v4, v24, 0, 16 4661; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v27, 16, v31 4662; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v25, 16, v30 4663; GCN-NOHSA-VI-NEXT: v_bfe_i32 v26, v31, 0, 16 4664; GCN-NOHSA-VI-NEXT: v_bfe_i32 v24, v30, 0, 16 4665; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v43, 16, v29 4666; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v41, 16, v28 4667; GCN-NOHSA-VI-NEXT: v_bfe_i32 v42, v29, 0, 16 4668; GCN-NOHSA-VI-NEXT: v_bfe_i32 v40, v28, 0, 16 4669; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v31, 16, v35 4670; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v29, 16, v34 4671; GCN-NOHSA-VI-NEXT: v_bfe_i32 v30, v35, 0, 16 4672; GCN-NOHSA-VI-NEXT: v_bfe_i32 v28, v34, 0, 16 4673; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v47, 16, v33 4674; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v45, 16, v32 4675; GCN-NOHSA-VI-NEXT: v_bfe_i32 v46, v33, 0, 16 4676; GCN-NOHSA-VI-NEXT: v_bfe_i32 v44, v32, 0, 16 4677; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v35, 16, v39 4678; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v33, 16, v38 4679; GCN-NOHSA-VI-NEXT: v_bfe_i32 v34, v39, 0, 16 4680; GCN-NOHSA-VI-NEXT: v_bfe_i32 v32, v38, 0, 16 4681; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v51, 16, v37 4682; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v49, 16, v36 4683; GCN-NOHSA-VI-NEXT: v_bfe_i32 v50, v37, 0, 16 4684; GCN-NOHSA-VI-NEXT: v_bfe_i32 v48, v36, 0, 16 4685; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v39, 16, v23 4686; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v37, 16, v22 4687; GCN-NOHSA-VI-NEXT: v_bfe_i32 v38, v23, 0, 16 4688; GCN-NOHSA-VI-NEXT: v_bfe_i32 v36, v22, 0, 16 4689; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v53, 16, v20 4690; GCN-NOHSA-VI-NEXT: v_bfe_i32 v54, v21, 0, 16 4691; GCN-NOHSA-VI-NEXT: v_bfe_i32 v52, v20, 0, 16 4692; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v22, 16, v19 4693; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v20, 16, v18 4694; GCN-NOHSA-VI-NEXT: v_bfe_i32 v21, v19, 0, 16 4695; GCN-NOHSA-VI-NEXT: v_bfe_i32 v19, v18, 0, 16 4696; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v57, 16, v16 4697; GCN-NOHSA-VI-NEXT: v_bfe_i32 v58, v17, 0, 16 4698; GCN-NOHSA-VI-NEXT: v_bfe_i32 v56, v16, 0, 16 4699; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v18, 16, v15 4700; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v16, 16, v14 4701; GCN-NOHSA-VI-NEXT: v_bfe_i32 v17, v15, 0, 16 4702; GCN-NOHSA-VI-NEXT: v_bfe_i32 v15, v14, 0, 16 4703; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v61, 16, v12 4704; GCN-NOHSA-VI-NEXT: v_bfe_i32 v62, v13, 0, 16 4705; GCN-NOHSA-VI-NEXT: v_bfe_i32 v60, v12, 0, 16 4706; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v14, 16, v11 4707; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v12, 16, v10 4708; GCN-NOHSA-VI-NEXT: v_bfe_i32 v13, v11, 0, 16 4709; GCN-NOHSA-VI-NEXT: v_bfe_i32 v11, v10, 0, 16 4710; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:224 4711; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:240 4712; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[60:63], off, s[0:3], 0 offset:192 4713; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:208 4714; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[56:59], off, s[0:3], 0 offset:160 4715; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[19:22], off, s[0:3], 0 offset:176 4716; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[52:55], off, s[0:3], 0 offset:128 4717; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[36:39], off, s[0:3], 0 offset:144 4718; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[48:51], off, s[0:3], 0 offset:96 4719; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[32:35], off, s[0:3], 0 offset:112 4720; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[44:47], off, s[0:3], 0 offset:64 4721; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:80 4722; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[40:43], off, s[0:3], 0 offset:32 4723; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:48 4724; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 4725; GCN-NOHSA-VI-NEXT: buffer_load_dword v0, off, s[88:91], 0 offset:4 ; 4-byte Folded Reload 4726; GCN-NOHSA-VI-NEXT: buffer_load_dword v1, off, s[88:91], 0 offset:8 ; 4-byte Folded Reload 4727; GCN-NOHSA-VI-NEXT: buffer_load_dword v2, off, s[88:91], 0 offset:12 ; 4-byte Folded Reload 4728; GCN-NOHSA-VI-NEXT: buffer_load_dword v3, off, s[88:91], 0 offset:16 ; 4-byte Folded Reload 4729; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 4730; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 4731; GCN-NOHSA-VI-NEXT: s_endpgm 4732; 4733; EG-LABEL: global_sextload_v64i16_to_v64i32: 4734; EG: ; %bb.0: 4735; EG-NEXT: ALU 18, @38, KC0[CB0:0-32], KC1[] 4736; EG-NEXT: TEX 7 @22 4737; EG-NEXT: ALU 75, @57, KC0[CB0:0-32], KC1[] 4738; EG-NEXT: ALU 71, @133, KC0[CB0:0-32], KC1[] 4739; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T48.XYZW, T41.X, 0 4740; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T65.XYZW, T66.X, 0 4741; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T47.XYZW, T56.X, 0 4742; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T64.XYZW, T55.X, 0 4743; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T46.XYZW, T54.X, 0 4744; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T63.XYZW, T53.X, 0 4745; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T45.XYZW, T52.X, 0 4746; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T62.XYZW, T51.X, 0 4747; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T43.XYZW, T50.X, 0 4748; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T61.XYZW, T49.X, 0 4749; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T42.XYZW, T40.X, 0 4750; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T60.XYZW, T39.X, 0 4751; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T44.XYZW, T38.X, 0 4752; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T59.XYZW, T37.X, 0 4753; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T58.XYZW, T36.X, 0 4754; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T57.XYZW, T35.X, 1 4755; EG-NEXT: CF_END 4756; EG-NEXT: PAD 4757; EG-NEXT: Fetch clause starting at 22: 4758; EG-NEXT: VTX_READ_128 T42.XYZW, T41.X, 16, #1 4759; EG-NEXT: VTX_READ_128 T43.XYZW, T41.X, 32, #1 4760; EG-NEXT: VTX_READ_128 T44.XYZW, T41.X, 0, #1 4761; EG-NEXT: VTX_READ_128 T45.XYZW, T41.X, 48, #1 4762; EG-NEXT: VTX_READ_128 T46.XYZW, T41.X, 64, #1 4763; EG-NEXT: VTX_READ_128 T47.XYZW, T41.X, 80, #1 4764; EG-NEXT: VTX_READ_128 T48.XYZW, T41.X, 96, #1 4765; EG-NEXT: VTX_READ_128 T41.XYZW, T41.X, 112, #1 4766; EG-NEXT: ALU clause starting at 38: 4767; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 4768; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4769; EG-NEXT: LSHR T35.X, PV.W, literal.x, 4770; EG-NEXT: LSHR * T36.X, KC0[2].Y, literal.x, 4771; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 4772; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 4773; EG-NEXT: 48(6.726233e-44), 0(0.000000e+00) 4774; EG-NEXT: LSHR T37.X, PV.W, literal.x, 4775; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4776; EG-NEXT: 2(2.802597e-45), 32(4.484155e-44) 4777; EG-NEXT: LSHR T38.X, PV.W, literal.x, 4778; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4779; EG-NEXT: 2(2.802597e-45), 80(1.121039e-43) 4780; EG-NEXT: LSHR T39.X, PV.W, literal.x, 4781; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4782; EG-NEXT: 2(2.802597e-45), 64(8.968310e-44) 4783; EG-NEXT: LSHR T40.X, PV.W, literal.x, 4784; EG-NEXT: MOV * T41.X, KC0[2].Z, 4785; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 4786; EG-NEXT: ALU clause starting at 57: 4787; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 4788; EG-NEXT: 112(1.569454e-43), 0(0.000000e+00) 4789; EG-NEXT: LSHR T49.X, PV.W, literal.x, 4790; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4791; EG-NEXT: 2(2.802597e-45), 96(1.345247e-43) 4792; EG-NEXT: LSHR T50.X, PV.W, literal.x, 4793; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4794; EG-NEXT: 2(2.802597e-45), 144(2.017870e-43) 4795; EG-NEXT: LSHR T51.X, PV.W, literal.x, 4796; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4797; EG-NEXT: 2(2.802597e-45), 128(1.793662e-43) 4798; EG-NEXT: LSHR T52.X, PV.W, literal.x, 4799; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4800; EG-NEXT: 2(2.802597e-45), 176(2.466285e-43) 4801; EG-NEXT: LSHR T53.X, PV.W, literal.x, 4802; EG-NEXT: LSHR T0.Y, T41.Y, literal.y, 4803; EG-NEXT: LSHR T0.Z, T41.W, literal.y, 4804; EG-NEXT: LSHR T0.W, T48.Y, literal.y, BS:VEC_120/SCL_212 4805; EG-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 4806; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4807; EG-NEXT: 160(2.242078e-43), 0(0.000000e+00) 4808; EG-NEXT: LSHR T54.X, PS, literal.x, 4809; EG-NEXT: LSHR T1.Y, T48.W, literal.y, 4810; EG-NEXT: LSHR T1.Z, T47.Y, literal.y, 4811; EG-NEXT: LSHR T1.W, T47.W, literal.y, BS:VEC_120/SCL_212 4812; EG-NEXT: ADD_INT * T2.W, KC0[2].Y, literal.z, 4813; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4814; EG-NEXT: 208(2.914701e-43), 0(0.000000e+00) 4815; EG-NEXT: LSHR T55.X, PS, literal.x, 4816; EG-NEXT: LSHR T2.Y, T46.Y, literal.y, 4817; EG-NEXT: LSHR T2.Z, T46.W, literal.y, 4818; EG-NEXT: LSHR T2.W, T45.Y, literal.y, BS:VEC_120/SCL_212 4819; EG-NEXT: ADD_INT * T3.W, KC0[2].Y, literal.z, 4820; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4821; EG-NEXT: 192(2.690493e-43), 0(0.000000e+00) 4822; EG-NEXT: LSHR T56.X, PS, literal.x, 4823; EG-NEXT: LSHR T3.Y, T45.W, literal.y, 4824; EG-NEXT: BFE_INT T57.Z, T44.W, 0.0, literal.y, BS:VEC_120/SCL_212 4825; EG-NEXT: LSHR T3.W, T43.Y, literal.y, 4826; EG-NEXT: LSHR * T4.W, T43.W, literal.y, 4827; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4828; EG-NEXT: BFE_INT T57.X, T44.Z, 0.0, literal.x, 4829; EG-NEXT: LSHR T4.Y, T42.Y, literal.x, 4830; EG-NEXT: BFE_INT T58.Z, T44.Y, 0.0, literal.x, BS:VEC_120/SCL_212 4831; EG-NEXT: LSHR T5.W, T42.W, literal.x, 4832; EG-NEXT: LSHR * T6.W, T44.W, literal.x, 4833; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4834; EG-NEXT: BFE_INT T58.X, T44.X, 0.0, literal.x, 4835; EG-NEXT: LSHR T5.Y, T44.Y, literal.x, 4836; EG-NEXT: BFE_INT T59.Z, T42.W, 0.0, literal.x, 4837; EG-NEXT: BFE_INT T57.W, PS, 0.0, literal.x, 4838; EG-NEXT: LSHR * T6.W, T44.Z, literal.x, 4839; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4840; EG-NEXT: BFE_INT T59.X, T42.Z, 0.0, literal.x, 4841; EG-NEXT: BFE_INT T57.Y, PS, 0.0, literal.x, 4842; EG-NEXT: BFE_INT T44.Z, T42.Y, 0.0, literal.x, 4843; EG-NEXT: BFE_INT T58.W, PV.Y, 0.0, literal.x, 4844; EG-NEXT: LSHR * T6.W, T44.X, literal.x, 4845; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4846; EG-NEXT: BFE_INT T44.X, T42.X, 0.0, literal.x, 4847; EG-NEXT: BFE_INT T58.Y, PS, 0.0, literal.x, 4848; EG-NEXT: BFE_INT T60.Z, T43.W, 0.0, literal.x, 4849; EG-NEXT: BFE_INT T59.W, T5.W, 0.0, literal.x, BS:VEC_120/SCL_212 4850; EG-NEXT: LSHR * T5.W, T42.Z, literal.x, 4851; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4852; EG-NEXT: BFE_INT T60.X, T43.Z, 0.0, literal.x, 4853; EG-NEXT: BFE_INT T59.Y, PS, 0.0, literal.x, 4854; EG-NEXT: BFE_INT T42.Z, T43.Y, 0.0, literal.x, 4855; EG-NEXT: BFE_INT T44.W, T4.Y, 0.0, literal.x, BS:VEC_120/SCL_212 4856; EG-NEXT: LSHR * T5.W, T42.X, literal.x, 4857; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4858; EG-NEXT: BFE_INT T42.X, T43.X, 0.0, literal.x, 4859; EG-NEXT: BFE_INT T44.Y, PS, 0.0, literal.x, 4860; EG-NEXT: BFE_INT T61.Z, T45.W, 0.0, literal.x, 4861; EG-NEXT: BFE_INT * T60.W, T4.W, 0.0, literal.x, BS:VEC_120/SCL_212 4862; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4863; EG-NEXT: ALU clause starting at 133: 4864; EG-NEXT: LSHR * T4.W, T43.Z, literal.x, 4865; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4866; EG-NEXT: BFE_INT T61.X, T45.Z, 0.0, literal.x, 4867; EG-NEXT: BFE_INT T60.Y, PV.W, 0.0, literal.x, 4868; EG-NEXT: BFE_INT T43.Z, T45.Y, 0.0, literal.x, 4869; EG-NEXT: BFE_INT T42.W, T3.W, 0.0, literal.x, 4870; EG-NEXT: LSHR * T3.W, T43.X, literal.x, 4871; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4872; EG-NEXT: BFE_INT T43.X, T45.X, 0.0, literal.x, 4873; EG-NEXT: BFE_INT T42.Y, PS, 0.0, literal.x, 4874; EG-NEXT: BFE_INT T62.Z, T46.W, 0.0, literal.x, 4875; EG-NEXT: BFE_INT T61.W, T3.Y, 0.0, literal.x, 4876; EG-NEXT: LSHR * T3.W, T45.Z, literal.x, 4877; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4878; EG-NEXT: BFE_INT T62.X, T46.Z, 0.0, literal.x, 4879; EG-NEXT: BFE_INT T61.Y, PS, 0.0, literal.x, 4880; EG-NEXT: BFE_INT T45.Z, T46.Y, 0.0, literal.x, 4881; EG-NEXT: BFE_INT T43.W, T2.W, 0.0, literal.x, 4882; EG-NEXT: LSHR * T2.W, T45.X, literal.x, 4883; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4884; EG-NEXT: BFE_INT T45.X, T46.X, 0.0, literal.x, 4885; EG-NEXT: BFE_INT T43.Y, PS, 0.0, literal.x, 4886; EG-NEXT: BFE_INT T63.Z, T47.W, 0.0, literal.x, 4887; EG-NEXT: BFE_INT T62.W, T2.Z, 0.0, literal.x, 4888; EG-NEXT: LSHR * T2.W, T46.Z, literal.x, 4889; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4890; EG-NEXT: BFE_INT T63.X, T47.Z, 0.0, literal.x, 4891; EG-NEXT: BFE_INT T62.Y, PS, 0.0, literal.x, 4892; EG-NEXT: BFE_INT T46.Z, T47.Y, 0.0, literal.x, 4893; EG-NEXT: BFE_INT T45.W, T2.Y, 0.0, literal.x, BS:VEC_120/SCL_212 4894; EG-NEXT: LSHR * T2.W, T46.X, literal.x, 4895; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4896; EG-NEXT: BFE_INT T46.X, T47.X, 0.0, literal.x, 4897; EG-NEXT: BFE_INT T45.Y, PS, 0.0, literal.x, 4898; EG-NEXT: BFE_INT T64.Z, T48.W, 0.0, literal.x, 4899; EG-NEXT: BFE_INT T63.W, T1.W, 0.0, literal.x, BS:VEC_120/SCL_212 4900; EG-NEXT: LSHR * T1.W, T47.Z, literal.x, 4901; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4902; EG-NEXT: BFE_INT T64.X, T48.Z, 0.0, literal.x, 4903; EG-NEXT: BFE_INT T63.Y, PS, 0.0, literal.x, 4904; EG-NEXT: BFE_INT T47.Z, T48.Y, 0.0, literal.x, 4905; EG-NEXT: BFE_INT T46.W, T1.Z, 0.0, literal.x, BS:VEC_120/SCL_212 4906; EG-NEXT: LSHR * T1.W, T47.X, literal.x, 4907; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4908; EG-NEXT: BFE_INT T47.X, T48.X, 0.0, literal.x, 4909; EG-NEXT: BFE_INT T46.Y, PS, 0.0, literal.x, 4910; EG-NEXT: BFE_INT T65.Z, T41.W, 0.0, literal.x, 4911; EG-NEXT: BFE_INT T64.W, T1.Y, 0.0, literal.x, 4912; EG-NEXT: LSHR * T1.W, T48.Z, literal.x, 4913; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4914; EG-NEXT: BFE_INT T65.X, T41.Z, 0.0, literal.x, 4915; EG-NEXT: BFE_INT T64.Y, PS, 0.0, literal.x, 4916; EG-NEXT: BFE_INT T48.Z, T41.Y, 0.0, literal.x, 4917; EG-NEXT: BFE_INT T47.W, T0.W, 0.0, literal.x, 4918; EG-NEXT: LSHR * T0.W, T48.X, literal.x, 4919; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 4920; EG-NEXT: BFE_INT T48.X, T41.X, 0.0, literal.x, 4921; EG-NEXT: BFE_INT T47.Y, PS, 0.0, literal.x, 4922; EG-NEXT: LSHR T1.Z, T41.Z, literal.x, 4923; EG-NEXT: BFE_INT T65.W, T0.Z, 0.0, literal.x, BS:VEC_120/SCL_212 4924; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4925; EG-NEXT: 16(2.242078e-44), 240(3.363116e-43) 4926; EG-NEXT: LSHR T66.X, PS, literal.x, 4927; EG-NEXT: BFE_INT T65.Y, PV.Z, 0.0, literal.y, 4928; EG-NEXT: LSHR T0.Z, T41.X, literal.y, 4929; EG-NEXT: BFE_INT T48.W, T0.Y, 0.0, literal.y, 4930; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 4931; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4932; EG-NEXT: 224(3.138909e-43), 0(0.000000e+00) 4933; EG-NEXT: LSHR T41.X, PS, literal.x, 4934; EG-NEXT: BFE_INT * T48.Y, PV.Z, 0.0, literal.y, 4935; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4936; 4937; CM-LABEL: global_sextload_v64i16_to_v64i32: 4938; CM: ; %bb.0: 4939; CM-NEXT: ALU 0, @40, KC0[CB0:0-32], KC1[] 4940; CM-NEXT: TEX 1 @24 4941; CM-NEXT: ALU 15, @41, KC0[CB0:0-32], KC1[] 4942; CM-NEXT: TEX 5 @28 4943; CM-NEXT: ALU 82, @57, KC0[CB0:0-32], KC1[] 4944; CM-NEXT: ALU 72, @140, KC0[CB0:0-32], KC1[] 4945; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T65, T66.X 4946; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T35, T36.X 4947; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T64, T56.X 4948; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T37, T55.X 4949; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T63, T54.X 4950; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T45, T53.X 4951; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T62, T52.X 4952; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T44, T51.X 4953; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T61, T50.X 4954; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T43, T49.X 4955; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T60, T48.X 4956; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T42, T47.X 4957; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T59, T46.X 4958; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T41, T40.X 4959; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T58, T39.X 4960; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T57, T38.X 4961; CM-NEXT: CF_END 4962; CM-NEXT: PAD 4963; CM-NEXT: Fetch clause starting at 24: 4964; CM-NEXT: VTX_READ_128 T35.XYZW, T37.X, 16, #1 4965; CM-NEXT: VTX_READ_128 T36.XYZW, T37.X, 0, #1 4966; CM-NEXT: Fetch clause starting at 28: 4967; CM-NEXT: VTX_READ_128 T41.XYZW, T37.X, 112, #1 4968; CM-NEXT: VTX_READ_128 T42.XYZW, T37.X, 96, #1 4969; CM-NEXT: VTX_READ_128 T43.XYZW, T37.X, 80, #1 4970; CM-NEXT: VTX_READ_128 T44.XYZW, T37.X, 64, #1 4971; CM-NEXT: VTX_READ_128 T45.XYZW, T37.X, 48, #1 4972; CM-NEXT: VTX_READ_128 T37.XYZW, T37.X, 32, #1 4973; CM-NEXT: ALU clause starting at 40: 4974; CM-NEXT: MOV * T37.X, KC0[2].Z, 4975; CM-NEXT: ALU clause starting at 41: 4976; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 4977; CM-NEXT: 224(3.138909e-43), 0(0.000000e+00) 4978; CM-NEXT: LSHR T38.X, PV.W, literal.x, 4979; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 4980; CM-NEXT: 2(2.802597e-45), 240(3.363116e-43) 4981; CM-NEXT: LSHR T39.X, PV.W, literal.x, 4982; CM-NEXT: LSHR T0.Y, T36.Z, literal.y, 4983; CM-NEXT: LSHR T0.Z, T36.W, literal.y, 4984; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 4985; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4986; CM-NEXT: 192(2.690493e-43), 0(0.000000e+00) 4987; CM-NEXT: LSHR T40.X, PV.W, literal.x, 4988; CM-NEXT: LSHR T1.Y, T36.Y, literal.y, 4989; CM-NEXT: LSHR T1.Z, T35.Z, literal.y, 4990; CM-NEXT: LSHR * T0.W, T35.W, literal.y, 4991; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 4992; CM-NEXT: ALU clause starting at 57: 4993; CM-NEXT: LSHR T2.Z, T35.X, literal.x, 4994; CM-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.y, 4995; CM-NEXT: 16(2.242078e-44), 208(2.914701e-43) 4996; CM-NEXT: LSHR T46.X, PV.W, literal.x, 4997; CM-NEXT: LSHR T2.Y, T35.Y, literal.y, 4998; CM-NEXT: LSHR T3.Z, T37.Z, literal.y, 4999; CM-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 5000; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5001; CM-NEXT: 160(2.242078e-43), 0(0.000000e+00) 5002; CM-NEXT: LSHR T47.X, PV.W, literal.x, 5003; CM-NEXT: LSHR T3.Y, T37.W, literal.y, 5004; CM-NEXT: LSHR T4.Z, T37.X, literal.y, 5005; CM-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 5006; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5007; CM-NEXT: 176(2.466285e-43), 0(0.000000e+00) 5008; CM-NEXT: LSHR T48.X, PV.W, literal.x, 5009; CM-NEXT: LSHR T4.Y, T37.Y, literal.y, 5010; CM-NEXT: LSHR T5.Z, T45.Z, literal.y, 5011; CM-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 5012; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5013; CM-NEXT: 128(1.793662e-43), 0(0.000000e+00) 5014; CM-NEXT: LSHR T49.X, PV.W, literal.x, 5015; CM-NEXT: LSHR T5.Y, T45.W, literal.y, 5016; CM-NEXT: LSHR T6.Z, T45.X, literal.y, 5017; CM-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 5018; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5019; CM-NEXT: 144(2.017870e-43), 0(0.000000e+00) 5020; CM-NEXT: LSHR T50.X, PV.W, literal.x, 5021; CM-NEXT: LSHR T6.Y, T45.Y, literal.y, 5022; CM-NEXT: LSHR T7.Z, T44.Z, literal.y, 5023; CM-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 5024; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5025; CM-NEXT: 96(1.345247e-43), 0(0.000000e+00) 5026; CM-NEXT: LSHR T51.X, PV.W, literal.x, 5027; CM-NEXT: LSHR T7.Y, T44.W, literal.y, 5028; CM-NEXT: LSHR T8.Z, T44.X, literal.y, 5029; CM-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 5030; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5031; CM-NEXT: 112(1.569454e-43), 0(0.000000e+00) 5032; CM-NEXT: LSHR T52.X, PV.W, literal.x, 5033; CM-NEXT: LSHR T8.Y, T44.Y, literal.y, 5034; CM-NEXT: LSHR T9.Z, T43.Z, literal.y, 5035; CM-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 5036; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5037; CM-NEXT: 64(8.968310e-44), 0(0.000000e+00) 5038; CM-NEXT: LSHR T53.X, PV.W, literal.x, 5039; CM-NEXT: LSHR T9.Y, T43.W, literal.y, 5040; CM-NEXT: LSHR T10.Z, T43.X, literal.y, 5041; CM-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 5042; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5043; CM-NEXT: 80(1.121039e-43), 0(0.000000e+00) 5044; CM-NEXT: LSHR T54.X, PV.W, literal.x, 5045; CM-NEXT: LSHR T10.Y, T43.Y, literal.y, 5046; CM-NEXT: LSHR T11.Z, T42.Z, literal.y, 5047; CM-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 5048; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5049; CM-NEXT: 32(4.484155e-44), 0(0.000000e+00) 5050; CM-NEXT: LSHR T55.X, PV.W, literal.x, 5051; CM-NEXT: LSHR T11.Y, T42.W, literal.y, 5052; CM-NEXT: LSHR T12.Z, T42.X, literal.y, 5053; CM-NEXT: ADD_INT * T1.W, KC0[2].Y, literal.z, 5054; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5055; CM-NEXT: 48(6.726233e-44), 0(0.000000e+00) 5056; CM-NEXT: LSHR T56.X, PV.W, literal.x, 5057; CM-NEXT: LSHR T12.Y, T42.Y, literal.y, 5058; CM-NEXT: BFE_INT T57.Z, T41.Y, 0.0, literal.y, BS:VEC_120/SCL_212 5059; CM-NEXT: LSHR * T1.W, T41.Z, literal.y, 5060; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5061; CM-NEXT: BFE_INT T57.X, T41.X, 0.0, literal.x, 5062; CM-NEXT: LSHR T13.Y, T41.W, literal.x, 5063; CM-NEXT: BFE_INT T58.Z, T41.W, 0.0, literal.x, 5064; CM-NEXT: LSHR * T2.W, T41.Y, literal.x, 5065; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5066; CM-NEXT: BFE_INT T58.X, T41.Z, 0.0, literal.x, 5067; CM-NEXT: LSHR T14.Y, T41.X, literal.x, 5068; CM-NEXT: BFE_INT T41.Z, T42.Y, 0.0, literal.x, 5069; CM-NEXT: BFE_INT * T57.W, PV.W, 0.0, literal.x, 5070; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5071; CM-NEXT: BFE_INT T41.X, T42.X, 0.0, literal.x, 5072; CM-NEXT: BFE_INT T57.Y, PV.Y, 0.0, literal.x, 5073; CM-NEXT: BFE_INT T59.Z, T42.W, 0.0, literal.x, 5074; CM-NEXT: BFE_INT * T58.W, T13.Y, 0.0, literal.x, 5075; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5076; CM-NEXT: ALU clause starting at 140: 5077; CM-NEXT: BFE_INT T59.X, T42.Z, 0.0, literal.x, 5078; CM-NEXT: BFE_INT T58.Y, T1.W, 0.0, literal.x, 5079; CM-NEXT: BFE_INT T42.Z, T43.Y, 0.0, literal.x, 5080; CM-NEXT: BFE_INT * T41.W, T12.Y, 0.0, literal.x, BS:VEC_120/SCL_212 5081; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5082; CM-NEXT: BFE_INT T42.X, T43.X, 0.0, literal.x, 5083; CM-NEXT: BFE_INT T41.Y, T12.Z, 0.0, literal.x, 5084; CM-NEXT: BFE_INT T60.Z, T43.W, 0.0, literal.x, 5085; CM-NEXT: BFE_INT * T59.W, T11.Y, 0.0, literal.x, 5086; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5087; CM-NEXT: BFE_INT T60.X, T43.Z, 0.0, literal.x, 5088; CM-NEXT: BFE_INT T59.Y, T11.Z, 0.0, literal.x, BS:VEC_120/SCL_212 5089; CM-NEXT: BFE_INT T43.Z, T44.Y, 0.0, literal.x, 5090; CM-NEXT: BFE_INT * T42.W, T10.Y, 0.0, literal.x, BS:VEC_120/SCL_212 5091; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5092; CM-NEXT: BFE_INT T43.X, T44.X, 0.0, literal.x, 5093; CM-NEXT: BFE_INT T42.Y, T10.Z, 0.0, literal.x, 5094; CM-NEXT: BFE_INT T61.Z, T44.W, 0.0, literal.x, 5095; CM-NEXT: BFE_INT * T60.W, T9.Y, 0.0, literal.x, 5096; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5097; CM-NEXT: BFE_INT T61.X, T44.Z, 0.0, literal.x, 5098; CM-NEXT: BFE_INT T60.Y, T9.Z, 0.0, literal.x, BS:VEC_120/SCL_212 5099; CM-NEXT: BFE_INT T44.Z, T45.Y, 0.0, literal.x, 5100; CM-NEXT: BFE_INT * T43.W, T8.Y, 0.0, literal.x, BS:VEC_120/SCL_212 5101; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5102; CM-NEXT: BFE_INT T44.X, T45.X, 0.0, literal.x, 5103; CM-NEXT: BFE_INT T43.Y, T8.Z, 0.0, literal.x, 5104; CM-NEXT: BFE_INT T62.Z, T45.W, 0.0, literal.x, 5105; CM-NEXT: BFE_INT * T61.W, T7.Y, 0.0, literal.x, 5106; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5107; CM-NEXT: BFE_INT T62.X, T45.Z, 0.0, literal.x, 5108; CM-NEXT: BFE_INT T61.Y, T7.Z, 0.0, literal.x, BS:VEC_120/SCL_212 5109; CM-NEXT: BFE_INT T45.Z, T37.Y, 0.0, literal.x, 5110; CM-NEXT: BFE_INT * T44.W, T6.Y, 0.0, literal.x, BS:VEC_120/SCL_212 5111; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5112; CM-NEXT: BFE_INT T45.X, T37.X, 0.0, literal.x, 5113; CM-NEXT: BFE_INT T44.Y, T6.Z, 0.0, literal.x, 5114; CM-NEXT: BFE_INT T63.Z, T37.W, 0.0, literal.x, 5115; CM-NEXT: BFE_INT * T62.W, T5.Y, 0.0, literal.x, 5116; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5117; CM-NEXT: BFE_INT T63.X, T37.Z, 0.0, literal.x, 5118; CM-NEXT: BFE_INT T62.Y, T5.Z, 0.0, literal.x, BS:VEC_120/SCL_212 5119; CM-NEXT: BFE_INT T37.Z, T35.Y, 0.0, literal.x, 5120; CM-NEXT: BFE_INT * T45.W, T4.Y, 0.0, literal.x, BS:VEC_120/SCL_212 5121; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5122; CM-NEXT: BFE_INT T37.X, T35.X, 0.0, literal.x, 5123; CM-NEXT: BFE_INT T45.Y, T4.Z, 0.0, literal.x, 5124; CM-NEXT: BFE_INT T64.Z, T35.W, 0.0, literal.x, 5125; CM-NEXT: BFE_INT * T63.W, T3.Y, 0.0, literal.x, 5126; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5127; CM-NEXT: BFE_INT T64.X, T35.Z, 0.0, literal.x, 5128; CM-NEXT: BFE_INT T63.Y, T3.Z, 0.0, literal.x, BS:VEC_120/SCL_212 5129; CM-NEXT: BFE_INT T35.Z, T36.Y, 0.0, literal.x, 5130; CM-NEXT: BFE_INT * T37.W, T2.Y, 0.0, literal.x, BS:VEC_120/SCL_212 5131; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5132; CM-NEXT: BFE_INT T35.X, T36.X, 0.0, literal.x, 5133; CM-NEXT: BFE_INT T37.Y, T2.Z, 0.0, literal.x, 5134; CM-NEXT: BFE_INT T65.Z, T36.W, 0.0, literal.x, 5135; CM-NEXT: BFE_INT * T64.W, T0.W, 0.0, literal.x, BS:VEC_120/SCL_212 5136; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5137; CM-NEXT: BFE_INT T65.X, T36.Z, 0.0, literal.x, 5138; CM-NEXT: BFE_INT T64.Y, T1.Z, 0.0, literal.x, BS:VEC_120/SCL_212 5139; CM-NEXT: LSHR T1.Z, T36.X, literal.x, 5140; CM-NEXT: BFE_INT * T35.W, T1.Y, 0.0, literal.x, 5141; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5142; CM-NEXT: LSHR T36.X, KC0[2].Y, literal.x, 5143; CM-NEXT: BFE_INT T35.Y, PV.Z, 0.0, literal.y, 5144; CM-NEXT: ADD_INT T1.Z, KC0[2].Y, literal.y, 5145; CM-NEXT: BFE_INT * T65.W, T0.Z, 0.0, literal.y, 5146; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5147; CM-NEXT: LSHR T66.X, PV.Z, literal.x, 5148; CM-NEXT: BFE_INT * T65.Y, T0.Y, 0.0, literal.y, 5149; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5150 %load = load <64 x i16>, <64 x i16> addrspace(1)* %in 5151 %ext = sext <64 x i16> %load to <64 x i32> 5152 store <64 x i32> %ext, <64 x i32> addrspace(1)* %out 5153 ret void 5154} 5155 5156define amdgpu_kernel void @global_zextload_i16_to_i64(i64 addrspace(1)* %out, i16 addrspace(1)* %in) #0 { 5157; GCN-NOHSA-SI-LABEL: global_zextload_i16_to_i64: 5158; GCN-NOHSA-SI: ; %bb.0: 5159; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 5160; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 5161; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 5162; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 5163; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 5164; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5165; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 5166; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 5167; GCN-NOHSA-SI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 5168; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 5169; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 5170; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, 0 5171; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 5172; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 5173; GCN-NOHSA-SI-NEXT: s_endpgm 5174; 5175; GCN-HSA-LABEL: global_zextload_i16_to_i64: 5176; GCN-HSA: ; %bb.0: 5177; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 5178; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5179; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 5180; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 5181; GCN-HSA-NEXT: flat_load_ushort v0, v[0:1] 5182; GCN-HSA-NEXT: v_mov_b32_e32 v2, s0 5183; GCN-HSA-NEXT: v_mov_b32_e32 v3, s1 5184; GCN-HSA-NEXT: v_mov_b32_e32 v1, 0 5185; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 5186; GCN-HSA-NEXT: flat_store_dwordx2 v[2:3], v[0:1] 5187; GCN-HSA-NEXT: s_endpgm 5188; 5189; GCN-NOHSA-VI-LABEL: global_zextload_i16_to_i64: 5190; GCN-NOHSA-VI: ; %bb.0: 5191; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 5192; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 5193; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 5194; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 5195; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 5196; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5197; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 5198; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 5199; GCN-NOHSA-VI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 5200; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 5201; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 5202; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, 0 5203; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 5204; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, 0xffff, v0 5205; GCN-NOHSA-VI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 5206; GCN-NOHSA-VI-NEXT: s_endpgm 5207; 5208; EG-LABEL: global_zextload_i16_to_i64: 5209; EG: ; %bb.0: 5210; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5211; EG-NEXT: TEX 0 @6 5212; EG-NEXT: ALU 2, @9, KC0[CB0:0-32], KC1[] 5213; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1 5214; EG-NEXT: CF_END 5215; EG-NEXT: PAD 5216; EG-NEXT: Fetch clause starting at 6: 5217; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 5218; EG-NEXT: ALU clause starting at 8: 5219; EG-NEXT: MOV * T0.X, KC0[2].Z, 5220; EG-NEXT: ALU clause starting at 9: 5221; EG-NEXT: MOV * T0.Y, 0.0, 5222; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 5223; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 5224; 5225; CM-LABEL: global_zextload_i16_to_i64: 5226; CM: ; %bb.0: 5227; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5228; CM-NEXT: TEX 0 @6 5229; CM-NEXT: ALU 2, @9, KC0[CB0:0-32], KC1[] 5230; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T0, T1.X 5231; CM-NEXT: CF_END 5232; CM-NEXT: PAD 5233; CM-NEXT: Fetch clause starting at 6: 5234; CM-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 5235; CM-NEXT: ALU clause starting at 8: 5236; CM-NEXT: MOV * T0.X, KC0[2].Z, 5237; CM-NEXT: ALU clause starting at 9: 5238; CM-NEXT: MOV * T0.Y, 0.0, 5239; CM-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 5240; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 5241 %a = load i16, i16 addrspace(1)* %in 5242 %ext = zext i16 %a to i64 5243 store i64 %ext, i64 addrspace(1)* %out 5244 ret void 5245} 5246 5247; FIXME: Need to optimize this sequence to avoid extra bfe: 5248; t28: i32,ch = load<LD2[%in(addrspace=1)], anyext from i16> t12, t27, undef:i64 5249; t31: i64 = any_extend t28 5250; t33: i64 = sign_extend_inreg t31, ValueType:ch:i16 5251 5252; TODO: These could be expanded earlier using ASHR 15 5253define amdgpu_kernel void @global_sextload_i16_to_i64(i64 addrspace(1)* %out, i16 addrspace(1)* %in) #0 { 5254; GCN-NOHSA-SI-LABEL: global_sextload_i16_to_i64: 5255; GCN-NOHSA-SI: ; %bb.0: 5256; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 5257; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 5258; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 5259; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 5260; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 5261; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5262; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 5263; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 5264; GCN-NOHSA-SI-NEXT: buffer_load_sshort v0, off, s[8:11], 0 5265; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 5266; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 5267; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 5268; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5269; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 5270; GCN-NOHSA-SI-NEXT: s_endpgm 5271; 5272; GCN-HSA-LABEL: global_sextload_i16_to_i64: 5273; GCN-HSA: ; %bb.0: 5274; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 5275; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5276; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 5277; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 5278; GCN-HSA-NEXT: flat_load_sshort v0, v[0:1] 5279; GCN-HSA-NEXT: v_mov_b32_e32 v2, s0 5280; GCN-HSA-NEXT: v_mov_b32_e32 v3, s1 5281; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 5282; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5283; GCN-HSA-NEXT: flat_store_dwordx2 v[2:3], v[0:1] 5284; GCN-HSA-NEXT: s_endpgm 5285; 5286; GCN-NOHSA-VI-LABEL: global_sextload_i16_to_i64: 5287; GCN-NOHSA-VI: ; %bb.0: 5288; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 5289; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 5290; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 5291; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 5292; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 5293; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5294; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 5295; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 5296; GCN-NOHSA-VI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 5297; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 5298; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 5299; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 5300; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v0, 0, 16 5301; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5302; GCN-NOHSA-VI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 5303; GCN-NOHSA-VI-NEXT: s_endpgm 5304; 5305; EG-LABEL: global_sextload_i16_to_i64: 5306; EG: ; %bb.0: 5307; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5308; EG-NEXT: TEX 0 @6 5309; EG-NEXT: ALU 4, @9, KC0[CB0:0-32], KC1[] 5310; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1 5311; EG-NEXT: CF_END 5312; EG-NEXT: PAD 5313; EG-NEXT: Fetch clause starting at 6: 5314; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 5315; EG-NEXT: ALU clause starting at 8: 5316; EG-NEXT: MOV * T0.X, KC0[2].Z, 5317; EG-NEXT: ALU clause starting at 9: 5318; EG-NEXT: BFE_INT T0.X, T0.X, 0.0, literal.x, 5319; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.y, 5320; EG-NEXT: 16(2.242078e-44), 2(2.802597e-45) 5321; EG-NEXT: ASHR * T0.Y, PV.X, literal.x, 5322; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 5323; 5324; CM-LABEL: global_sextload_i16_to_i64: 5325; CM: ; %bb.0: 5326; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5327; CM-NEXT: TEX 0 @6 5328; CM-NEXT: ALU 4, @9, KC0[CB0:0-32], KC1[] 5329; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T0, T1.X 5330; CM-NEXT: CF_END 5331; CM-NEXT: PAD 5332; CM-NEXT: Fetch clause starting at 6: 5333; CM-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 5334; CM-NEXT: ALU clause starting at 8: 5335; CM-NEXT: MOV * T0.X, KC0[2].Z, 5336; CM-NEXT: ALU clause starting at 9: 5337; CM-NEXT: BFE_INT * T0.X, T0.X, 0.0, literal.x, 5338; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5339; CM-NEXT: LSHR T1.X, KC0[2].Y, literal.x, 5340; CM-NEXT: ASHR * T0.Y, PV.X, literal.y, 5341; CM-NEXT: 2(2.802597e-45), 31(4.344025e-44) 5342 %a = load i16, i16 addrspace(1)* %in 5343 %ext = sext i16 %a to i64 5344 store i64 %ext, i64 addrspace(1)* %out 5345 ret void 5346} 5347 5348define amdgpu_kernel void @global_zextload_v1i16_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i16> addrspace(1)* %in) #0 { 5349; GCN-NOHSA-SI-LABEL: global_zextload_v1i16_to_v1i64: 5350; GCN-NOHSA-SI: ; %bb.0: 5351; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 5352; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 5353; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 5354; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 5355; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 5356; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5357; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 5358; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 5359; GCN-NOHSA-SI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 5360; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 5361; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 5362; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, 0 5363; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 5364; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 5365; GCN-NOHSA-SI-NEXT: s_endpgm 5366; 5367; GCN-HSA-LABEL: global_zextload_v1i16_to_v1i64: 5368; GCN-HSA: ; %bb.0: 5369; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 5370; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5371; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 5372; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 5373; GCN-HSA-NEXT: flat_load_ushort v0, v[0:1] 5374; GCN-HSA-NEXT: v_mov_b32_e32 v2, s0 5375; GCN-HSA-NEXT: v_mov_b32_e32 v3, s1 5376; GCN-HSA-NEXT: v_mov_b32_e32 v1, 0 5377; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 5378; GCN-HSA-NEXT: flat_store_dwordx2 v[2:3], v[0:1] 5379; GCN-HSA-NEXT: s_endpgm 5380; 5381; GCN-NOHSA-VI-LABEL: global_zextload_v1i16_to_v1i64: 5382; GCN-NOHSA-VI: ; %bb.0: 5383; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 5384; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 5385; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 5386; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 5387; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 5388; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5389; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 5390; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 5391; GCN-NOHSA-VI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 5392; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 5393; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 5394; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, 0 5395; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 5396; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, 0xffff, v0 5397; GCN-NOHSA-VI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 5398; GCN-NOHSA-VI-NEXT: s_endpgm 5399; 5400; EG-LABEL: global_zextload_v1i16_to_v1i64: 5401; EG: ; %bb.0: 5402; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5403; EG-NEXT: TEX 0 @6 5404; EG-NEXT: ALU 2, @9, KC0[CB0:0-32], KC1[] 5405; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1 5406; EG-NEXT: CF_END 5407; EG-NEXT: PAD 5408; EG-NEXT: Fetch clause starting at 6: 5409; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 5410; EG-NEXT: ALU clause starting at 8: 5411; EG-NEXT: MOV * T0.X, KC0[2].Z, 5412; EG-NEXT: ALU clause starting at 9: 5413; EG-NEXT: MOV * T0.Y, 0.0, 5414; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 5415; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 5416; 5417; CM-LABEL: global_zextload_v1i16_to_v1i64: 5418; CM: ; %bb.0: 5419; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5420; CM-NEXT: TEX 0 @6 5421; CM-NEXT: ALU 2, @9, KC0[CB0:0-32], KC1[] 5422; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T0, T1.X 5423; CM-NEXT: CF_END 5424; CM-NEXT: PAD 5425; CM-NEXT: Fetch clause starting at 6: 5426; CM-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 5427; CM-NEXT: ALU clause starting at 8: 5428; CM-NEXT: MOV * T0.X, KC0[2].Z, 5429; CM-NEXT: ALU clause starting at 9: 5430; CM-NEXT: MOV * T0.Y, 0.0, 5431; CM-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, 5432; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 5433 %load = load <1 x i16>, <1 x i16> addrspace(1)* %in 5434 %ext = zext <1 x i16> %load to <1 x i64> 5435 store <1 x i64> %ext, <1 x i64> addrspace(1)* %out 5436 ret void 5437} 5438 5439; TODO: These could be expanded earlier using ASHR 15 5440define amdgpu_kernel void @global_sextload_v1i16_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i16> addrspace(1)* %in) #0 { 5441; GCN-NOHSA-SI-LABEL: global_sextload_v1i16_to_v1i64: 5442; GCN-NOHSA-SI: ; %bb.0: 5443; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 5444; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 5445; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 5446; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 5447; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 5448; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5449; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 5450; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 5451; GCN-NOHSA-SI-NEXT: buffer_load_sshort v0, off, s[8:11], 0 5452; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 5453; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 5454; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 5455; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5456; GCN-NOHSA-SI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 5457; GCN-NOHSA-SI-NEXT: s_endpgm 5458; 5459; GCN-HSA-LABEL: global_sextload_v1i16_to_v1i64: 5460; GCN-HSA: ; %bb.0: 5461; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 5462; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5463; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 5464; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 5465; GCN-HSA-NEXT: flat_load_sshort v0, v[0:1] 5466; GCN-HSA-NEXT: v_mov_b32_e32 v2, s0 5467; GCN-HSA-NEXT: v_mov_b32_e32 v3, s1 5468; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 5469; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5470; GCN-HSA-NEXT: flat_store_dwordx2 v[2:3], v[0:1] 5471; GCN-HSA-NEXT: s_endpgm 5472; 5473; GCN-NOHSA-VI-LABEL: global_sextload_v1i16_to_v1i64: 5474; GCN-NOHSA-VI: ; %bb.0: 5475; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 5476; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 5477; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 5478; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 5479; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 5480; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5481; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 5482; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 5483; GCN-NOHSA-VI-NEXT: buffer_load_ushort v0, off, s[8:11], 0 5484; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 5485; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 5486; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 5487; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v0, 0, 16 5488; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5489; GCN-NOHSA-VI-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 5490; GCN-NOHSA-VI-NEXT: s_endpgm 5491; 5492; EG-LABEL: global_sextload_v1i16_to_v1i64: 5493; EG: ; %bb.0: 5494; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5495; EG-NEXT: TEX 0 @6 5496; EG-NEXT: ALU 4, @9, KC0[CB0:0-32], KC1[] 5497; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1 5498; EG-NEXT: CF_END 5499; EG-NEXT: PAD 5500; EG-NEXT: Fetch clause starting at 6: 5501; EG-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 5502; EG-NEXT: ALU clause starting at 8: 5503; EG-NEXT: MOV * T0.X, KC0[2].Z, 5504; EG-NEXT: ALU clause starting at 9: 5505; EG-NEXT: BFE_INT T0.X, T0.X, 0.0, literal.x, 5506; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.y, 5507; EG-NEXT: 16(2.242078e-44), 2(2.802597e-45) 5508; EG-NEXT: ASHR * T0.Y, PV.X, literal.x, 5509; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 5510; 5511; CM-LABEL: global_sextload_v1i16_to_v1i64: 5512; CM: ; %bb.0: 5513; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5514; CM-NEXT: TEX 0 @6 5515; CM-NEXT: ALU 4, @9, KC0[CB0:0-32], KC1[] 5516; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T0, T1.X 5517; CM-NEXT: CF_END 5518; CM-NEXT: PAD 5519; CM-NEXT: Fetch clause starting at 6: 5520; CM-NEXT: VTX_READ_16 T0.X, T0.X, 0, #1 5521; CM-NEXT: ALU clause starting at 8: 5522; CM-NEXT: MOV * T0.X, KC0[2].Z, 5523; CM-NEXT: ALU clause starting at 9: 5524; CM-NEXT: BFE_INT * T0.X, T0.X, 0.0, literal.x, 5525; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5526; CM-NEXT: LSHR T1.X, KC0[2].Y, literal.x, 5527; CM-NEXT: ASHR * T0.Y, PV.X, literal.y, 5528; CM-NEXT: 2(2.802597e-45), 31(4.344025e-44) 5529 %load = load <1 x i16>, <1 x i16> addrspace(1)* %in 5530 %ext = sext <1 x i16> %load to <1 x i64> 5531 store <1 x i64> %ext, <1 x i64> addrspace(1)* %out 5532 ret void 5533} 5534 5535define amdgpu_kernel void @global_zextload_v2i16_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i16> addrspace(1)* %in) #0 { 5536; GCN-NOHSA-SI-LABEL: global_zextload_v2i16_to_v2i64: 5537; GCN-NOHSA-SI: ; %bb.0: 5538; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 5539; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 5540; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 5541; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 5542; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 5543; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5544; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 5545; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 5546; GCN-NOHSA-SI-NEXT: buffer_load_dword v0, off, s[8:11], 0 5547; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, 0 5548; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 5549; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 5550; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 5551; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v2, 16, v0 5552; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v0, 0xffff, v0 5553; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, v1 5554; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 5555; GCN-NOHSA-SI-NEXT: s_endpgm 5556; 5557; GCN-HSA-LABEL: global_zextload_v2i16_to_v2i64: 5558; GCN-HSA: ; %bb.0: 5559; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 5560; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5561; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 5562; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 5563; GCN-HSA-NEXT: flat_load_dword v0, v[0:1] 5564; GCN-HSA-NEXT: v_mov_b32_e32 v1, 0 5565; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 5566; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 5567; GCN-HSA-NEXT: v_mov_b32_e32 v3, v1 5568; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 5569; GCN-HSA-NEXT: v_lshrrev_b32_e32 v2, 16, v0 5570; GCN-HSA-NEXT: v_and_b32_e32 v0, 0xffff, v0 5571; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5572; GCN-HSA-NEXT: s_endpgm 5573; 5574; GCN-NOHSA-VI-LABEL: global_zextload_v2i16_to_v2i64: 5575; GCN-NOHSA-VI: ; %bb.0: 5576; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 5577; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 5578; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 5579; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 5580; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 5581; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5582; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 5583; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 5584; GCN-NOHSA-VI-NEXT: buffer_load_dword v0, off, s[8:11], 0 5585; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, 0 5586; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 5587; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 5588; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, v1 5589; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 5590; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v2, 16, v0 5591; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, 0xffff, v0 5592; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 5593; GCN-NOHSA-VI-NEXT: s_endpgm 5594; 5595; EG-LABEL: global_zextload_v2i16_to_v2i64: 5596; EG: ; %bb.0: 5597; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5598; EG-NEXT: TEX 0 @6 5599; EG-NEXT: ALU 6, @9, KC0[CB0:0-32], KC1[] 5600; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T4.XYZW, T5.X, 1 5601; EG-NEXT: CF_END 5602; EG-NEXT: PAD 5603; EG-NEXT: Fetch clause starting at 6: 5604; EG-NEXT: VTX_READ_32 T4.X, T4.X, 0, #1 5605; EG-NEXT: ALU clause starting at 8: 5606; EG-NEXT: MOV * T4.X, KC0[2].Z, 5607; EG-NEXT: ALU clause starting at 9: 5608; EG-NEXT: LSHR * T4.Z, T4.X, literal.x, 5609; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5610; EG-NEXT: AND_INT T4.X, T4.X, literal.x, 5611; EG-NEXT: MOV T4.Y, 0.0, 5612; EG-NEXT: MOV T4.W, 0.0, 5613; EG-NEXT: LSHR * T5.X, KC0[2].Y, literal.y, 5614; EG-NEXT: 65535(9.183409e-41), 2(2.802597e-45) 5615; 5616; CM-LABEL: global_zextload_v2i16_to_v2i64: 5617; CM: ; %bb.0: 5618; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5619; CM-NEXT: TEX 0 @6 5620; CM-NEXT: ALU 7, @9, KC0[CB0:0-32], KC1[] 5621; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T4, T5.X 5622; CM-NEXT: CF_END 5623; CM-NEXT: PAD 5624; CM-NEXT: Fetch clause starting at 6: 5625; CM-NEXT: VTX_READ_32 T4.X, T4.X, 0, #1 5626; CM-NEXT: ALU clause starting at 8: 5627; CM-NEXT: MOV * T4.X, KC0[2].Z, 5628; CM-NEXT: ALU clause starting at 9: 5629; CM-NEXT: LSHR * T4.Z, T4.X, literal.x, 5630; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5631; CM-NEXT: AND_INT T4.X, T4.X, literal.x, 5632; CM-NEXT: MOV T4.Y, 0.0, 5633; CM-NEXT: MOV * T4.W, 0.0, 5634; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 5635; CM-NEXT: LSHR * T5.X, KC0[2].Y, literal.x, 5636; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 5637 %load = load <2 x i16>, <2 x i16> addrspace(1)* %in 5638 %ext = zext <2 x i16> %load to <2 x i64> 5639 store <2 x i64> %ext, <2 x i64> addrspace(1)* %out 5640 ret void 5641} 5642 5643define amdgpu_kernel void @global_sextload_v2i16_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i16> addrspace(1)* %in) #0 { 5644; GCN-NOHSA-SI-LABEL: global_sextload_v2i16_to_v2i64: 5645; GCN-NOHSA-SI: ; %bb.0: 5646; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 5647; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 5648; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 5649; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 5650; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 5651; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5652; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 5653; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 5654; GCN-NOHSA-SI-NEXT: buffer_load_dword v0, off, s[8:11], 0 5655; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 5656; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 5657; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 5658; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v2, 16, v0 5659; GCN-NOHSA-SI-NEXT: v_bfe_i32 v0, v0, 0, 16 5660; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5661; GCN-NOHSA-SI-NEXT: v_bfe_i32 v2, v2, 0, 16 5662; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v3, 31, v2 5663; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 5664; GCN-NOHSA-SI-NEXT: s_endpgm 5665; 5666; GCN-HSA-LABEL: global_sextload_v2i16_to_v2i64: 5667; GCN-HSA: ; %bb.0: 5668; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 5669; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5670; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 5671; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 5672; GCN-HSA-NEXT: flat_load_dword v0, v[0:1] 5673; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 5674; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 5675; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 5676; GCN-HSA-NEXT: v_lshrrev_b32_e32 v2, 16, v0 5677; GCN-HSA-NEXT: v_bfe_i32 v0, v0, 0, 16 5678; GCN-HSA-NEXT: v_bfe_i32 v2, v2, 0, 16 5679; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5680; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 31, v2 5681; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 5682; GCN-HSA-NEXT: s_endpgm 5683; 5684; GCN-NOHSA-VI-LABEL: global_sextload_v2i16_to_v2i64: 5685; GCN-NOHSA-VI: ; %bb.0: 5686; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 5687; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 5688; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 5689; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 5690; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 5691; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5692; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 5693; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 5694; GCN-NOHSA-VI-NEXT: buffer_load_dword v1, off, s[8:11], 0 5695; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 5696; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 5697; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 5698; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v2, 16, v1 5699; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v1, 0, 16 5700; GCN-NOHSA-VI-NEXT: v_bfe_i32 v2, v2, 0, 16 5701; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5702; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v3, 31, v2 5703; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 5704; GCN-NOHSA-VI-NEXT: s_endpgm 5705; 5706; EG-LABEL: global_sextload_v2i16_to_v2i64: 5707; EG: ; %bb.0: 5708; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5709; EG-NEXT: TEX 0 @6 5710; EG-NEXT: ALU 8, @9, KC0[CB0:0-32], KC1[] 5711; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T4.XYZW, T5.X, 1 5712; EG-NEXT: CF_END 5713; EG-NEXT: PAD 5714; EG-NEXT: Fetch clause starting at 6: 5715; EG-NEXT: VTX_READ_32 T4.X, T4.X, 0, #1 5716; EG-NEXT: ALU clause starting at 8: 5717; EG-NEXT: MOV * T4.X, KC0[2].Z, 5718; EG-NEXT: ALU clause starting at 9: 5719; EG-NEXT: ASHR * T4.W, T4.X, literal.x, 5720; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 5721; EG-NEXT: ASHR * T4.Z, T4.X, literal.x, 5722; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5723; EG-NEXT: BFE_INT T4.X, T4.X, 0.0, literal.x, 5724; EG-NEXT: LSHR * T5.X, KC0[2].Y, literal.y, 5725; EG-NEXT: 16(2.242078e-44), 2(2.802597e-45) 5726; EG-NEXT: ASHR * T4.Y, PV.X, literal.x, 5727; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 5728; 5729; CM-LABEL: global_sextload_v2i16_to_v2i64: 5730; CM: ; %bb.0: 5731; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5732; CM-NEXT: TEX 0 @6 5733; CM-NEXT: ALU 8, @9, KC0[CB0:0-32], KC1[] 5734; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T4, T5.X 5735; CM-NEXT: CF_END 5736; CM-NEXT: PAD 5737; CM-NEXT: Fetch clause starting at 6: 5738; CM-NEXT: VTX_READ_32 T4.X, T4.X, 0, #1 5739; CM-NEXT: ALU clause starting at 8: 5740; CM-NEXT: MOV * T4.X, KC0[2].Z, 5741; CM-NEXT: ALU clause starting at 9: 5742; CM-NEXT: ASHR * T4.W, T4.X, literal.x, 5743; CM-NEXT: 31(4.344025e-44), 0(0.000000e+00) 5744; CM-NEXT: ASHR * T4.Z, T4.X, literal.x, 5745; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5746; CM-NEXT: BFE_INT * T4.X, T4.X, 0.0, literal.x, 5747; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5748; CM-NEXT: LSHR T5.X, KC0[2].Y, literal.x, 5749; CM-NEXT: ASHR * T4.Y, PV.X, literal.y, 5750; CM-NEXT: 2(2.802597e-45), 31(4.344025e-44) 5751 %load = load <2 x i16>, <2 x i16> addrspace(1)* %in 5752 %ext = sext <2 x i16> %load to <2 x i64> 5753 store <2 x i64> %ext, <2 x i64> addrspace(1)* %out 5754 ret void 5755} 5756 5757define amdgpu_kernel void @global_zextload_v4i16_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i16> addrspace(1)* %in) #0 { 5758; GCN-NOHSA-SI-LABEL: global_zextload_v4i16_to_v4i64: 5759; GCN-NOHSA-SI: ; %bb.0: 5760; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 5761; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 5762; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 5763; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 5764; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 5765; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5766; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 5767; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 5768; GCN-NOHSA-SI-NEXT: buffer_load_dwordx2 v[8:9], off, s[8:11], 0 5769; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, 0 5770; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, 0xffff 5771; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, v1 5772; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v5, v1 5773; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v7, v1 5774; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 5775; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 5776; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 5777; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v2, 16, v9 5778; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v6, 16, v8 5779; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v4, s2, v8 5780; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v0, s2, v9 5781; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 offset:16 5782; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 5783; GCN-NOHSA-SI-NEXT: s_endpgm 5784; 5785; GCN-HSA-LABEL: global_zextload_v4i16_to_v4i64: 5786; GCN-HSA: ; %bb.0: 5787; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 5788; GCN-HSA-NEXT: s_mov_b32 s4, 0xffff 5789; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5790; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 5791; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 5792; GCN-HSA-NEXT: flat_load_dwordx2 v[8:9], v[0:1] 5793; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 5794; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 5795; GCN-HSA-NEXT: v_mov_b32_e32 v1, 0 5796; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 5797; GCN-HSA-NEXT: v_mov_b32_e32 v3, v1 5798; GCN-HSA-NEXT: v_mov_b32_e32 v11, s1 5799; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 5800; GCN-HSA-NEXT: v_mov_b32_e32 v5, v1 5801; GCN-HSA-NEXT: v_mov_b32_e32 v7, v1 5802; GCN-HSA-NEXT: v_mov_b32_e32 v10, s0 5803; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 5804; GCN-HSA-NEXT: v_lshrrev_b32_e32 v2, 16, v9 5805; GCN-HSA-NEXT: v_and_b32_e32 v0, s4, v9 5806; GCN-HSA-NEXT: v_lshrrev_b32_e32 v6, 16, v8 5807; GCN-HSA-NEXT: v_and_b32_e32 v4, s4, v8 5808; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[0:3] 5809; GCN-HSA-NEXT: flat_store_dwordx4 v[10:11], v[4:7] 5810; GCN-HSA-NEXT: s_endpgm 5811; 5812; GCN-NOHSA-VI-LABEL: global_zextload_v4i16_to_v4i64: 5813; GCN-NOHSA-VI: ; %bb.0: 5814; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 5815; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 5816; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 5817; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 5818; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 5819; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5820; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 5821; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 5822; GCN-NOHSA-VI-NEXT: buffer_load_dwordx2 v[8:9], off, s[8:11], 0 5823; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, 0xffff 5824; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v7, 0 5825; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v5, 0 5826; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 5827; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 5828; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, 0 5829; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, v5 5830; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 5831; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v4, s2, v9 5832; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v6, 16, v9 5833; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, s2, v8 5834; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v2, 16, v8 5835; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 offset:16 5836; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 5837; GCN-NOHSA-VI-NEXT: s_endpgm 5838; 5839; EG-LABEL: global_zextload_v4i16_to_v4i64: 5840; EG: ; %bb.0: 5841; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5842; EG-NEXT: TEX 0 @6 5843; EG-NEXT: ALU 18, @9, KC0[CB0:0-32], KC1[] 5844; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T8.X, 0 5845; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T6.XYZW, T7.X, 1 5846; EG-NEXT: CF_END 5847; EG-NEXT: Fetch clause starting at 6: 5848; EG-NEXT: VTX_READ_64 T5.XY, T5.X, 0, #1 5849; EG-NEXT: ALU clause starting at 8: 5850; EG-NEXT: MOV * T5.X, KC0[2].Z, 5851; EG-NEXT: ALU clause starting at 9: 5852; EG-NEXT: MOV T2.X, T5.X, 5853; EG-NEXT: MOV * T3.X, T5.Y, 5854; EG-NEXT: MOV T0.Y, PV.X, 5855; EG-NEXT: MOV * T0.Z, PS, 5856; EG-NEXT: LSHR * T5.Z, PV.Z, literal.x, 5857; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5858; EG-NEXT: AND_INT T5.X, T0.Z, literal.x, 5859; EG-NEXT: MOV T5.Y, 0.0, 5860; EG-NEXT: LSHR T6.Z, T0.Y, literal.y, 5861; EG-NEXT: AND_INT * T6.X, T0.Y, literal.x, 5862; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 5863; EG-NEXT: MOV T6.Y, 0.0, 5864; EG-NEXT: MOV T5.W, 0.0, 5865; EG-NEXT: MOV * T6.W, 0.0, 5866; EG-NEXT: LSHR T7.X, KC0[2].Y, literal.x, 5867; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 5868; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 5869; EG-NEXT: LSHR * T8.X, PV.W, literal.x, 5870; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 5871; 5872; CM-LABEL: global_zextload_v4i16_to_v4i64: 5873; CM: ; %bb.0: 5874; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5875; CM-NEXT: TEX 0 @6 5876; CM-NEXT: ALU 20, @9, KC0[CB0:0-32], KC1[] 5877; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T5, T8.X 5878; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T6, T7.X 5879; CM-NEXT: CF_END 5880; CM-NEXT: Fetch clause starting at 6: 5881; CM-NEXT: VTX_READ_64 T5.XY, T5.X, 0, #1 5882; CM-NEXT: ALU clause starting at 8: 5883; CM-NEXT: MOV * T5.X, KC0[2].Z, 5884; CM-NEXT: ALU clause starting at 9: 5885; CM-NEXT: MOV * T2.X, T5.X, 5886; CM-NEXT: MOV * T3.X, T5.Y, 5887; CM-NEXT: MOV T0.Y, PV.X, 5888; CM-NEXT: MOV * T0.Z, T2.X, 5889; CM-NEXT: LSHR * T5.Z, PV.Z, literal.x, 5890; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5891; CM-NEXT: AND_INT T5.X, T0.Z, literal.x, 5892; CM-NEXT: MOV T5.Y, 0.0, 5893; CM-NEXT: LSHR * T6.Z, T0.Y, literal.y, 5894; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 5895; CM-NEXT: AND_INT T6.X, T0.Y, literal.x, 5896; CM-NEXT: MOV T6.Y, 0.0, 5897; CM-NEXT: MOV * T5.W, 0.0, 5898; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 5899; CM-NEXT: MOV * T6.W, 0.0, 5900; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 5901; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 5902; CM-NEXT: LSHR * T7.X, PV.W, literal.x, 5903; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 5904; CM-NEXT: LSHR * T8.X, KC0[2].Y, literal.x, 5905; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 5906 %load = load <4 x i16>, <4 x i16> addrspace(1)* %in 5907 %ext = zext <4 x i16> %load to <4 x i64> 5908 store <4 x i64> %ext, <4 x i64> addrspace(1)* %out 5909 ret void 5910} 5911 5912define amdgpu_kernel void @global_sextload_v4i16_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i16> addrspace(1)* %in) #0 { 5913; GCN-NOHSA-SI-LABEL: global_sextload_v4i16_to_v4i64: 5914; GCN-NOHSA-SI: ; %bb.0: 5915; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 5916; GCN-NOHSA-SI-NEXT: s_mov_b32 s7, 0xf000 5917; GCN-NOHSA-SI-NEXT: s_mov_b32 s6, -1 5918; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s6 5919; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s7 5920; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 5921; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s2 5922; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s3 5923; GCN-NOHSA-SI-NEXT: buffer_load_dwordx2 v[1:2], off, s[8:11], 0 5924; GCN-NOHSA-SI-NEXT: s_mov_b32 s4, s0 5925; GCN-NOHSA-SI-NEXT: s_mov_b32 s5, s1 5926; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 5927; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, v2 5928; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v5, 16, v1 5929; GCN-NOHSA-SI-NEXT: v_bfe_i32 v0, v1, 0, 16 5930; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[6:7], v[1:2], 48 5931; GCN-NOHSA-SI-NEXT: v_bfe_i32 v4, v3, 0, 16 5932; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5933; GCN-NOHSA-SI-NEXT: v_bfe_i32 v2, v5, 0, 16 5934; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v5, 31, v4 5935; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v3, 31, v2 5936; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 offset:16 5937; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 5938; GCN-NOHSA-SI-NEXT: s_endpgm 5939; 5940; GCN-HSA-LABEL: global_sextload_v4i16_to_v4i64: 5941; GCN-HSA: ; %bb.0: 5942; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 5943; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 5944; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 5945; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 5946; GCN-HSA-NEXT: flat_load_dwordx2 v[1:2], v[0:1] 5947; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 5948; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 5949; GCN-HSA-NEXT: v_mov_b32_e32 v11, s3 5950; GCN-HSA-NEXT: v_mov_b32_e32 v9, s1 5951; GCN-HSA-NEXT: v_mov_b32_e32 v10, s2 5952; GCN-HSA-NEXT: v_mov_b32_e32 v8, s0 5953; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 5954; GCN-HSA-NEXT: v_mov_b32_e32 v3, v2 5955; GCN-HSA-NEXT: v_lshrrev_b32_e32 v4, 16, v1 5956; GCN-HSA-NEXT: v_ashr_i64 v[6:7], v[1:2], 48 5957; GCN-HSA-NEXT: v_bfe_i32 v2, v4, 0, 16 5958; GCN-HSA-NEXT: v_bfe_i32 v4, v3, 0, 16 5959; GCN-HSA-NEXT: v_bfe_i32 v0, v1, 0, 16 5960; GCN-HSA-NEXT: v_ashrrev_i32_e32 v5, 31, v4 5961; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5962; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 31, v2 5963; GCN-HSA-NEXT: flat_store_dwordx4 v[10:11], v[4:7] 5964; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[0:3] 5965; GCN-HSA-NEXT: s_endpgm 5966; 5967; GCN-NOHSA-VI-LABEL: global_sextload_v4i16_to_v4i64: 5968; GCN-NOHSA-VI: ; %bb.0: 5969; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 5970; GCN-NOHSA-VI-NEXT: s_mov_b32 s7, 0xf000 5971; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, -1 5972; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s6 5973; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s7 5974; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 5975; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s2 5976; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s3 5977; GCN-NOHSA-VI-NEXT: buffer_load_dwordx2 v[1:2], off, s[8:11], 0 5978; GCN-NOHSA-VI-NEXT: s_mov_b32 s4, s0 5979; GCN-NOHSA-VI-NEXT: s_mov_b32 s5, s1 5980; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 5981; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v4, v2 5982; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v5, 16, v2 5983; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v3, 16, v1 5984; GCN-NOHSA-VI-NEXT: v_bfe_i32 v4, v4, 0, 16 5985; GCN-NOHSA-VI-NEXT: v_bfe_i32 v6, v5, 0, 16 5986; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v1, 0, 16 5987; GCN-NOHSA-VI-NEXT: v_bfe_i32 v2, v3, 0, 16 5988; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v5, 31, v4 5989; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v7, 31, v6 5990; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 5991; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v3, 31, v2 5992; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 offset:16 5993; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 5994; GCN-NOHSA-VI-NEXT: s_endpgm 5995; 5996; EG-LABEL: global_sextload_v4i16_to_v4i64: 5997; EG: ; %bb.0: 5998; EG-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 5999; EG-NEXT: TEX 0 @6 6000; EG-NEXT: ALU 20, @9, KC0[CB0:0-32], KC1[] 6001; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T8.X, 0 6002; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T6.X, 1 6003; EG-NEXT: CF_END 6004; EG-NEXT: Fetch clause starting at 6: 6005; EG-NEXT: VTX_READ_64 T5.XY, T5.X, 0, #1 6006; EG-NEXT: ALU clause starting at 8: 6007; EG-NEXT: MOV * T5.X, KC0[2].Z, 6008; EG-NEXT: ALU clause starting at 9: 6009; EG-NEXT: MOV T2.X, T5.X, 6010; EG-NEXT: MOV * T3.X, T5.Y, 6011; EG-NEXT: MOV T0.Y, PS, 6012; EG-NEXT: MOV * T0.Z, PV.X, 6013; EG-NEXT: ASHR * T5.W, PV.Z, literal.x, 6014; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 6015; EG-NEXT: LSHR T6.X, KC0[2].Y, literal.x, 6016; EG-NEXT: ASHR T5.Z, T0.Z, literal.y, 6017; EG-NEXT: ASHR * T7.W, T0.Y, literal.z, 6018; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 6019; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 6020; EG-NEXT: BFE_INT T5.X, T0.Z, 0.0, literal.x, 6021; EG-NEXT: ASHR * T7.Z, T0.Y, literal.x, 6022; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6023; EG-NEXT: BFE_INT T7.X, T0.Y, 0.0, literal.x, 6024; EG-NEXT: ASHR T5.Y, PV.X, literal.y, 6025; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 6026; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6027; EG-NEXT: LSHR T8.X, PV.W, literal.x, 6028; EG-NEXT: ASHR * T7.Y, PV.X, literal.y, 6029; EG-NEXT: 2(2.802597e-45), 31(4.344025e-44) 6030; 6031; CM-LABEL: global_sextload_v4i16_to_v4i64: 6032; CM: ; %bb.0: 6033; CM-NEXT: ALU 0, @8, KC0[CB0:0-32], KC1[] 6034; CM-NEXT: TEX 0 @6 6035; CM-NEXT: ALU 20, @9, KC0[CB0:0-32], KC1[] 6036; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T7, T8.X 6037; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T5, T6.X 6038; CM-NEXT: CF_END 6039; CM-NEXT: Fetch clause starting at 6: 6040; CM-NEXT: VTX_READ_64 T5.XY, T5.X, 0, #1 6041; CM-NEXT: ALU clause starting at 8: 6042; CM-NEXT: MOV * T5.X, KC0[2].Z, 6043; CM-NEXT: ALU clause starting at 9: 6044; CM-NEXT: MOV * T2.X, T5.X, 6045; CM-NEXT: MOV T3.X, T5.Y, 6046; CM-NEXT: MOV * T0.Y, PV.X, 6047; CM-NEXT: MOV * T0.Z, PV.X, 6048; CM-NEXT: ADD_INT T1.Z, KC0[2].Y, literal.x, 6049; CM-NEXT: ASHR * T5.W, PV.Z, literal.y, 6050; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6051; CM-NEXT: LSHR T6.X, PV.Z, literal.x, 6052; CM-NEXT: ASHR T5.Z, T0.Z, literal.y, 6053; CM-NEXT: ASHR * T7.W, T0.Y, literal.z, 6054; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 6055; CM-NEXT: 31(4.344025e-44), 0(0.000000e+00) 6056; CM-NEXT: BFE_INT T5.X, T0.Z, 0.0, literal.x, 6057; CM-NEXT: ASHR * T7.Z, T0.Y, literal.x, 6058; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6059; CM-NEXT: BFE_INT T7.X, T0.Y, 0.0, literal.x, 6060; CM-NEXT: ASHR * T5.Y, PV.X, literal.y, 6061; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6062; CM-NEXT: LSHR T8.X, KC0[2].Y, literal.x, 6063; CM-NEXT: ASHR * T7.Y, PV.X, literal.y, 6064; CM-NEXT: 2(2.802597e-45), 31(4.344025e-44) 6065 %load = load <4 x i16>, <4 x i16> addrspace(1)* %in 6066 %ext = sext <4 x i16> %load to <4 x i64> 6067 store <4 x i64> %ext, <4 x i64> addrspace(1)* %out 6068 ret void 6069} 6070 6071define amdgpu_kernel void @global_zextload_v8i16_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i16> addrspace(1)* %in) #0 { 6072; GCN-NOHSA-SI-LABEL: global_zextload_v8i16_to_v8i64: 6073; GCN-NOHSA-SI: ; %bb.0: 6074; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 6075; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 6076; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 6077; GCN-NOHSA-SI-NEXT: s_mov_b32 s12, 0xffff 6078; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s2 6079; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s3 6080; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 6081; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s6 6082; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s7 6083; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 6084; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v7, 0 6085; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v9, 0 6086; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v15, 0 6087; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v11, v9 6088; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v17, v9 6089; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v19, v9 6090; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v13, v9 6091; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v5, v9 6092; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 6093; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 6094; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 6095; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v18, 16, v1 6096; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v10, 16, v3 6097; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v14, 16, v2 6098; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v6, 16, v0 6099; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v4, s12, v0 6100; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v12, s12, v2 6101; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v16, s12, v1 6102; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v8, s12, v3 6103; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:48 6104; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:16 6105; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:32 6106; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 6107; GCN-NOHSA-SI-NEXT: s_endpgm 6108; 6109; GCN-HSA-LABEL: global_zextload_v8i16_to_v8i64: 6110; GCN-HSA: ; %bb.0: 6111; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 6112; GCN-HSA-NEXT: s_mov_b32 s4, 0xffff 6113; GCN-HSA-NEXT: v_mov_b32_e32 v12, 0 6114; GCN-HSA-NEXT: v_mov_b32_e32 v14, v12 6115; GCN-HSA-NEXT: v_mov_b32_e32 v15, v12 6116; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 6117; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 6118; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 6119; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 6120; GCN-HSA-NEXT: s_add_u32 s2, s0, 48 6121; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6122; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 6123; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 6124; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 6125; GCN-HSA-NEXT: v_mov_b32_e32 v17, s1 6126; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6127; GCN-HSA-NEXT: v_mov_b32_e32 v16, s0 6128; GCN-HSA-NEXT: v_mov_b32_e32 v19, s3 6129; GCN-HSA-NEXT: s_add_u32 s0, s0, 32 6130; GCN-HSA-NEXT: v_mov_b32_e32 v8, v12 6131; GCN-HSA-NEXT: v_mov_b32_e32 v18, s2 6132; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 6133; GCN-HSA-NEXT: v_mov_b32_e32 v6, 0 6134; GCN-HSA-NEXT: v_mov_b32_e32 v10, 0 6135; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 6136; GCN-HSA-NEXT: v_lshrrev_b32_e32 v13, 16, v3 6137; GCN-HSA-NEXT: v_and_b32_e32 v11, s4, v3 6138; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[11:14] 6139; GCN-HSA-NEXT: v_mov_b32_e32 v4, v12 6140; GCN-HSA-NEXT: v_mov_b32_e32 v13, v12 6141; GCN-HSA-NEXT: v_lshrrev_b32_e32 v14, 16, v1 6142; GCN-HSA-NEXT: v_lshrrev_b32_e32 v5, 16, v0 6143; GCN-HSA-NEXT: v_and_b32_e32 v3, s4, v0 6144; GCN-HSA-NEXT: v_and_b32_e32 v12, s4, v1 6145; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 6146; GCN-HSA-NEXT: v_lshrrev_b32_e32 v9, 16, v2 6147; GCN-HSA-NEXT: v_and_b32_e32 v7, s4, v2 6148; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 6149; GCN-HSA-NEXT: flat_store_dwordx4 v[18:19], v[12:15] 6150; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[7:10] 6151; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[3:6] 6152; GCN-HSA-NEXT: s_endpgm 6153; 6154; GCN-NOHSA-VI-LABEL: global_zextload_v8i16_to_v8i64: 6155; GCN-NOHSA-VI: ; %bb.0: 6156; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 6157; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 6158; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 6159; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s2 6160; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s3 6161; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 6162; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s6 6163; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s7 6164; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 6165; GCN-NOHSA-VI-NEXT: s_mov_b32 s6, 0xffff 6166; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v19, 0 6167; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v17, 0 6168; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 6169; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 6170; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v7, 0 6171; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v11, 0 6172; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v15, 0 6173; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v13, v17 6174; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v9, v17 6175; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v5, v17 6176; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 6177; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v16, s6, v3 6178; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v18, 16, v3 6179; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v4, s6, v0 6180; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v6, 16, v0 6181; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v8, s6, v1 6182; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v10, 16, v1 6183; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v12, s6, v2 6184; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v14, 16, v2 6185; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:48 6186; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:32 6187; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:16 6188; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 6189; GCN-NOHSA-VI-NEXT: s_endpgm 6190; 6191; EG-LABEL: global_zextload_v8i16_to_v8i64: 6192; EG: ; %bb.0: 6193; EG-NEXT: ALU 0, @10, KC0[CB0:0-32], KC1[] 6194; EG-NEXT: TEX 0 @8 6195; EG-NEXT: ALU 30, @11, KC0[CB0:0-32], KC1[] 6196; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T14.X, 0 6197; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T13.X, 0 6198; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T10.XYZW, T12.X, 0 6199; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T11.X, 1 6200; EG-NEXT: CF_END 6201; EG-NEXT: Fetch clause starting at 8: 6202; EG-NEXT: VTX_READ_128 T7.XYZW, T7.X, 0, #1 6203; EG-NEXT: ALU clause starting at 10: 6204; EG-NEXT: MOV * T7.X, KC0[2].Z, 6205; EG-NEXT: ALU clause starting at 11: 6206; EG-NEXT: LSHR * T8.Z, T7.W, literal.x, 6207; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6208; EG-NEXT: AND_INT T8.X, T7.W, literal.x, 6209; EG-NEXT: MOV T8.Y, 0.0, 6210; EG-NEXT: LSHR T9.Z, T7.Z, literal.y, 6211; EG-NEXT: AND_INT * T9.X, T7.Z, literal.x, 6212; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6213; EG-NEXT: MOV T9.Y, 0.0, 6214; EG-NEXT: LSHR * T10.Z, T7.Y, literal.x, 6215; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6216; EG-NEXT: AND_INT T10.X, T7.Y, literal.x, 6217; EG-NEXT: MOV T10.Y, 0.0, 6218; EG-NEXT: LSHR T7.Z, T7.X, literal.y, 6219; EG-NEXT: AND_INT * T7.X, T7.X, literal.x, 6220; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6221; EG-NEXT: MOV T7.Y, 0.0, 6222; EG-NEXT: MOV T8.W, 0.0, 6223; EG-NEXT: MOV * T9.W, 0.0, 6224; EG-NEXT: MOV T10.W, 0.0, 6225; EG-NEXT: MOV * T7.W, 0.0, 6226; EG-NEXT: LSHR T11.X, KC0[2].Y, literal.x, 6227; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6228; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 6229; EG-NEXT: LSHR T12.X, PV.W, literal.x, 6230; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6231; EG-NEXT: 2(2.802597e-45), 32(4.484155e-44) 6232; EG-NEXT: LSHR T13.X, PV.W, literal.x, 6233; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6234; EG-NEXT: 2(2.802597e-45), 48(6.726233e-44) 6235; EG-NEXT: LSHR * T14.X, PV.W, literal.x, 6236; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 6237; 6238; CM-LABEL: global_zextload_v8i16_to_v8i64: 6239; CM: ; %bb.0: 6240; CM-NEXT: ALU 0, @10, KC0[CB0:0-32], KC1[] 6241; CM-NEXT: TEX 0 @8 6242; CM-NEXT: ALU 32, @11, KC0[CB0:0-32], KC1[] 6243; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T8, T14.X 6244; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T9, T13.X 6245; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T10, T12.X 6246; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T7, T11.X 6247; CM-NEXT: CF_END 6248; CM-NEXT: Fetch clause starting at 8: 6249; CM-NEXT: VTX_READ_128 T7.XYZW, T7.X, 0, #1 6250; CM-NEXT: ALU clause starting at 10: 6251; CM-NEXT: MOV * T7.X, KC0[2].Z, 6252; CM-NEXT: ALU clause starting at 11: 6253; CM-NEXT: LSHR * T8.Z, T7.X, literal.x, 6254; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6255; CM-NEXT: AND_INT T8.X, T7.X, literal.x, 6256; CM-NEXT: MOV T8.Y, 0.0, 6257; CM-NEXT: LSHR * T9.Z, T7.Y, literal.y, 6258; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6259; CM-NEXT: AND_INT T9.X, T7.Y, literal.x, 6260; CM-NEXT: MOV T9.Y, 0.0, 6261; CM-NEXT: LSHR * T10.Z, T7.Z, literal.y, 6262; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6263; CM-NEXT: AND_INT T10.X, T7.Z, literal.x, 6264; CM-NEXT: MOV T10.Y, 0.0, 6265; CM-NEXT: LSHR * T7.Z, T7.W, literal.y, 6266; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6267; CM-NEXT: AND_INT T7.X, T7.W, literal.x, 6268; CM-NEXT: MOV T7.Y, 0.0, 6269; CM-NEXT: MOV * T8.W, 0.0, 6270; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 6271; CM-NEXT: MOV * T9.W, 0.0, 6272; CM-NEXT: MOV * T10.W, 0.0, 6273; CM-NEXT: MOV * T7.W, 0.0, 6274; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 6275; CM-NEXT: 48(6.726233e-44), 0(0.000000e+00) 6276; CM-NEXT: LSHR T11.X, PV.W, literal.x, 6277; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6278; CM-NEXT: 2(2.802597e-45), 32(4.484155e-44) 6279; CM-NEXT: LSHR T12.X, PV.W, literal.x, 6280; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6281; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 6282; CM-NEXT: LSHR * T13.X, PV.W, literal.x, 6283; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 6284; CM-NEXT: LSHR * T14.X, KC0[2].Y, literal.x, 6285; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 6286 %load = load <8 x i16>, <8 x i16> addrspace(1)* %in 6287 %ext = zext <8 x i16> %load to <8 x i64> 6288 store <8 x i64> %ext, <8 x i64> addrspace(1)* %out 6289 ret void 6290} 6291 6292define amdgpu_kernel void @global_sextload_v8i16_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i16> addrspace(1)* %in) #0 { 6293; GCN-NOHSA-SI-LABEL: global_sextload_v8i16_to_v8i64: 6294; GCN-NOHSA-SI: ; %bb.0: 6295; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 6296; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 6297; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 6298; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s2 6299; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s3 6300; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 6301; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s6 6302; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s7 6303; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 6304; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 6305; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 6306; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 6307; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v5, v3 6308; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v7, 16, v2 6309; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v6, 16, v0 6310; GCN-NOHSA-SI-NEXT: v_bfe_i32 v4, v0, 0, 16 6311; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[10:11], v[0:1], 48 6312; GCN-NOHSA-SI-NEXT: v_bfe_i32 v12, v5, 0, 16 6313; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[14:15], v[2:3], 48 6314; GCN-NOHSA-SI-NEXT: v_bfe_i32 v8, v1, 0, 16 6315; GCN-NOHSA-SI-NEXT: v_bfe_i32 v0, v2, 0, 16 6316; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v5, 31, v4 6317; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 6318; GCN-NOHSA-SI-NEXT: v_bfe_i32 v6, v6, 0, 16 6319; GCN-NOHSA-SI-NEXT: v_bfe_i32 v2, v7, 0, 16 6320; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v9, 31, v8 6321; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v13, 31, v12 6322; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v7, 31, v6 6323; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v3, 31, v2 6324; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:48 6325; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:16 6326; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 6327; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 6328; GCN-NOHSA-SI-NEXT: s_endpgm 6329; 6330; GCN-HSA-LABEL: global_sextload_v8i16_to_v8i64: 6331; GCN-HSA: ; %bb.0: 6332; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 6333; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 6334; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 6335; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 6336; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 6337; GCN-HSA-NEXT: s_add_u32 s2, s0, 48 6338; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6339; GCN-HSA-NEXT: v_mov_b32_e32 v15, s3 6340; GCN-HSA-NEXT: v_mov_b32_e32 v14, s2 6341; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 6342; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6343; GCN-HSA-NEXT: v_mov_b32_e32 v13, s1 6344; GCN-HSA-NEXT: v_mov_b32_e32 v9, s3 6345; GCN-HSA-NEXT: v_mov_b32_e32 v12, s0 6346; GCN-HSA-NEXT: v_mov_b32_e32 v8, s2 6347; GCN-HSA-NEXT: s_add_u32 s0, s0, 32 6348; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 6349; GCN-HSA-NEXT: v_mov_b32_e32 v17, s1 6350; GCN-HSA-NEXT: v_mov_b32_e32 v16, s0 6351; GCN-HSA-NEXT: s_waitcnt vmcnt(0) 6352; GCN-HSA-NEXT: v_ashr_i64 v[6:7], v[0:1], 48 6353; GCN-HSA-NEXT: v_bfe_i32 v4, v1, 0, 16 6354; GCN-HSA-NEXT: v_mov_b32_e32 v11, v3 6355; GCN-HSA-NEXT: v_ashrrev_i32_e32 v5, 31, v4 6356; GCN-HSA-NEXT: v_lshrrev_b32_e32 v10, 16, v2 6357; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[4:7] 6358; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v0 6359; GCN-HSA-NEXT: v_bfe_i32 v4, v0, 0, 16 6360; GCN-HSA-NEXT: v_bfe_i32 v8, v2, 0, 16 6361; GCN-HSA-NEXT: v_ashr_i64 v[2:3], v[2:3], 48 6362; GCN-HSA-NEXT: v_bfe_i32 v0, v11, 0, 16 6363; GCN-HSA-NEXT: v_bfe_i32 v6, v1, 0, 16 6364; GCN-HSA-NEXT: v_bfe_i32 v10, v10, 0, 16 6365; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 31, v0 6366; GCN-HSA-NEXT: v_ashrrev_i32_e32 v5, 31, v4 6367; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 31, v8 6368; GCN-HSA-NEXT: v_ashrrev_i32_e32 v7, 31, v6 6369; GCN-HSA-NEXT: v_ashrrev_i32_e32 v11, 31, v10 6370; GCN-HSA-NEXT: flat_store_dwordx4 v[14:15], v[0:3] 6371; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[8:11] 6372; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[4:7] 6373; GCN-HSA-NEXT: s_endpgm 6374; 6375; GCN-NOHSA-VI-LABEL: global_sextload_v8i16_to_v8i64: 6376; GCN-NOHSA-VI: ; %bb.0: 6377; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 6378; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 6379; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 6380; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s2 6381; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s3 6382; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 6383; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s6 6384; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s7 6385; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 6386; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 6387; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 6388; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 6389; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v11, v3 6390; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v3, 16, v3 6391; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v5, 16, v0 6392; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v7, 16, v1 6393; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v10, 16, v2 6394; GCN-NOHSA-VI-NEXT: v_bfe_i32 v12, v11, 0, 16 6395; GCN-NOHSA-VI-NEXT: v_bfe_i32 v14, v3, 0, 16 6396; GCN-NOHSA-VI-NEXT: v_bfe_i32 v4, v0, 0, 16 6397; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v1, 0, 16 6398; GCN-NOHSA-VI-NEXT: v_bfe_i32 v6, v5, 0, 16 6399; GCN-NOHSA-VI-NEXT: v_bfe_i32 v8, v2, 0, 16 6400; GCN-NOHSA-VI-NEXT: v_bfe_i32 v2, v7, 0, 16 6401; GCN-NOHSA-VI-NEXT: v_bfe_i32 v10, v10, 0, 16 6402; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v13, 31, v12 6403; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v15, 31, v14 6404; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v5, 31, v4 6405; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 6406; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v9, 31, v8 6407; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v7, 31, v6 6408; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v3, 31, v2 6409; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v11, 31, v10 6410; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:48 6411; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:32 6412; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 6413; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 6414; GCN-NOHSA-VI-NEXT: s_endpgm 6415; 6416; EG-LABEL: global_sextload_v8i16_to_v8i64: 6417; EG: ; %bb.0: 6418; EG-NEXT: ALU 0, @10, KC0[CB0:0-32], KC1[] 6419; EG-NEXT: TEX 0 @8 6420; EG-NEXT: ALU 33, @11, KC0[CB0:0-32], KC1[] 6421; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T7.X, 0 6422; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T11.X, 0 6423; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T9.X, 0 6424; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T10.XYZW, T8.X, 1 6425; EG-NEXT: CF_END 6426; EG-NEXT: Fetch clause starting at 8: 6427; EG-NEXT: VTX_READ_128 T7.XYZW, T7.X, 0, #1 6428; EG-NEXT: ALU clause starting at 10: 6429; EG-NEXT: MOV * T7.X, KC0[2].Z, 6430; EG-NEXT: ALU clause starting at 11: 6431; EG-NEXT: LSHR T8.X, KC0[2].Y, literal.x, 6432; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6433; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 6434; EG-NEXT: LSHR T9.X, PV.W, literal.x, 6435; EG-NEXT: ADD_INT T0.W, KC0[2].Y, literal.y, 6436; EG-NEXT: ASHR * T10.W, T7.X, literal.z, 6437; EG-NEXT: 2(2.802597e-45), 32(4.484155e-44) 6438; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 6439; EG-NEXT: LSHR T11.X, PV.W, literal.x, 6440; EG-NEXT: ASHR T10.Z, T7.X, literal.y, 6441; EG-NEXT: ASHR * T12.W, T7.Y, literal.z, 6442; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 6443; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 6444; EG-NEXT: BFE_INT T10.X, T7.X, 0.0, literal.x, 6445; EG-NEXT: ASHR T12.Z, T7.Y, literal.x, 6446; EG-NEXT: ASHR * T13.W, T7.Z, literal.y, 6447; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6448; EG-NEXT: BFE_INT T12.X, T7.Y, 0.0, literal.x, 6449; EG-NEXT: ASHR T10.Y, PV.X, literal.y, 6450; EG-NEXT: ASHR T13.Z, T7.Z, literal.x, 6451; EG-NEXT: ASHR * T14.W, T7.W, literal.y, 6452; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6453; EG-NEXT: BFE_INT T13.X, T7.Z, 0.0, literal.x, 6454; EG-NEXT: ASHR T12.Y, PV.X, literal.y, 6455; EG-NEXT: ASHR * T14.Z, T7.W, literal.x, 6456; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6457; EG-NEXT: BFE_INT T14.X, T7.W, 0.0, literal.x, 6458; EG-NEXT: ASHR T13.Y, PV.X, literal.y, 6459; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 6460; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6461; EG-NEXT: 48(6.726233e-44), 0(0.000000e+00) 6462; EG-NEXT: LSHR T7.X, PV.W, literal.x, 6463; EG-NEXT: ASHR * T14.Y, PV.X, literal.y, 6464; EG-NEXT: 2(2.802597e-45), 31(4.344025e-44) 6465; 6466; CM-LABEL: global_sextload_v8i16_to_v8i64: 6467; CM: ; %bb.0: 6468; CM-NEXT: ALU 0, @10, KC0[CB0:0-32], KC1[] 6469; CM-NEXT: TEX 0 @8 6470; CM-NEXT: ALU 33, @11, KC0[CB0:0-32], KC1[] 6471; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T7, T14.X 6472; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T13, T11.X 6473; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T12, T9.X 6474; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T10, T8.X 6475; CM-NEXT: CF_END 6476; CM-NEXT: Fetch clause starting at 8: 6477; CM-NEXT: VTX_READ_128 T7.XYZW, T7.X, 0, #1 6478; CM-NEXT: ALU clause starting at 10: 6479; CM-NEXT: MOV * T7.X, KC0[2].Z, 6480; CM-NEXT: ALU clause starting at 11: 6481; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 6482; CM-NEXT: 48(6.726233e-44), 0(0.000000e+00) 6483; CM-NEXT: LSHR T8.X, PV.W, literal.x, 6484; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6485; CM-NEXT: 2(2.802597e-45), 32(4.484155e-44) 6486; CM-NEXT: LSHR T9.X, PV.W, literal.x, 6487; CM-NEXT: ADD_INT T0.Z, KC0[2].Y, literal.y, 6488; CM-NEXT: ASHR * T10.W, T7.W, literal.z, 6489; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 6490; CM-NEXT: 31(4.344025e-44), 0(0.000000e+00) 6491; CM-NEXT: LSHR T11.X, PV.Z, literal.x, 6492; CM-NEXT: ASHR T10.Z, T7.W, literal.y, 6493; CM-NEXT: ASHR * T12.W, T7.Z, literal.z, 6494; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 6495; CM-NEXT: 31(4.344025e-44), 0(0.000000e+00) 6496; CM-NEXT: BFE_INT T10.X, T7.W, 0.0, literal.x, 6497; CM-NEXT: ASHR T12.Z, T7.Z, literal.x, 6498; CM-NEXT: ASHR * T13.W, T7.Y, literal.y, 6499; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6500; CM-NEXT: BFE_INT T12.X, T7.Z, 0.0, literal.x, 6501; CM-NEXT: ASHR T10.Y, PV.X, literal.y, 6502; CM-NEXT: ASHR T13.Z, T7.Y, literal.x, 6503; CM-NEXT: ASHR * T7.W, T7.X, literal.y, 6504; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6505; CM-NEXT: BFE_INT T13.X, T7.Y, 0.0, literal.x, 6506; CM-NEXT: ASHR T12.Y, PV.X, literal.y, 6507; CM-NEXT: ASHR * T7.Z, T7.X, literal.x, 6508; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6509; CM-NEXT: BFE_INT T7.X, T7.X, 0.0, literal.x, 6510; CM-NEXT: ASHR * T13.Y, PV.X, literal.y, 6511; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 6512; CM-NEXT: LSHR T14.X, KC0[2].Y, literal.x, 6513; CM-NEXT: ASHR * T7.Y, PV.X, literal.y, 6514; CM-NEXT: 2(2.802597e-45), 31(4.344025e-44) 6515 %load = load <8 x i16>, <8 x i16> addrspace(1)* %in 6516 %ext = sext <8 x i16> %load to <8 x i64> 6517 store <8 x i64> %ext, <8 x i64> addrspace(1)* %out 6518 ret void 6519} 6520 6521define amdgpu_kernel void @global_zextload_v16i16_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i16> addrspace(1)* %in) #0 { 6522; GCN-NOHSA-SI-LABEL: global_zextload_v16i16_to_v16i64: 6523; GCN-NOHSA-SI: ; %bb.0: 6524; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 6525; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 6526; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 6527; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s2 6528; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s3 6529; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 6530; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s6 6531; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s7 6532; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 6533; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, 0xffff 6534; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 6535; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(1) 6536; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v10, 16, v1 6537; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v14, 16, v2 6538; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v18, 16, v0 6539; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v16, s0, v0 6540; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v12, s0, v2 6541; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v8, s0, v1 6542; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v2, 16, v3 6543; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v0, s0, v3 6544; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v20, 0 6545; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 6546; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v21, 16, v5 6547; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v25, 16, v6 6548; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v23, s0, v6 6549; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v6, 16, v4 6550; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v4, s0, v4 6551; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v28, 16, v7 6552; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v26, s0, v7 6553; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v19, s0, v5 6554; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v22, v20 6555; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v27, v20 6556; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v29, v20 6557; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, v20 6558; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, v20 6559; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v9, v20 6560; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v11, v20 6561; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v5, v20 6562; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v24, v20 6563; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v13, v20 6564; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v17, v20 6565; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 6566; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 6567; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[19:22], off, s[0:3], 0 offset:80 6568; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[26:29], off, s[0:3], 0 offset:112 6569; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(1) 6570; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v19, 0 6571; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v15, 0 6572; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6573; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v26, 0 6574; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v7, 0 6575; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 6576; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:16 6577; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:64 6578; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[23:26], off, s[0:3], 0 offset:96 6579; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:32 6580; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 6581; GCN-NOHSA-SI-NEXT: s_endpgm 6582; 6583; GCN-HSA-LABEL: global_zextload_v16i16_to_v16i64: 6584; GCN-HSA: ; %bb.0: 6585; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 6586; GCN-HSA-NEXT: s_mov_b32 s6, 0xffff 6587; GCN-HSA-NEXT: v_mov_b32_e32 v8, 0 6588; GCN-HSA-NEXT: v_mov_b32_e32 v10, v8 6589; GCN-HSA-NEXT: v_mov_b32_e32 v12, v8 6590; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 6591; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 6592; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 6593; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 6594; GCN-HSA-NEXT: s_add_u32 s2, s2, 16 6595; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0 6596; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 6597; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 6598; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5] 6599; GCN-HSA-NEXT: s_add_u32 s2, s0, 48 6600; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6601; GCN-HSA-NEXT: s_add_u32 s4, s0, 16 6602; GCN-HSA-NEXT: s_addc_u32 s5, s1, 0 6603; GCN-HSA-NEXT: v_mov_b32_e32 v14, s5 6604; GCN-HSA-NEXT: v_mov_b32_e32 v13, s4 6605; GCN-HSA-NEXT: s_add_u32 s4, s0, 0x50 6606; GCN-HSA-NEXT: s_addc_u32 s5, s1, 0 6607; GCN-HSA-NEXT: v_mov_b32_e32 v16, s3 6608; GCN-HSA-NEXT: v_mov_b32_e32 v15, s2 6609; GCN-HSA-NEXT: s_waitcnt vmcnt(1) 6610; GCN-HSA-NEXT: v_lshrrev_b32_e32 v11, 16, v1 6611; GCN-HSA-NEXT: v_and_b32_e32 v9, s6, v1 6612; GCN-HSA-NEXT: flat_store_dwordx4 v[13:14], v[9:12] 6613; GCN-HSA-NEXT: v_mov_b32_e32 v14, s5 6614; GCN-HSA-NEXT: v_mov_b32_e32 v13, s4 6615; GCN-HSA-NEXT: s_add_u32 s4, s0, 0x70 6616; GCN-HSA-NEXT: s_addc_u32 s5, s1, 0 6617; GCN-HSA-NEXT: s_waitcnt vmcnt(1) 6618; GCN-HSA-NEXT: v_lshrrev_b32_e32 v11, 16, v5 6619; GCN-HSA-NEXT: v_and_b32_e32 v9, s6, v5 6620; GCN-HSA-NEXT: s_add_u32 s2, s0, 32 6621; GCN-HSA-NEXT: flat_store_dwordx4 v[13:14], v[9:12] 6622; GCN-HSA-NEXT: v_mov_b32_e32 v14, s5 6623; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6624; GCN-HSA-NEXT: v_mov_b32_e32 v13, s4 6625; GCN-HSA-NEXT: v_lshrrev_b32_e32 v11, 16, v7 6626; GCN-HSA-NEXT: v_and_b32_e32 v9, s6, v7 6627; GCN-HSA-NEXT: v_mov_b32_e32 v18, s3 6628; GCN-HSA-NEXT: flat_store_dwordx4 v[13:14], v[9:12] 6629; GCN-HSA-NEXT: v_mov_b32_e32 v17, s2 6630; GCN-HSA-NEXT: v_lshrrev_b32_e32 v9, 16, v3 6631; GCN-HSA-NEXT: v_lshrrev_b32_e32 v13, 16, v2 6632; GCN-HSA-NEXT: v_and_b32_e32 v11, s6, v2 6633; GCN-HSA-NEXT: v_and_b32_e32 v7, s6, v3 6634; GCN-HSA-NEXT: s_add_u32 s2, s0, 64 6635; GCN-HSA-NEXT: v_mov_b32_e32 v14, 0 6636; GCN-HSA-NEXT: flat_store_dwordx4 v[15:16], v[7:10] 6637; GCN-HSA-NEXT: flat_store_dwordx4 v[17:18], v[11:14] 6638; GCN-HSA-NEXT: v_mov_b32_e32 v1, v8 6639; GCN-HSA-NEXT: v_mov_b32_e32 v7, v8 6640; GCN-HSA-NEXT: v_lshrrev_b32_e32 v8, 16, v4 6641; GCN-HSA-NEXT: v_lshrrev_b32_e32 v13, 16, v6 6642; GCN-HSA-NEXT: v_and_b32_e32 v11, s6, v6 6643; GCN-HSA-NEXT: v_and_b32_e32 v6, s6, v4 6644; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 6645; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6646; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 6647; GCN-HSA-NEXT: s_add_u32 s0, s0, 0x60 6648; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 6649; GCN-HSA-NEXT: v_mov_b32_e32 v3, v14 6650; GCN-HSA-NEXT: v_mov_b32_e32 v16, s3 6651; GCN-HSA-NEXT: v_lshrrev_b32_e32 v2, 16, v0 6652; GCN-HSA-NEXT: v_and_b32_e32 v0, s6, v0 6653; GCN-HSA-NEXT: v_mov_b32_e32 v18, s1 6654; GCN-HSA-NEXT: v_mov_b32_e32 v9, v14 6655; GCN-HSA-NEXT: v_mov_b32_e32 v15, s2 6656; GCN-HSA-NEXT: v_mov_b32_e32 v17, s0 6657; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 6658; GCN-HSA-NEXT: flat_store_dwordx4 v[15:16], v[6:9] 6659; GCN-HSA-NEXT: flat_store_dwordx4 v[17:18], v[11:14] 6660; GCN-HSA-NEXT: s_endpgm 6661; 6662; GCN-NOHSA-VI-LABEL: global_zextload_v16i16_to_v16i64: 6663; GCN-NOHSA-VI: ; %bb.0: 6664; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 6665; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 6666; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 6667; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s2 6668; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s3 6669; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 6670; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s6 6671; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s7 6672; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 6673; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 6674; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, 0xffff 6675; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v30, 0 6676; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v28, 0 6677; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 6678; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v25, v28 6679; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v21, v28 6680; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v17, v28 6681; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v13, v28 6682; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v9, v28 6683; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v11, 0 6684; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v15, 0 6685; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v19, 0 6686; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v23, 0 6687; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(1) 6688; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v8, s0, v0 6689; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v10, 16, v0 6690; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v12, s0, v1 6691; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, s0, v2 6692; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v16, s0, v3 6693; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v18, 16, v3 6694; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 6695; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v20, s0, v4 6696; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v24, s0, v5 6697; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v3, s0, v6 6698; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v27, s0, v7 6699; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v29, 16, v7 6700; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 6701; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v22, 16, v4 6702; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v26, 16, v5 6703; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v5, 16, v6 6704; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v4, v28 6705; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[27:30], off, s[0:3], 0 offset:112 6706; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v6, 0 6707; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v27, 0 6708; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v14, 16, v1 6709; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v2, 16, v2 6710; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, v28 6711; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[3:6], off, s[0:3], 0 offset:96 6712; GCN-NOHSA-VI-NEXT: s_nop 0 6713; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, 0 6714; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:80 6715; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[20:23], off, s[0:3], 0 offset:64 6716; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:48 6717; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 6718; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:16 6719; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 6720; GCN-NOHSA-VI-NEXT: s_endpgm 6721; 6722; EG-LABEL: global_zextload_v16i16_to_v16i64: 6723; EG: ; %bb.0: 6724; EG-NEXT: ALU 0, @16, KC0[CB0:0-32], KC1[] 6725; EG-NEXT: TEX 1 @12 6726; EG-NEXT: ALU 62, @17, KC0[CB0:0-32], KC1[] 6727; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T26.X, 0 6728; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T25.X, 0 6729; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T15.XYZW, T24.X, 0 6730; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T23.X, 0 6731; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T16.XYZW, T22.X, 0 6732; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T21.X, 0 6733; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T18.XYZW, T20.X, 0 6734; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T19.X, 1 6735; EG-NEXT: CF_END 6736; EG-NEXT: Fetch clause starting at 12: 6737; EG-NEXT: VTX_READ_128 T12.XYZW, T11.X, 16, #1 6738; EG-NEXT: VTX_READ_128 T11.XYZW, T11.X, 0, #1 6739; EG-NEXT: ALU clause starting at 16: 6740; EG-NEXT: MOV * T11.X, KC0[2].Z, 6741; EG-NEXT: ALU clause starting at 17: 6742; EG-NEXT: LSHR * T13.Z, T12.W, literal.x, 6743; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6744; EG-NEXT: AND_INT T13.X, T12.W, literal.x, 6745; EG-NEXT: MOV T13.Y, 0.0, 6746; EG-NEXT: LSHR T14.Z, T12.Z, literal.y, 6747; EG-NEXT: AND_INT * T14.X, T12.Z, literal.x, 6748; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6749; EG-NEXT: MOV T14.Y, 0.0, 6750; EG-NEXT: LSHR * T15.Z, T12.Y, literal.x, 6751; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6752; EG-NEXT: AND_INT T15.X, T12.Y, literal.x, 6753; EG-NEXT: MOV T15.Y, 0.0, 6754; EG-NEXT: LSHR T12.Z, T12.X, literal.y, 6755; EG-NEXT: AND_INT * T12.X, T12.X, literal.x, 6756; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6757; EG-NEXT: MOV T12.Y, 0.0, 6758; EG-NEXT: LSHR * T16.Z, T11.W, literal.x, 6759; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6760; EG-NEXT: AND_INT T16.X, T11.W, literal.x, 6761; EG-NEXT: MOV T16.Y, 0.0, 6762; EG-NEXT: LSHR T17.Z, T11.Z, literal.y, 6763; EG-NEXT: AND_INT * T17.X, T11.Z, literal.x, 6764; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6765; EG-NEXT: MOV T17.Y, 0.0, 6766; EG-NEXT: LSHR * T18.Z, T11.Y, literal.x, 6767; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6768; EG-NEXT: AND_INT T18.X, T11.Y, literal.x, 6769; EG-NEXT: MOV T18.Y, 0.0, 6770; EG-NEXT: LSHR T11.Z, T11.X, literal.y, 6771; EG-NEXT: AND_INT * T11.X, T11.X, literal.x, 6772; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6773; EG-NEXT: MOV T11.Y, 0.0, 6774; EG-NEXT: MOV T13.W, 0.0, 6775; EG-NEXT: MOV * T14.W, 0.0, 6776; EG-NEXT: MOV T15.W, 0.0, 6777; EG-NEXT: MOV * T12.W, 0.0, 6778; EG-NEXT: MOV T16.W, 0.0, 6779; EG-NEXT: MOV * T17.W, 0.0, 6780; EG-NEXT: MOV T18.W, 0.0, 6781; EG-NEXT: MOV * T11.W, 0.0, 6782; EG-NEXT: LSHR T19.X, KC0[2].Y, literal.x, 6783; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6784; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 6785; EG-NEXT: LSHR T20.X, PV.W, literal.x, 6786; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6787; EG-NEXT: 2(2.802597e-45), 32(4.484155e-44) 6788; EG-NEXT: LSHR T21.X, PV.W, literal.x, 6789; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6790; EG-NEXT: 2(2.802597e-45), 48(6.726233e-44) 6791; EG-NEXT: LSHR T22.X, PV.W, literal.x, 6792; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6793; EG-NEXT: 2(2.802597e-45), 64(8.968310e-44) 6794; EG-NEXT: LSHR T23.X, PV.W, literal.x, 6795; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6796; EG-NEXT: 2(2.802597e-45), 80(1.121039e-43) 6797; EG-NEXT: LSHR T24.X, PV.W, literal.x, 6798; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6799; EG-NEXT: 2(2.802597e-45), 96(1.345247e-43) 6800; EG-NEXT: LSHR T25.X, PV.W, literal.x, 6801; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6802; EG-NEXT: 2(2.802597e-45), 112(1.569454e-43) 6803; EG-NEXT: LSHR * T26.X, PV.W, literal.x, 6804; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 6805; 6806; CM-LABEL: global_zextload_v16i16_to_v16i64: 6807; CM: ; %bb.0: 6808; CM-NEXT: ALU 0, @16, KC0[CB0:0-32], KC1[] 6809; CM-NEXT: TEX 1 @12 6810; CM-NEXT: ALU 64, @17, KC0[CB0:0-32], KC1[] 6811; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T13, T26.X 6812; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T14, T25.X 6813; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T15, T24.X 6814; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T12, T23.X 6815; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T16, T22.X 6816; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T17, T21.X 6817; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T18, T20.X 6818; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T11, T19.X 6819; CM-NEXT: CF_END 6820; CM-NEXT: Fetch clause starting at 12: 6821; CM-NEXT: VTX_READ_128 T12.XYZW, T11.X, 0, #1 6822; CM-NEXT: VTX_READ_128 T11.XYZW, T11.X, 16, #1 6823; CM-NEXT: ALU clause starting at 16: 6824; CM-NEXT: MOV * T11.X, KC0[2].Z, 6825; CM-NEXT: ALU clause starting at 17: 6826; CM-NEXT: LSHR * T13.Z, T12.X, literal.x, 6827; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 6828; CM-NEXT: AND_INT T13.X, T12.X, literal.x, 6829; CM-NEXT: MOV T13.Y, 0.0, 6830; CM-NEXT: LSHR * T14.Z, T12.Y, literal.y, 6831; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6832; CM-NEXT: AND_INT T14.X, T12.Y, literal.x, 6833; CM-NEXT: MOV T14.Y, 0.0, 6834; CM-NEXT: LSHR * T15.Z, T12.Z, literal.y, 6835; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6836; CM-NEXT: AND_INT T15.X, T12.Z, literal.x, 6837; CM-NEXT: MOV T15.Y, 0.0, 6838; CM-NEXT: LSHR * T12.Z, T12.W, literal.y, 6839; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6840; CM-NEXT: AND_INT T12.X, T12.W, literal.x, 6841; CM-NEXT: MOV T12.Y, 0.0, 6842; CM-NEXT: LSHR * T16.Z, T11.X, literal.y, 6843; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6844; CM-NEXT: AND_INT T16.X, T11.X, literal.x, 6845; CM-NEXT: MOV T16.Y, 0.0, 6846; CM-NEXT: LSHR * T17.Z, T11.Y, literal.y, 6847; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6848; CM-NEXT: AND_INT T17.X, T11.Y, literal.x, 6849; CM-NEXT: MOV T17.Y, 0.0, 6850; CM-NEXT: LSHR * T18.Z, T11.Z, literal.y, 6851; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6852; CM-NEXT: AND_INT T18.X, T11.Z, literal.x, 6853; CM-NEXT: MOV T18.Y, 0.0, 6854; CM-NEXT: LSHR * T11.Z, T11.W, literal.y, 6855; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 6856; CM-NEXT: AND_INT T11.X, T11.W, literal.x, 6857; CM-NEXT: MOV T11.Y, 0.0, 6858; CM-NEXT: MOV * T13.W, 0.0, 6859; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 6860; CM-NEXT: MOV * T14.W, 0.0, 6861; CM-NEXT: MOV * T15.W, 0.0, 6862; CM-NEXT: MOV * T12.W, 0.0, 6863; CM-NEXT: MOV * T16.W, 0.0, 6864; CM-NEXT: MOV * T17.W, 0.0, 6865; CM-NEXT: MOV * T18.W, 0.0, 6866; CM-NEXT: MOV * T11.W, 0.0, 6867; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 6868; CM-NEXT: 112(1.569454e-43), 0(0.000000e+00) 6869; CM-NEXT: LSHR T19.X, PV.W, literal.x, 6870; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6871; CM-NEXT: 2(2.802597e-45), 96(1.345247e-43) 6872; CM-NEXT: LSHR T20.X, PV.W, literal.x, 6873; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6874; CM-NEXT: 2(2.802597e-45), 80(1.121039e-43) 6875; CM-NEXT: LSHR T21.X, PV.W, literal.x, 6876; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6877; CM-NEXT: 2(2.802597e-45), 64(8.968310e-44) 6878; CM-NEXT: LSHR T22.X, PV.W, literal.x, 6879; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6880; CM-NEXT: 2(2.802597e-45), 48(6.726233e-44) 6881; CM-NEXT: LSHR T23.X, PV.W, literal.x, 6882; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6883; CM-NEXT: 2(2.802597e-45), 32(4.484155e-44) 6884; CM-NEXT: LSHR T24.X, PV.W, literal.x, 6885; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 6886; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 6887; CM-NEXT: LSHR * T25.X, PV.W, literal.x, 6888; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 6889; CM-NEXT: LSHR * T26.X, KC0[2].Y, literal.x, 6890; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 6891 %load = load <16 x i16>, <16 x i16> addrspace(1)* %in 6892 %ext = zext <16 x i16> %load to <16 x i64> 6893 store <16 x i64> %ext, <16 x i64> addrspace(1)* %out 6894 ret void 6895} 6896 6897define amdgpu_kernel void @global_sextload_v16i16_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i16> addrspace(1)* %in) #0 { 6898; GCN-NOHSA-SI-LABEL: global_sextload_v16i16_to_v16i64: 6899; GCN-NOHSA-SI: ; %bb.0: 6900; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 6901; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 6902; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 6903; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s2 6904; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s3 6905; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 6906; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s6 6907; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s7 6908; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 6909; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 6910; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 6911; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 6912; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 6913; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v8, v7 6914; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v12, v3 6915; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v13, 16, v4 6916; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v14, 16, v2 6917; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v15, 16, v0 6918; GCN-NOHSA-SI-NEXT: v_bfe_i32 v8, v8, 0, 16 6919; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[10:11], v[6:7], 48 6920; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v9, 31, v8 6921; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:112 6922; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6923; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[9:10], v[4:5], 48 6924; GCN-NOHSA-SI-NEXT: v_bfe_i32 v7, v5, 0, 16 6925; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v8, 31, v7 6926; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[7:10], off, s[0:3], 0 offset:80 6927; GCN-NOHSA-SI-NEXT: v_bfe_i32 v5, v0, 0, 16 6928; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6929; GCN-NOHSA-SI-NEXT: v_bfe_i32 v7, v15, 0, 16 6930; GCN-NOHSA-SI-NEXT: v_bfe_i32 v8, v12, 0, 16 6931; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[10:11], v[2:3], 48 6932; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v9, 31, v8 6933; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:48 6934; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 6935; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[11:12], v[0:1], 48 6936; GCN-NOHSA-SI-NEXT: v_bfe_i32 v9, v1, 0, 16 6937; GCN-NOHSA-SI-NEXT: v_bfe_i32 v0, v2, 0, 16 6938; GCN-NOHSA-SI-NEXT: v_bfe_i32 v2, v14, 0, 16 6939; GCN-NOHSA-SI-NEXT: v_bfe_i32 v15, v13, 0, 16 6940; GCN-NOHSA-SI-NEXT: v_bfe_i32 v13, v4, 0, 16 6941; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v1, 16, v6 6942; GCN-NOHSA-SI-NEXT: v_bfe_i32 v17, v6, 0, 16 6943; GCN-NOHSA-SI-NEXT: v_bfe_i32 v19, v1, 0, 16 6944; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v6, 31, v5 6945; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 6946; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v14, 31, v13 6947; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v18, 31, v17 6948; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v10, 31, v9 6949; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v8, 31, v7 6950; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v3, 31, v2 6951; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v16, 31, v15 6952; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v20, 31, v19 6953; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[9:12], off, s[0:3], 0 offset:16 6954; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[17:20], off, s[0:3], 0 offset:96 6955; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[13:16], off, s[0:3], 0 offset:64 6956; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 6957; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[5:8], off, s[0:3], 0 6958; GCN-NOHSA-SI-NEXT: s_endpgm 6959; 6960; GCN-HSA-LABEL: global_sextload_v16i16_to_v16i64: 6961; GCN-HSA: ; %bb.0: 6962; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 6963; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 6964; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 6965; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 6966; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 6967; GCN-HSA-NEXT: s_add_u32 s2, s2, 16 6968; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0 6969; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 6970; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 6971; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5] 6972; GCN-HSA-NEXT: s_add_u32 s2, s0, 48 6973; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6974; GCN-HSA-NEXT: v_mov_b32_e32 v15, s3 6975; GCN-HSA-NEXT: v_mov_b32_e32 v14, s2 6976; GCN-HSA-NEXT: s_add_u32 s2, s0, 16 6977; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6978; GCN-HSA-NEXT: v_mov_b32_e32 v17, s3 6979; GCN-HSA-NEXT: v_mov_b32_e32 v16, s2 6980; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x70 6981; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6982; GCN-HSA-NEXT: v_mov_b32_e32 v19, s3 6983; GCN-HSA-NEXT: v_mov_b32_e32 v18, s2 6984; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x50 6985; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 6986; GCN-HSA-NEXT: v_mov_b32_e32 v13, s1 6987; GCN-HSA-NEXT: v_mov_b32_e32 v12, s0 6988; GCN-HSA-NEXT: s_waitcnt vmcnt(1) 6989; GCN-HSA-NEXT: v_ashr_i64 v[10:11], v[0:1], 48 6990; GCN-HSA-NEXT: v_bfe_i32 v8, v1, 0, 16 6991; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 31, v8 6992; GCN-HSA-NEXT: v_mov_b32_e32 v1, v3 6993; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[8:11] 6994; GCN-HSA-NEXT: v_mov_b32_e32 v17, s3 6995; GCN-HSA-NEXT: v_bfe_i32 v8, v1, 0, 16 6996; GCN-HSA-NEXT: v_ashr_i64 v[10:11], v[2:3], 48 6997; GCN-HSA-NEXT: v_mov_b32_e32 v16, s2 6998; GCN-HSA-NEXT: s_add_u32 s2, s0, 32 6999; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 31, v8 7000; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 7001; GCN-HSA-NEXT: flat_store_dwordx4 v[14:15], v[8:11] 7002; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v2 7003; GCN-HSA-NEXT: v_bfe_i32 v8, v2, 0, 16 7004; GCN-HSA-NEXT: v_lshrrev_b32_e32 v2, 16, v0 7005; GCN-HSA-NEXT: v_mov_b32_e32 v15, s3 7006; GCN-HSA-NEXT: v_bfe_i32 v0, v0, 0, 16 7007; GCN-HSA-NEXT: v_bfe_i32 v2, v2, 0, 16 7008; GCN-HSA-NEXT: v_mov_b32_e32 v14, s2 7009; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x60 7010; GCN-HSA-NEXT: v_bfe_i32 v10, v1, 0, 16 7011; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 31, v0 7012; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 31, v2 7013; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 7014; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 31, v8 7015; GCN-HSA-NEXT: v_ashrrev_i32_e32 v11, 31, v10 7016; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[0:3] 7017; GCN-HSA-NEXT: flat_store_dwordx4 v[14:15], v[8:11] 7018; GCN-HSA-NEXT: s_waitcnt vmcnt(4) 7019; GCN-HSA-NEXT: v_ashr_i64 v[2:3], v[4:5], 48 7020; GCN-HSA-NEXT: v_bfe_i32 v0, v5, 0, 16 7021; GCN-HSA-NEXT: s_add_u32 s0, s0, 64 7022; GCN-HSA-NEXT: v_mov_b32_e32 v11, v7 7023; GCN-HSA-NEXT: v_lshrrev_b32_e32 v8, 16, v6 7024; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 31, v0 7025; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 7026; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[0:3] 7027; GCN-HSA-NEXT: v_bfe_i32 v10, v8, 0, 16 7028; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v4 7029; GCN-HSA-NEXT: v_bfe_i32 v0, v4, 0, 16 7030; GCN-HSA-NEXT: v_bfe_i32 v8, v6, 0, 16 7031; GCN-HSA-NEXT: v_ashr_i64 v[6:7], v[6:7], 48 7032; GCN-HSA-NEXT: v_bfe_i32 v4, v11, 0, 16 7033; GCN-HSA-NEXT: v_mov_b32_e32 v15, s3 7034; GCN-HSA-NEXT: v_mov_b32_e32 v21, s1 7035; GCN-HSA-NEXT: v_bfe_i32 v2, v1, 0, 16 7036; GCN-HSA-NEXT: v_ashrrev_i32_e32 v5, 31, v4 7037; GCN-HSA-NEXT: v_mov_b32_e32 v14, s2 7038; GCN-HSA-NEXT: v_mov_b32_e32 v20, s0 7039; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 31, v0 7040; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 31, v8 7041; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 31, v2 7042; GCN-HSA-NEXT: v_ashrrev_i32_e32 v11, 31, v10 7043; GCN-HSA-NEXT: flat_store_dwordx4 v[18:19], v[4:7] 7044; GCN-HSA-NEXT: flat_store_dwordx4 v[14:15], v[8:11] 7045; GCN-HSA-NEXT: flat_store_dwordx4 v[20:21], v[0:3] 7046; GCN-HSA-NEXT: s_endpgm 7047; 7048; GCN-NOHSA-VI-LABEL: global_sextload_v16i16_to_v16i64: 7049; GCN-NOHSA-VI: ; %bb.0: 7050; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 7051; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 7052; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 7053; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s2 7054; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s3 7055; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 7056; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s6 7057; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s7 7058; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 7059; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 7060; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 7061; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 7062; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(1) 7063; GCN-NOHSA-VI-NEXT: v_bfe_i32 v8, v0, 0, 16 7064; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 7065; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v9, v7 7066; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v7, 16, v7 7067; GCN-NOHSA-VI-NEXT: v_bfe_i32 v9, v9, 0, 16 7068; GCN-NOHSA-VI-NEXT: v_bfe_i32 v11, v7, 0, 16 7069; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v10, 31, v9 7070; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 7071; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[9:12], off, s[0:3], 0 offset:112 7072; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v0, 16, v0 7073; GCN-NOHSA-VI-NEXT: v_bfe_i32 v9, v6, 0, 16 7074; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v6, 16, v6 7075; GCN-NOHSA-VI-NEXT: v_bfe_i32 v11, v6, 0, 16 7076; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v10, 31, v9 7077; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 7078; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[9:12], off, s[0:3], 0 offset:96 7079; GCN-NOHSA-VI-NEXT: s_nop 0 7080; GCN-NOHSA-VI-NEXT: v_bfe_i32 v9, v5, 0, 16 7081; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v5, 16, v5 7082; GCN-NOHSA-VI-NEXT: v_bfe_i32 v11, v5, 0, 16 7083; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v10, 31, v9 7084; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 7085; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[9:12], off, s[0:3], 0 offset:80 7086; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v5, 16, v2 7087; GCN-NOHSA-VI-NEXT: v_bfe_i32 v12, v1, 0, 16 7088; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v1, 16, v1 7089; GCN-NOHSA-VI-NEXT: v_bfe_i32 v14, v1, 0, 16 7090; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, v3 7091; GCN-NOHSA-VI-NEXT: v_bfe_i32 v16, v1, 0, 16 7092; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v1, 16, v4 7093; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v3, 16, v3 7094; GCN-NOHSA-VI-NEXT: v_bfe_i32 v4, v4, 0, 16 7095; GCN-NOHSA-VI-NEXT: v_bfe_i32 v6, v1, 0, 16 7096; GCN-NOHSA-VI-NEXT: v_bfe_i32 v10, v0, 0, 16 7097; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v2, 0, 16 7098; GCN-NOHSA-VI-NEXT: v_bfe_i32 v2, v5, 0, 16 7099; GCN-NOHSA-VI-NEXT: v_bfe_i32 v18, v3, 0, 16 7100; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v5, 31, v4 7101; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v7, 31, v6 7102; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v9, 31, v8 7103; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v13, 31, v12 7104; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 7105; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v11, 31, v10 7106; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v15, 31, v14 7107; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v3, 31, v2 7108; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v17, 31, v16 7109; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v19, 31, v18 7110; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:64 7111; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:48 7112; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32 7113; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:16 7114; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 7115; GCN-NOHSA-VI-NEXT: s_endpgm 7116; 7117; EG-LABEL: global_sextload_v16i16_to_v16i64: 7118; EG: ; %bb.0: 7119; EG-NEXT: ALU 0, @16, KC0[CB0:0-32], KC1[] 7120; EG-NEXT: TEX 1 @12 7121; EG-NEXT: ALU 65, @17, KC0[CB0:0-32], KC1[] 7122; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T26.XYZW, T12.X, 0 7123; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T20.X, 0 7124; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T18.X, 0 7125; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T17.X, 0 7126; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T16.X, 0 7127; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T22.XYZW, T15.X, 0 7128; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T14.X, 0 7129; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T13.X, 1 7130; EG-NEXT: CF_END 7131; EG-NEXT: Fetch clause starting at 12: 7132; EG-NEXT: VTX_READ_128 T12.XYZW, T11.X, 16, #1 7133; EG-NEXT: VTX_READ_128 T11.XYZW, T11.X, 0, #1 7134; EG-NEXT: ALU clause starting at 16: 7135; EG-NEXT: MOV * T11.X, KC0[2].Z, 7136; EG-NEXT: ALU clause starting at 17: 7137; EG-NEXT: LSHR T13.X, KC0[2].Y, literal.x, 7138; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7139; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 7140; EG-NEXT: LSHR T14.X, PV.W, literal.x, 7141; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7142; EG-NEXT: 2(2.802597e-45), 32(4.484155e-44) 7143; EG-NEXT: LSHR T15.X, PV.W, literal.x, 7144; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7145; EG-NEXT: 2(2.802597e-45), 48(6.726233e-44) 7146; EG-NEXT: LSHR T16.X, PV.W, literal.x, 7147; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7148; EG-NEXT: 2(2.802597e-45), 64(8.968310e-44) 7149; EG-NEXT: LSHR T17.X, PV.W, literal.x, 7150; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7151; EG-NEXT: 2(2.802597e-45), 80(1.121039e-43) 7152; EG-NEXT: LSHR T18.X, PV.W, literal.x, 7153; EG-NEXT: ADD_INT T0.W, KC0[2].Y, literal.y, 7154; EG-NEXT: ASHR * T19.W, T11.X, literal.z, 7155; EG-NEXT: 2(2.802597e-45), 96(1.345247e-43) 7156; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 7157; EG-NEXT: LSHR T20.X, PV.W, literal.x, 7158; EG-NEXT: ASHR T19.Z, T11.X, literal.y, 7159; EG-NEXT: ASHR * T21.W, T11.Y, literal.z, 7160; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 7161; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 7162; EG-NEXT: BFE_INT T19.X, T11.X, 0.0, literal.x, 7163; EG-NEXT: ASHR T21.Z, T11.Y, literal.x, 7164; EG-NEXT: ASHR * T22.W, T11.Z, literal.y, 7165; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7166; EG-NEXT: BFE_INT T21.X, T11.Y, 0.0, literal.x, 7167; EG-NEXT: ASHR T19.Y, PV.X, literal.y, 7168; EG-NEXT: ASHR T22.Z, T11.Z, literal.x, 7169; EG-NEXT: ASHR * T23.W, T11.W, literal.y, 7170; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7171; EG-NEXT: BFE_INT T22.X, T11.Z, 0.0, literal.x, 7172; EG-NEXT: ASHR T21.Y, PV.X, literal.y, 7173; EG-NEXT: ASHR T23.Z, T11.W, literal.x, 7174; EG-NEXT: ASHR * T24.W, T12.X, literal.y, 7175; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7176; EG-NEXT: BFE_INT T23.X, T11.W, 0.0, literal.x, 7177; EG-NEXT: ASHR T22.Y, PV.X, literal.y, 7178; EG-NEXT: ASHR T24.Z, T12.X, literal.x, 7179; EG-NEXT: ASHR * T11.W, T12.Y, literal.y, 7180; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7181; EG-NEXT: BFE_INT T24.X, T12.X, 0.0, literal.x, 7182; EG-NEXT: ASHR T23.Y, PV.X, literal.y, 7183; EG-NEXT: ASHR T11.Z, T12.Y, literal.x, 7184; EG-NEXT: ASHR * T25.W, T12.Z, literal.y, 7185; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7186; EG-NEXT: BFE_INT T11.X, T12.Y, 0.0, literal.x, 7187; EG-NEXT: ASHR T24.Y, PV.X, literal.y, 7188; EG-NEXT: ASHR T25.Z, T12.Z, literal.x, 7189; EG-NEXT: ASHR * T26.W, T12.W, literal.y, 7190; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7191; EG-NEXT: BFE_INT T25.X, T12.Z, 0.0, literal.x, 7192; EG-NEXT: ASHR T11.Y, PV.X, literal.y, 7193; EG-NEXT: ASHR * T26.Z, T12.W, literal.x, 7194; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7195; EG-NEXT: BFE_INT T26.X, T12.W, 0.0, literal.x, 7196; EG-NEXT: ASHR T25.Y, PV.X, literal.y, 7197; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 7198; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7199; EG-NEXT: 112(1.569454e-43), 0(0.000000e+00) 7200; EG-NEXT: LSHR T12.X, PV.W, literal.x, 7201; EG-NEXT: ASHR * T26.Y, PV.X, literal.y, 7202; EG-NEXT: 2(2.802597e-45), 31(4.344025e-44) 7203; 7204; CM-LABEL: global_sextload_v16i16_to_v16i64: 7205; CM: ; %bb.0: 7206; CM-NEXT: ALU 0, @16, KC0[CB0:0-32], KC1[] 7207; CM-NEXT: TEX 1 @12 7208; CM-NEXT: ALU 65, @17, KC0[CB0:0-32], KC1[] 7209; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T12, T26.X 7210; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T25, T20.X 7211; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T24, T18.X 7212; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T23, T17.X 7213; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T11, T16.X 7214; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T22, T15.X 7215; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T21, T14.X 7216; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T19, T13.X 7217; CM-NEXT: CF_END 7218; CM-NEXT: Fetch clause starting at 12: 7219; CM-NEXT: VTX_READ_128 T12.XYZW, T11.X, 0, #1 7220; CM-NEXT: VTX_READ_128 T11.XYZW, T11.X, 16, #1 7221; CM-NEXT: ALU clause starting at 16: 7222; CM-NEXT: MOV * T11.X, KC0[2].Z, 7223; CM-NEXT: ALU clause starting at 17: 7224; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 7225; CM-NEXT: 112(1.569454e-43), 0(0.000000e+00) 7226; CM-NEXT: LSHR T13.X, PV.W, literal.x, 7227; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7228; CM-NEXT: 2(2.802597e-45), 96(1.345247e-43) 7229; CM-NEXT: LSHR T14.X, PV.W, literal.x, 7230; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7231; CM-NEXT: 2(2.802597e-45), 80(1.121039e-43) 7232; CM-NEXT: LSHR T15.X, PV.W, literal.x, 7233; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7234; CM-NEXT: 2(2.802597e-45), 64(8.968310e-44) 7235; CM-NEXT: LSHR T16.X, PV.W, literal.x, 7236; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7237; CM-NEXT: 2(2.802597e-45), 48(6.726233e-44) 7238; CM-NEXT: LSHR T17.X, PV.W, literal.x, 7239; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7240; CM-NEXT: 2(2.802597e-45), 32(4.484155e-44) 7241; CM-NEXT: LSHR T18.X, PV.W, literal.x, 7242; CM-NEXT: ADD_INT T0.Z, KC0[2].Y, literal.y, 7243; CM-NEXT: ASHR * T19.W, T11.W, literal.z, 7244; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 7245; CM-NEXT: 31(4.344025e-44), 0(0.000000e+00) 7246; CM-NEXT: LSHR T20.X, PV.Z, literal.x, 7247; CM-NEXT: ASHR T19.Z, T11.W, literal.y, 7248; CM-NEXT: ASHR * T21.W, T11.Z, literal.z, 7249; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 7250; CM-NEXT: 31(4.344025e-44), 0(0.000000e+00) 7251; CM-NEXT: BFE_INT T19.X, T11.W, 0.0, literal.x, 7252; CM-NEXT: ASHR T21.Z, T11.Z, literal.x, 7253; CM-NEXT: ASHR * T22.W, T11.Y, literal.y, 7254; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7255; CM-NEXT: BFE_INT T21.X, T11.Z, 0.0, literal.x, 7256; CM-NEXT: ASHR T19.Y, PV.X, literal.y, 7257; CM-NEXT: ASHR T22.Z, T11.Y, literal.x, 7258; CM-NEXT: ASHR * T11.W, T11.X, literal.y, 7259; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7260; CM-NEXT: BFE_INT T22.X, T11.Y, 0.0, literal.x, 7261; CM-NEXT: ASHR T21.Y, PV.X, literal.y, 7262; CM-NEXT: ASHR T11.Z, T11.X, literal.x, 7263; CM-NEXT: ASHR * T23.W, T12.W, literal.y, 7264; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7265; CM-NEXT: BFE_INT T11.X, T11.X, 0.0, literal.x, 7266; CM-NEXT: ASHR T22.Y, PV.X, literal.y, 7267; CM-NEXT: ASHR T23.Z, T12.W, literal.x, 7268; CM-NEXT: ASHR * T24.W, T12.Z, literal.y, 7269; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7270; CM-NEXT: BFE_INT T23.X, T12.W, 0.0, literal.x, 7271; CM-NEXT: ASHR T11.Y, PV.X, literal.y, 7272; CM-NEXT: ASHR T24.Z, T12.Z, literal.x, 7273; CM-NEXT: ASHR * T25.W, T12.Y, literal.y, 7274; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7275; CM-NEXT: BFE_INT T24.X, T12.Z, 0.0, literal.x, 7276; CM-NEXT: ASHR T23.Y, PV.X, literal.y, 7277; CM-NEXT: ASHR T25.Z, T12.Y, literal.x, 7278; CM-NEXT: ASHR * T12.W, T12.X, literal.y, 7279; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7280; CM-NEXT: BFE_INT T25.X, T12.Y, 0.0, literal.x, 7281; CM-NEXT: ASHR T24.Y, PV.X, literal.y, 7282; CM-NEXT: ASHR * T12.Z, T12.X, literal.x, 7283; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7284; CM-NEXT: BFE_INT T12.X, T12.X, 0.0, literal.x, 7285; CM-NEXT: ASHR * T25.Y, PV.X, literal.y, 7286; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 7287; CM-NEXT: LSHR T26.X, KC0[2].Y, literal.x, 7288; CM-NEXT: ASHR * T12.Y, PV.X, literal.y, 7289; CM-NEXT: 2(2.802597e-45), 31(4.344025e-44) 7290 %load = load <16 x i16>, <16 x i16> addrspace(1)* %in 7291 %ext = sext <16 x i16> %load to <16 x i64> 7292 store <16 x i64> %ext, <16 x i64> addrspace(1)* %out 7293 ret void 7294} 7295 7296define amdgpu_kernel void @global_zextload_v32i16_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i16> addrspace(1)* %in) #0 { 7297; GCN-NOHSA-SI-LABEL: global_zextload_v32i16_to_v32i64: 7298; GCN-NOHSA-SI: ; %bb.0: 7299; GCN-NOHSA-SI-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD0 7300; GCN-NOHSA-SI-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD1 7301; GCN-NOHSA-SI-NEXT: s_mov_b32 s14, -1 7302; GCN-NOHSA-SI-NEXT: s_mov_b32 s15, 0xe8f000 7303; GCN-NOHSA-SI-NEXT: s_add_u32 s12, s12, s3 7304; GCN-NOHSA-SI-NEXT: s_addc_u32 s13, s13, 0 7305; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 7306; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 7307; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 7308; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, 0xffff 7309; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, 0 7310; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s2 7311; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s3 7312; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 7313; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s6 7314; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s7 7315; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[2:5], off, s[8:11], 0 7316; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[6:9], off, s[8:11], 0 offset:16 7317; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[10:13], off, s[8:11], 0 offset:32 7318; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[14:17], off, s[8:11], 0 offset:48 7319; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(3) 7320; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v23, 16, v3 7321; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v21, 16, v4 7322; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v20, 16, v2 7323; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v18, s0, v2 7324; GCN-NOHSA-SI-NEXT: buffer_store_dword v18, off, s[12:15], 0 offset:4 ; 4-byte Folded Spill 7325; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 7326; GCN-NOHSA-SI-NEXT: buffer_store_dword v19, off, s[12:15], 0 offset:8 ; 4-byte Folded Spill 7327; GCN-NOHSA-SI-NEXT: buffer_store_dword v20, off, s[12:15], 0 offset:12 ; 4-byte Folded Spill 7328; GCN-NOHSA-SI-NEXT: buffer_store_dword v21, off, s[12:15], 0 offset:16 ; 4-byte Folded Spill 7329; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(2) 7330; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v19, s0, v4 7331; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 7332; GCN-NOHSA-SI-NEXT: buffer_store_dword v19, off, s[12:15], 0 offset:20 ; 4-byte Folded Spill 7333; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 7334; GCN-NOHSA-SI-NEXT: buffer_store_dword v20, off, s[12:15], 0 offset:24 ; 4-byte Folded Spill 7335; GCN-NOHSA-SI-NEXT: buffer_store_dword v21, off, s[12:15], 0 offset:28 ; 4-byte Folded Spill 7336; GCN-NOHSA-SI-NEXT: buffer_store_dword v22, off, s[12:15], 0 offset:32 ; 4-byte Folded Spill 7337; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v4, s0, v3 7338; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v32, 16, v5 7339; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v30, s0, v5 7340; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v36, 16, v6 7341; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v34, s0, v6 7342; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v28, 16, v8 7343; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v26, s0, v8 7344; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v40, 16, v7 7345; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v38, s0, v7 7346; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v44, 16, v9 7347; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v42, s0, v9 7348; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v48, 16, v10 7349; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v46, s0, v10 7350; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v24, 16, v12 7351; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 7352; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v22, s0, v12 7353; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v52, 16, v11 7354; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v50, s0, v11 7355; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v56, 16, v13 7356; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v54, s0, v13 7357; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v2, 16, v17 7358; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v60, 16, v14 7359; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v58, s0, v14 7360; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v20, 16, v16 7361; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v18, s0, v16 7362; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v10, 16, v15 7363; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v8, s0, v15 7364; GCN-NOHSA-SI-NEXT: v_and_b32_e32 v0, s0, v17 7365; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, v1 7366; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v9, v1 7367; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v11, v1 7368; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v55, v1 7369; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v57, v1 7370; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v51, v1 7371; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v53, v1 7372; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v43, v1 7373; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v45, v1 7374; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v39, v1 7375; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v41, v1 7376; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v31, v1 7377; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v33, v1 7378; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v6, v23 7379; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v5, v1 7380; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v7, v1 7381; GCN-NOHSA-SI-NEXT: buffer_store_dword v4, off, s[12:15], 0 offset:36 ; 4-byte Folded Spill 7382; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 7383; GCN-NOHSA-SI-NEXT: buffer_store_dword v5, off, s[12:15], 0 offset:40 ; 4-byte Folded Spill 7384; GCN-NOHSA-SI-NEXT: buffer_store_dword v6, off, s[12:15], 0 offset:44 ; 4-byte Folded Spill 7385; GCN-NOHSA-SI-NEXT: buffer_store_dword v7, off, s[12:15], 0 offset:48 ; 4-byte Folded Spill 7386; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v19, v1 7387; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v59, v1 7388; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v23, v1 7389; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v47, v1 7390; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v27, v1 7391; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v35, v1 7392; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 7393; GCN-NOHSA-SI-NEXT: buffer_load_dword v4, off, s[12:15], 0 offset:20 ; 4-byte Folded Reload 7394; GCN-NOHSA-SI-NEXT: buffer_load_dword v5, off, s[12:15], 0 offset:24 ; 4-byte Folded Reload 7395; GCN-NOHSA-SI-NEXT: buffer_load_dword v6, off, s[12:15], 0 offset:28 ; 4-byte Folded Reload 7396; GCN-NOHSA-SI-NEXT: buffer_load_dword v7, off, s[12:15], 0 offset:32 ; 4-byte Folded Reload 7397; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 7398; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v5, v1 7399; GCN-NOHSA-SI-NEXT: buffer_load_dword v12, off, s[12:15], 0 offset:4 ; 4-byte Folded Reload 7400; GCN-NOHSA-SI-NEXT: buffer_load_dword v13, off, s[12:15], 0 offset:8 ; 4-byte Folded Reload 7401; GCN-NOHSA-SI-NEXT: buffer_load_dword v14, off, s[12:15], 0 offset:12 ; 4-byte Folded Reload 7402; GCN-NOHSA-SI-NEXT: buffer_load_dword v15, off, s[12:15], 0 offset:16 ; 4-byte Folded Reload 7403; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 7404; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v13, v1 7405; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 7406; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 7407; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240 7408; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v21, 0 7409; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v61, 0 7410; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v25, 0 7411; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 7412; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v0, v12 7413; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, v13 7414; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v2, v14 7415; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v3, 0 7416; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v7, 0 7417; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v37, 0 7418; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v29, 0 7419; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v49, 0 7420; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:208 7421; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[54:57], off, s[0:3], 0 offset:176 7422; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[50:53], off, s[0:3], 0 offset:144 7423; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[42:45], off, s[0:3], 0 offset:112 7424; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[38:41], off, s[0:3], 0 offset:80 7425; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[30:33], off, s[0:3], 0 offset:48 7426; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(5) 7427; GCN-NOHSA-SI-NEXT: buffer_load_dword v8, off, s[12:15], 0 offset:36 ; 4-byte Folded Reload 7428; GCN-NOHSA-SI-NEXT: buffer_load_dword v9, off, s[12:15], 0 offset:40 ; 4-byte Folded Reload 7429; GCN-NOHSA-SI-NEXT: buffer_load_dword v10, off, s[12:15], 0 offset:44 ; 4-byte Folded Reload 7430; GCN-NOHSA-SI-NEXT: buffer_load_dword v11, off, s[12:15], 0 offset:48 ; 4-byte Folded Reload 7431; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(0) 7432; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:16 7433; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[18:21], off, s[0:3], 0 offset:224 7434; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[58:61], off, s[0:3], 0 offset:192 7435; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[22:25], off, s[0:3], 0 offset:160 7436; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[46:49], off, s[0:3], 0 offset:128 7437; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[26:29], off, s[0:3], 0 offset:96 7438; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[34:37], off, s[0:3], 0 offset:64 7439; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:32 7440; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 7441; GCN-NOHSA-SI-NEXT: s_endpgm 7442; 7443; GCN-HSA-LABEL: global_zextload_v32i16_to_v32i64: 7444; GCN-HSA: ; %bb.0: 7445; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 7446; GCN-HSA-NEXT: s_mov_b32 s18, 0xffff 7447; GCN-HSA-NEXT: v_mov_b32_e32 v4, 0 7448; GCN-HSA-NEXT: v_mov_b32_e32 v6, v4 7449; GCN-HSA-NEXT: v_mov_b32_e32 v8, v4 7450; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 7451; GCN-HSA-NEXT: s_add_u32 s4, s2, 16 7452; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 7453; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 7454; GCN-HSA-NEXT: v_mov_b32_e32 v1, s5 7455; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 7456; GCN-HSA-NEXT: s_add_u32 s4, s2, 32 7457; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 7458; GCN-HSA-NEXT: v_mov_b32_e32 v10, s5 7459; GCN-HSA-NEXT: v_mov_b32_e32 v9, s4 7460; GCN-HSA-NEXT: flat_load_dwordx4 v[9:12], v[9:10] 7461; GCN-HSA-NEXT: v_mov_b32_e32 v14, s3 7462; GCN-HSA-NEXT: v_mov_b32_e32 v13, s2 7463; GCN-HSA-NEXT: s_add_u32 s2, s2, 48 7464; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0 7465; GCN-HSA-NEXT: v_mov_b32_e32 v18, s3 7466; GCN-HSA-NEXT: flat_load_dwordx4 v[13:16], v[13:14] 7467; GCN-HSA-NEXT: v_mov_b32_e32 v17, s2 7468; GCN-HSA-NEXT: flat_load_dwordx4 v[17:20], v[17:18] 7469; GCN-HSA-NEXT: s_add_u32 s4, s0, 48 7470; GCN-HSA-NEXT: s_addc_u32 s5, s1, 0 7471; GCN-HSA-NEXT: s_add_u32 s6, s0, 16 7472; GCN-HSA-NEXT: s_addc_u32 s7, s1, 0 7473; GCN-HSA-NEXT: s_add_u32 s8, s0, 0xf0 7474; GCN-HSA-NEXT: s_addc_u32 s9, s1, 0 7475; GCN-HSA-NEXT: s_add_u32 s10, s0, 0xd0 7476; GCN-HSA-NEXT: s_addc_u32 s11, s1, 0 7477; GCN-HSA-NEXT: s_add_u32 s12, s0, 0xb0 7478; GCN-HSA-NEXT: s_addc_u32 s13, s1, 0 7479; GCN-HSA-NEXT: s_add_u32 s14, s0, 0x90 7480; GCN-HSA-NEXT: s_addc_u32 s15, s1, 0 7481; GCN-HSA-NEXT: s_add_u32 s16, s0, 0x70 7482; GCN-HSA-NEXT: s_addc_u32 s17, s1, 0 7483; GCN-HSA-NEXT: v_mov_b32_e32 v22, s17 7484; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x50 7485; GCN-HSA-NEXT: v_mov_b32_e32 v21, s16 7486; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 7487; GCN-HSA-NEXT: s_waitcnt vmcnt(3) 7488; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v3 7489; GCN-HSA-NEXT: v_and_b32_e32 v5, s18, v3 7490; GCN-HSA-NEXT: flat_store_dwordx4 v[21:22], v[5:8] 7491; GCN-HSA-NEXT: v_mov_b32_e32 v22, s3 7492; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v1 7493; GCN-HSA-NEXT: v_and_b32_e32 v5, s18, v1 7494; GCN-HSA-NEXT: v_mov_b32_e32 v21, s2 7495; GCN-HSA-NEXT: flat_store_dwordx4 v[21:22], v[5:8] 7496; GCN-HSA-NEXT: v_mov_b32_e32 v22, s13 7497; GCN-HSA-NEXT: s_waitcnt vmcnt(4) 7498; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v12 7499; GCN-HSA-NEXT: v_and_b32_e32 v5, s18, v12 7500; GCN-HSA-NEXT: v_mov_b32_e32 v21, s12 7501; GCN-HSA-NEXT: flat_store_dwordx4 v[21:22], v[5:8] 7502; GCN-HSA-NEXT: v_mov_b32_e32 v22, s15 7503; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v10 7504; GCN-HSA-NEXT: v_and_b32_e32 v5, s18, v10 7505; GCN-HSA-NEXT: v_mov_b32_e32 v21, s14 7506; GCN-HSA-NEXT: flat_store_dwordx4 v[21:22], v[5:8] 7507; GCN-HSA-NEXT: v_mov_b32_e32 v22, s7 7508; GCN-HSA-NEXT: s_waitcnt vmcnt(5) 7509; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v14 7510; GCN-HSA-NEXT: v_and_b32_e32 v5, s18, v14 7511; GCN-HSA-NEXT: v_mov_b32_e32 v21, s6 7512; GCN-HSA-NEXT: flat_store_dwordx4 v[21:22], v[5:8] 7513; GCN-HSA-NEXT: s_add_u32 s2, s0, 32 7514; GCN-HSA-NEXT: s_waitcnt vmcnt(5) 7515; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v20 7516; GCN-HSA-NEXT: v_and_b32_e32 v5, s18, v20 7517; GCN-HSA-NEXT: v_mov_b32_e32 v21, s9 7518; GCN-HSA-NEXT: v_mov_b32_e32 v20, s8 7519; GCN-HSA-NEXT: flat_store_dwordx4 v[20:21], v[5:8] 7520; GCN-HSA-NEXT: v_mov_b32_e32 v21, s11 7521; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v18 7522; GCN-HSA-NEXT: v_and_b32_e32 v5, s18, v18 7523; GCN-HSA-NEXT: v_mov_b32_e32 v20, s10 7524; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 7525; GCN-HSA-NEXT: flat_store_dwordx4 v[20:21], v[5:8] 7526; GCN-HSA-NEXT: v_mov_b32_e32 v10, 0 7527; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v13 7528; GCN-HSA-NEXT: v_and_b32_e32 v5, s18, v13 7529; GCN-HSA-NEXT: v_mov_b32_e32 v13, s1 7530; GCN-HSA-NEXT: s_add_u32 s6, s0, 0xe0 7531; GCN-HSA-NEXT: v_mov_b32_e32 v8, v10 7532; GCN-HSA-NEXT: v_mov_b32_e32 v12, s0 7533; GCN-HSA-NEXT: s_addc_u32 s7, s1, 0 7534; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[5:8] 7535; GCN-HSA-NEXT: v_mov_b32_e32 v13, s7 7536; GCN-HSA-NEXT: v_mov_b32_e32 v12, s6 7537; GCN-HSA-NEXT: s_add_u32 s6, s0, 0xc0 7538; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v19 7539; GCN-HSA-NEXT: v_and_b32_e32 v5, s18, v19 7540; GCN-HSA-NEXT: s_addc_u32 s7, s1, 0 7541; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[5:8] 7542; GCN-HSA-NEXT: v_mov_b32_e32 v13, s7 7543; GCN-HSA-NEXT: v_mov_b32_e32 v12, s6 7544; GCN-HSA-NEXT: s_add_u32 s6, s0, 0xa0 7545; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v17 7546; GCN-HSA-NEXT: v_and_b32_e32 v5, s18, v17 7547; GCN-HSA-NEXT: s_addc_u32 s7, s1, 0 7548; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[5:8] 7549; GCN-HSA-NEXT: v_lshrrev_b32_e32 v13, 16, v0 7550; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v11 7551; GCN-HSA-NEXT: v_and_b32_e32 v5, s18, v11 7552; GCN-HSA-NEXT: v_mov_b32_e32 v12, s7 7553; GCN-HSA-NEXT: v_mov_b32_e32 v11, s6 7554; GCN-HSA-NEXT: s_add_u32 s6, s0, 0x80 7555; GCN-HSA-NEXT: s_addc_u32 s7, s1, 0 7556; GCN-HSA-NEXT: flat_store_dwordx4 v[11:12], v[5:8] 7557; GCN-HSA-NEXT: v_mov_b32_e32 v12, s7 7558; GCN-HSA-NEXT: v_lshrrev_b32_e32 v7, 16, v9 7559; GCN-HSA-NEXT: v_and_b32_e32 v5, s18, v9 7560; GCN-HSA-NEXT: v_mov_b32_e32 v11, s6 7561; GCN-HSA-NEXT: flat_store_dwordx4 v[11:12], v[5:8] 7562; GCN-HSA-NEXT: v_and_b32_e32 v11, s18, v0 7563; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 7564; GCN-HSA-NEXT: v_lshrrev_b32_e32 v5, 16, v16 7565; GCN-HSA-NEXT: v_and_b32_e32 v3, s18, v16 7566; GCN-HSA-NEXT: v_mov_b32_e32 v1, s5 7567; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[3:6] 7568; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 7569; GCN-HSA-NEXT: v_lshrrev_b32_e32 v9, 16, v15 7570; GCN-HSA-NEXT: v_and_b32_e32 v7, s18, v15 7571; GCN-HSA-NEXT: v_mov_b32_e32 v8, v4 7572; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 7573; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x60 7574; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[7:10] 7575; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 7576; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 7577; GCN-HSA-NEXT: v_lshrrev_b32_e32 v19, 16, v2 7578; GCN-HSA-NEXT: v_and_b32_e32 v17, s18, v2 7579; GCN-HSA-NEXT: v_mov_b32_e32 v18, v4 7580; GCN-HSA-NEXT: v_mov_b32_e32 v20, v10 7581; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 7582; GCN-HSA-NEXT: s_add_u32 s0, s0, 64 7583; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[17:20] 7584; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 7585; GCN-HSA-NEXT: v_mov_b32_e32 v0, s0 7586; GCN-HSA-NEXT: v_mov_b32_e32 v12, v4 7587; GCN-HSA-NEXT: v_mov_b32_e32 v14, v10 7588; GCN-HSA-NEXT: v_mov_b32_e32 v1, s1 7589; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[11:14] 7590; GCN-HSA-NEXT: s_endpgm 7591; 7592; GCN-NOHSA-VI-LABEL: global_zextload_v32i16_to_v32i64: 7593; GCN-NOHSA-VI: ; %bb.0: 7594; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 7595; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 7596; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 7597; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s2 7598; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s3 7599; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 7600; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s6 7601; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s7 7602; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[1:4], off, s[8:11], 0 7603; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[5:8], off, s[8:11], 0 offset:16 7604; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[31:34], off, s[8:11], 0 offset:32 7605; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[35:38], off, s[8:11], 0 offset:48 7606; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, 0xffff 7607; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v57, 0 7608; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 7609; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v12, 0 7610; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v16, 0 7611; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v24, 0 7612; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v20, 0 7613; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(3) 7614; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v0, s0, v2 7615; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v9, s0, v1 7616; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(0) 7617; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v48, s0, v36 7618; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v50, 16, v36 7619; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v54, s0, v38 7620; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v56, 16, v38 7621; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v36, s0, v37 7622; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v38, 16, v37 7623; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v37, 0 7624; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v13, s0, v4 7625; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v15, 16, v4 7626; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v17, s0, v3 7627; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v4, s0, v6 7628; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v21, s0, v5 7629; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v25, s0, v8 7630; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v28, s0, v7 7631; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v39, s0, v32 7632; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v41, 16, v32 7633; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v42, s0, v31 7634; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v32, s0, v34 7635; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v45, s0, v33 7636; GCN-NOHSA-VI-NEXT: v_and_b32_e32 v51, s0, v35 7637; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v55, v37 7638; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 7639; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v53, 16, v35 7640; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[54:57], off, s[0:3], 0 offset:240 7641; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v52, v37 7642; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v54, 0 7643; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[51:54], off, s[0:3], 0 offset:192 7644; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v49, v37 7645; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v51, 0 7646; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v47, 16, v33 7647; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[48:51], off, s[0:3], 0 offset:208 7648; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v46, v37 7649; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v48, 0 7650; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v30, 16, v7 7651; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v44, 16, v31 7652; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[45:48], off, s[0:3], 0 offset:160 7653; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v43, v37 7654; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v45, 0 7655; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v31, 0 7656; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v29, v37 7657; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v2, 16, v2 7658; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v11, 16, v1 7659; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v19, 16, v3 7660; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v27, 16, v8 7661; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v34, 16, v34 7662; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v35, 0 7663; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v33, v37 7664; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[42:45], off, s[0:3], 0 offset:128 7665; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v40, v37 7666; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v42, 0 7667; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:96 7668; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v3, 0 7669; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v28, 0 7670; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v26, v37 7671; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v14, v37 7672; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v10, v37 7673; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v1, v37 7674; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v6, 16, v6 7675; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v23, 16, v5 7676; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[32:35], off, s[0:3], 0 offset:176 7677; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[39:42], off, s[0:3], 0 offset:144 7678; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v7, 0 7679; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v39, 0 7680; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v22, v37 7681; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v5, v37 7682; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v18, v37 7683; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[25:28], off, s[0:3], 0 offset:112 7684; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[21:24], off, s[0:3], 0 offset:64 7685; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:80 7686; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[36:39], off, s[0:3], 0 offset:224 7687; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[17:20], off, s[0:3], 0 offset:32 7688; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[13:16], off, s[0:3], 0 offset:48 7689; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[9:12], off, s[0:3], 0 7690; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16 7691; GCN-NOHSA-VI-NEXT: s_endpgm 7692; 7693; EG-LABEL: global_zextload_v32i16_to_v32i64: 7694; EG: ; %bb.0: 7695; EG-NEXT: ALU 0, @30, KC0[CB0:0-32], KC1[] 7696; EG-NEXT: TEX 2 @22 7697; EG-NEXT: ALU 33, @31, KC0[], KC1[] 7698; EG-NEXT: TEX 0 @28 7699; EG-NEXT: ALU 93, @65, KC0[CB0:0-32], KC1[] 7700; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T50.X, 0 7701; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T49.X, 0 7702; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T48.X, 0 7703; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T47.X, 0 7704; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T26.XYZW, T46.X, 0 7705; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T27.XYZW, T45.X, 0 7706; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T28.XYZW, T44.X, 0 7707; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T22.XYZW, T43.X, 0 7708; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T42.X, 0 7709; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T30.XYZW, T41.X, 0 7710; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T31.XYZW, T40.X, 0 7711; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T39.X, 0 7712; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T32.XYZW, T38.X, 0 7713; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T33.XYZW, T37.X, 0 7714; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T34.XYZW, T36.X, 0 7715; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T29.XYZW, T35.X, 1 7716; EG-NEXT: CF_END 7717; EG-NEXT: Fetch clause starting at 22: 7718; EG-NEXT: VTX_READ_128 T20.XYZW, T19.X, 48, #1 7719; EG-NEXT: VTX_READ_128 T21.XYZW, T19.X, 16, #1 7720; EG-NEXT: VTX_READ_128 T22.XYZW, T19.X, 32, #1 7721; EG-NEXT: Fetch clause starting at 28: 7722; EG-NEXT: VTX_READ_128 T29.XYZW, T19.X, 0, #1 7723; EG-NEXT: ALU clause starting at 30: 7724; EG-NEXT: MOV * T19.X, KC0[2].Z, 7725; EG-NEXT: ALU clause starting at 31: 7726; EG-NEXT: LSHR * T23.Z, T20.Z, literal.x, 7727; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 7728; EG-NEXT: AND_INT T23.X, T20.Z, literal.x, 7729; EG-NEXT: MOV T23.Y, 0.0, 7730; EG-NEXT: LSHR T24.Z, T20.W, literal.y, 7731; EG-NEXT: AND_INT * T24.X, T20.W, literal.x, 7732; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7733; EG-NEXT: MOV T24.Y, 0.0, 7734; EG-NEXT: LSHR * T25.Z, T20.X, literal.x, 7735; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 7736; EG-NEXT: AND_INT T25.X, T20.X, literal.x, 7737; EG-NEXT: MOV T25.Y, 0.0, 7738; EG-NEXT: LSHR T20.Z, T20.Y, literal.y, 7739; EG-NEXT: AND_INT * T20.X, T20.Y, literal.x, 7740; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7741; EG-NEXT: MOV T20.Y, 0.0, 7742; EG-NEXT: LSHR * T26.Z, T22.Z, literal.x, 7743; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 7744; EG-NEXT: AND_INT T26.X, T22.Z, literal.x, 7745; EG-NEXT: MOV T26.Y, 0.0, 7746; EG-NEXT: LSHR T27.Z, T22.W, literal.y, 7747; EG-NEXT: AND_INT * T27.X, T22.W, literal.x, 7748; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7749; EG-NEXT: MOV T27.Y, 0.0, 7750; EG-NEXT: LSHR * T28.Z, T22.X, literal.x, 7751; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 7752; EG-NEXT: AND_INT T28.X, T22.X, literal.x, 7753; EG-NEXT: MOV T28.Y, 0.0, 7754; EG-NEXT: LSHR T22.Z, T22.Y, literal.y, 7755; EG-NEXT: AND_INT * T22.X, T22.Y, literal.x, 7756; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7757; EG-NEXT: MOV T22.Y, 0.0, 7758; EG-NEXT: LSHR * T19.Z, T21.Z, literal.x, 7759; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 7760; EG-NEXT: ALU clause starting at 65: 7761; EG-NEXT: AND_INT T19.X, T21.Z, literal.x, 7762; EG-NEXT: MOV T19.Y, 0.0, 7763; EG-NEXT: LSHR T30.Z, T21.W, literal.y, 7764; EG-NEXT: AND_INT * T30.X, T21.W, literal.x, 7765; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7766; EG-NEXT: MOV T30.Y, 0.0, 7767; EG-NEXT: LSHR * T31.Z, T21.X, literal.x, 7768; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 7769; EG-NEXT: AND_INT T31.X, T21.X, literal.x, 7770; EG-NEXT: MOV T31.Y, 0.0, 7771; EG-NEXT: LSHR T21.Z, T21.Y, literal.y, 7772; EG-NEXT: AND_INT * T21.X, T21.Y, literal.x, 7773; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7774; EG-NEXT: MOV T21.Y, 0.0, 7775; EG-NEXT: LSHR * T32.Z, T29.Z, literal.x, 7776; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 7777; EG-NEXT: AND_INT T32.X, T29.Z, literal.x, 7778; EG-NEXT: MOV T32.Y, 0.0, 7779; EG-NEXT: LSHR T33.Z, T29.W, literal.y, 7780; EG-NEXT: AND_INT * T33.X, T29.W, literal.x, 7781; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7782; EG-NEXT: MOV T33.Y, 0.0, 7783; EG-NEXT: LSHR * T34.Z, T29.X, literal.x, 7784; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 7785; EG-NEXT: AND_INT T34.X, T29.X, literal.x, 7786; EG-NEXT: MOV T34.Y, 0.0, 7787; EG-NEXT: LSHR T29.Z, T29.Y, literal.y, 7788; EG-NEXT: AND_INT * T29.X, T29.Y, literal.x, 7789; EG-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7790; EG-NEXT: MOV T29.Y, 0.0, 7791; EG-NEXT: MOV T23.W, 0.0, 7792; EG-NEXT: MOV * T24.W, 0.0, 7793; EG-NEXT: MOV T25.W, 0.0, 7794; EG-NEXT: MOV * T20.W, 0.0, 7795; EG-NEXT: MOV T26.W, 0.0, 7796; EG-NEXT: MOV * T27.W, 0.0, 7797; EG-NEXT: MOV T28.W, 0.0, 7798; EG-NEXT: MOV * T22.W, 0.0, 7799; EG-NEXT: MOV T19.W, 0.0, 7800; EG-NEXT: MOV * T30.W, 0.0, 7801; EG-NEXT: MOV T31.W, 0.0, 7802; EG-NEXT: MOV * T21.W, 0.0, 7803; EG-NEXT: MOV T32.W, 0.0, 7804; EG-NEXT: MOV * T33.W, 0.0, 7805; EG-NEXT: MOV T34.W, 0.0, 7806; EG-NEXT: MOV * T29.W, 0.0, 7807; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 7808; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 7809; EG-NEXT: LSHR T35.X, PV.W, literal.x, 7810; EG-NEXT: LSHR * T36.X, KC0[2].Y, literal.x, 7811; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 7812; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 7813; EG-NEXT: 48(6.726233e-44), 0(0.000000e+00) 7814; EG-NEXT: LSHR T37.X, PV.W, literal.x, 7815; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7816; EG-NEXT: 2(2.802597e-45), 32(4.484155e-44) 7817; EG-NEXT: LSHR T38.X, PV.W, literal.x, 7818; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7819; EG-NEXT: 2(2.802597e-45), 80(1.121039e-43) 7820; EG-NEXT: LSHR T39.X, PV.W, literal.x, 7821; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7822; EG-NEXT: 2(2.802597e-45), 64(8.968310e-44) 7823; EG-NEXT: LSHR T40.X, PV.W, literal.x, 7824; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7825; EG-NEXT: 2(2.802597e-45), 112(1.569454e-43) 7826; EG-NEXT: LSHR T41.X, PV.W, literal.x, 7827; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7828; EG-NEXT: 2(2.802597e-45), 96(1.345247e-43) 7829; EG-NEXT: LSHR T42.X, PV.W, literal.x, 7830; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7831; EG-NEXT: 2(2.802597e-45), 144(2.017870e-43) 7832; EG-NEXT: LSHR T43.X, PV.W, literal.x, 7833; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7834; EG-NEXT: 2(2.802597e-45), 128(1.793662e-43) 7835; EG-NEXT: LSHR T44.X, PV.W, literal.x, 7836; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7837; EG-NEXT: 2(2.802597e-45), 176(2.466285e-43) 7838; EG-NEXT: LSHR T45.X, PV.W, literal.x, 7839; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7840; EG-NEXT: 2(2.802597e-45), 160(2.242078e-43) 7841; EG-NEXT: LSHR T46.X, PV.W, literal.x, 7842; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7843; EG-NEXT: 2(2.802597e-45), 208(2.914701e-43) 7844; EG-NEXT: LSHR T47.X, PV.W, literal.x, 7845; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7846; EG-NEXT: 2(2.802597e-45), 192(2.690493e-43) 7847; EG-NEXT: LSHR T48.X, PV.W, literal.x, 7848; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7849; EG-NEXT: 2(2.802597e-45), 240(3.363116e-43) 7850; EG-NEXT: LSHR T49.X, PV.W, literal.x, 7851; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7852; EG-NEXT: 2(2.802597e-45), 224(3.138909e-43) 7853; EG-NEXT: LSHR * T50.X, PV.W, literal.x, 7854; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 7855; 7856; CM-LABEL: global_zextload_v32i16_to_v32i64: 7857; CM: ; %bb.0: 7858; CM-NEXT: ALU 0, @30, KC0[CB0:0-32], KC1[] 7859; CM-NEXT: TEX 2 @22 7860; CM-NEXT: ALU 33, @31, KC0[], KC1[] 7861; CM-NEXT: TEX 0 @28 7862; CM-NEXT: ALU 94, @65, KC0[CB0:0-32], KC1[] 7863; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T23, T50.X 7864; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T24, T49.X 7865; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T25, T48.X 7866; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T26, T47.X 7867; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T20, T46.X 7868; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T27, T45.X 7869; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T28, T44.X 7870; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T29, T43.X 7871; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T19, T42.X 7872; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T30, T41.X 7873; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T31, T40.X 7874; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T32, T39.X 7875; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T21, T38.X 7876; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T33, T37.X 7877; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T34, T36.X 7878; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T35, T22.X 7879; CM-NEXT: CF_END 7880; CM-NEXT: Fetch clause starting at 22: 7881; CM-NEXT: VTX_READ_128 T20.XYZW, T19.X, 0, #1 7882; CM-NEXT: VTX_READ_128 T21.XYZW, T19.X, 32, #1 7883; CM-NEXT: VTX_READ_128 T22.XYZW, T19.X, 16, #1 7884; CM-NEXT: Fetch clause starting at 28: 7885; CM-NEXT: VTX_READ_128 T22.XYZW, T19.X, 48, #1 7886; CM-NEXT: ALU clause starting at 30: 7887; CM-NEXT: MOV * T19.X, KC0[2].Z, 7888; CM-NEXT: ALU clause starting at 31: 7889; CM-NEXT: LSHR * T23.Z, T20.Y, literal.x, 7890; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 7891; CM-NEXT: AND_INT T23.X, T20.Y, literal.x, 7892; CM-NEXT: MOV T23.Y, 0.0, 7893; CM-NEXT: LSHR * T24.Z, T20.X, literal.y, 7894; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7895; CM-NEXT: AND_INT T24.X, T20.X, literal.x, 7896; CM-NEXT: MOV T24.Y, 0.0, 7897; CM-NEXT: LSHR * T25.Z, T20.W, literal.y, 7898; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7899; CM-NEXT: AND_INT T25.X, T20.W, literal.x, 7900; CM-NEXT: MOV T25.Y, 0.0, 7901; CM-NEXT: LSHR * T26.Z, T20.Z, literal.y, 7902; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7903; CM-NEXT: AND_INT T26.X, T20.Z, literal.x, 7904; CM-NEXT: MOV T26.Y, 0.0, 7905; CM-NEXT: LSHR * T20.Z, T22.Y, literal.y, 7906; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7907; CM-NEXT: AND_INT T20.X, T22.Y, literal.x, 7908; CM-NEXT: MOV T20.Y, 0.0, 7909; CM-NEXT: LSHR * T27.Z, T22.X, literal.y, 7910; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7911; CM-NEXT: AND_INT T27.X, T22.X, literal.x, 7912; CM-NEXT: MOV T27.Y, 0.0, 7913; CM-NEXT: LSHR * T28.Z, T22.W, literal.y, 7914; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7915; CM-NEXT: AND_INT T28.X, T22.W, literal.x, 7916; CM-NEXT: MOV T28.Y, 0.0, 7917; CM-NEXT: LSHR * T29.Z, T22.Z, literal.y, 7918; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7919; CM-NEXT: AND_INT T29.X, T22.Z, literal.x, 7920; CM-NEXT: MOV T29.Y, 0.0, 7921; CM-NEXT: LSHR * T19.Z, T21.Y, literal.y, 7922; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7923; CM-NEXT: ALU clause starting at 65: 7924; CM-NEXT: AND_INT T19.X, T21.Y, literal.x, 7925; CM-NEXT: MOV T19.Y, 0.0, 7926; CM-NEXT: LSHR * T30.Z, T21.X, literal.y, 7927; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7928; CM-NEXT: AND_INT T30.X, T21.X, literal.x, 7929; CM-NEXT: MOV T30.Y, 0.0, 7930; CM-NEXT: LSHR * T31.Z, T21.W, literal.y, 7931; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7932; CM-NEXT: AND_INT T31.X, T21.W, literal.x, 7933; CM-NEXT: MOV T31.Y, 0.0, 7934; CM-NEXT: LSHR * T32.Z, T21.Z, literal.y, 7935; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7936; CM-NEXT: AND_INT T32.X, T21.Z, literal.x, 7937; CM-NEXT: MOV T32.Y, 0.0, 7938; CM-NEXT: LSHR * T21.Z, T22.Y, literal.y, 7939; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7940; CM-NEXT: AND_INT T21.X, T22.Y, literal.x, 7941; CM-NEXT: MOV T21.Y, 0.0, 7942; CM-NEXT: LSHR * T33.Z, T22.X, literal.y, 7943; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7944; CM-NEXT: AND_INT T33.X, T22.X, literal.x, 7945; CM-NEXT: MOV T33.Y, 0.0, 7946; CM-NEXT: LSHR * T34.Z, T22.W, literal.y, 7947; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7948; CM-NEXT: AND_INT T34.X, T22.W, literal.x, 7949; CM-NEXT: MOV T34.Y, 0.0, 7950; CM-NEXT: LSHR * T35.Z, T22.Z, literal.y, 7951; CM-NEXT: 65535(9.183409e-41), 16(2.242078e-44) 7952; CM-NEXT: AND_INT T35.X, T22.Z, literal.x, 7953; CM-NEXT: MOV T35.Y, 0.0, 7954; CM-NEXT: MOV * T23.W, 0.0, 7955; CM-NEXT: 65535(9.183409e-41), 0(0.000000e+00) 7956; CM-NEXT: MOV * T24.W, 0.0, 7957; CM-NEXT: MOV * T25.W, 0.0, 7958; CM-NEXT: MOV * T26.W, 0.0, 7959; CM-NEXT: MOV * T20.W, 0.0, 7960; CM-NEXT: MOV * T27.W, 0.0, 7961; CM-NEXT: MOV * T28.W, 0.0, 7962; CM-NEXT: MOV * T29.W, 0.0, 7963; CM-NEXT: MOV * T19.W, 0.0, 7964; CM-NEXT: MOV * T30.W, 0.0, 7965; CM-NEXT: MOV * T31.W, 0.0, 7966; CM-NEXT: MOV * T32.W, 0.0, 7967; CM-NEXT: MOV * T21.W, 0.0, 7968; CM-NEXT: MOV * T33.W, 0.0, 7969; CM-NEXT: MOV * T34.W, 0.0, 7970; CM-NEXT: MOV * T35.W, 0.0, 7971; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 7972; CM-NEXT: 224(3.138909e-43), 0(0.000000e+00) 7973; CM-NEXT: LSHR T22.X, PV.W, literal.x, 7974; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7975; CM-NEXT: 2(2.802597e-45), 240(3.363116e-43) 7976; CM-NEXT: LSHR T36.X, PV.W, literal.x, 7977; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7978; CM-NEXT: 2(2.802597e-45), 192(2.690493e-43) 7979; CM-NEXT: LSHR T37.X, PV.W, literal.x, 7980; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7981; CM-NEXT: 2(2.802597e-45), 208(2.914701e-43) 7982; CM-NEXT: LSHR T38.X, PV.W, literal.x, 7983; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7984; CM-NEXT: 2(2.802597e-45), 160(2.242078e-43) 7985; CM-NEXT: LSHR T39.X, PV.W, literal.x, 7986; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7987; CM-NEXT: 2(2.802597e-45), 176(2.466285e-43) 7988; CM-NEXT: LSHR T40.X, PV.W, literal.x, 7989; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7990; CM-NEXT: 2(2.802597e-45), 128(1.793662e-43) 7991; CM-NEXT: LSHR T41.X, PV.W, literal.x, 7992; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7993; CM-NEXT: 2(2.802597e-45), 144(2.017870e-43) 7994; CM-NEXT: LSHR T42.X, PV.W, literal.x, 7995; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7996; CM-NEXT: 2(2.802597e-45), 96(1.345247e-43) 7997; CM-NEXT: LSHR T43.X, PV.W, literal.x, 7998; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 7999; CM-NEXT: 2(2.802597e-45), 112(1.569454e-43) 8000; CM-NEXT: LSHR T44.X, PV.W, literal.x, 8001; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8002; CM-NEXT: 2(2.802597e-45), 64(8.968310e-44) 8003; CM-NEXT: LSHR T45.X, PV.W, literal.x, 8004; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8005; CM-NEXT: 2(2.802597e-45), 80(1.121039e-43) 8006; CM-NEXT: LSHR T46.X, PV.W, literal.x, 8007; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8008; CM-NEXT: 2(2.802597e-45), 32(4.484155e-44) 8009; CM-NEXT: LSHR T47.X, PV.W, literal.x, 8010; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8011; CM-NEXT: 2(2.802597e-45), 48(6.726233e-44) 8012; CM-NEXT: LSHR * T48.X, PV.W, literal.x, 8013; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 8014; CM-NEXT: LSHR T49.X, KC0[2].Y, literal.x, 8015; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8016; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 8017; CM-NEXT: LSHR * T50.X, PV.W, literal.x, 8018; CM-NEXT: 2(2.802597e-45), 0(0.000000e+00) 8019 %load = load <32 x i16>, <32 x i16> addrspace(1)* %in 8020 %ext = zext <32 x i16> %load to <32 x i64> 8021 store <32 x i64> %ext, <32 x i64> addrspace(1)* %out 8022 ret void 8023} 8024 8025define amdgpu_kernel void @global_sextload_v32i16_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i16> addrspace(1)* %in) #0 { 8026; GCN-NOHSA-SI-LABEL: global_sextload_v32i16_to_v32i64: 8027; GCN-NOHSA-SI: ; %bb.0: 8028; GCN-NOHSA-SI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x9 8029; GCN-NOHSA-SI-NEXT: s_mov_b32 s3, 0xf000 8030; GCN-NOHSA-SI-NEXT: s_mov_b32 s2, -1 8031; GCN-NOHSA-SI-NEXT: s_mov_b32 s10, s2 8032; GCN-NOHSA-SI-NEXT: s_mov_b32 s11, s3 8033; GCN-NOHSA-SI-NEXT: s_waitcnt lgkmcnt(0) 8034; GCN-NOHSA-SI-NEXT: s_mov_b32 s8, s6 8035; GCN-NOHSA-SI-NEXT: s_mov_b32 s9, s7 8036; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[12:15], off, s[8:11], 0 offset:48 8037; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 offset:32 8038; GCN-NOHSA-SI-NEXT: s_mov_b32 s0, s4 8039; GCN-NOHSA-SI-NEXT: s_mov_b32 s1, s5 8040; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[8:11], off, s[8:11], 0 8041; GCN-NOHSA-SI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16 8042; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(3) 8043; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v16, v15 8044; GCN-NOHSA-SI-NEXT: v_bfe_i32 v16, v16, 0, 16 8045; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[18:19], v[14:15], 48 8046; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v17, 31, v16 8047; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:240 8048; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 8049; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[17:18], v[12:13], 48 8050; GCN-NOHSA-SI-NEXT: v_bfe_i32 v15, v13, 0, 16 8051; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v16, 31, v15 8052; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:208 8053; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(4) 8054; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v13, v3 8055; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 8056; GCN-NOHSA-SI-NEXT: v_bfe_i32 v15, v13, 0, 16 8057; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[17:18], v[2:3], 48 8058; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v16, 31, v15 8059; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:176 8060; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 8061; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[17:18], v[0:1], 48 8062; GCN-NOHSA-SI-NEXT: v_bfe_i32 v15, v1, 0, 16 8063; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v16, 31, v15 8064; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:144 8065; GCN-NOHSA-SI-NEXT: s_waitcnt vmcnt(4) 8066; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, v7 8067; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 8068; GCN-NOHSA-SI-NEXT: v_bfe_i32 v15, v1, 0, 16 8069; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[17:18], v[6:7], 48 8070; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v16, 31, v15 8071; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:112 8072; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 8073; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[17:18], v[4:5], 48 8074; GCN-NOHSA-SI-NEXT: v_bfe_i32 v15, v5, 0, 16 8075; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v16, 31, v15 8076; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:80 8077; GCN-NOHSA-SI-NEXT: v_mov_b32_e32 v1, v11 8078; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 8079; GCN-NOHSA-SI-NEXT: v_bfe_i32 v15, v1, 0, 16 8080; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[17:18], v[10:11], 48 8081; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v16, 31, v15 8082; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:48 8083; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 8084; GCN-NOHSA-SI-NEXT: v_ashr_i64 v[17:18], v[8:9], 48 8085; GCN-NOHSA-SI-NEXT: v_bfe_i32 v15, v9, 0, 16 8086; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v16, 31, v15 8087; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:16 8088; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v1, 16, v14 8089; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 8090; GCN-NOHSA-SI-NEXT: v_bfe_i32 v15, v1, 0, 16 8091; GCN-NOHSA-SI-NEXT: v_bfe_i32 v13, v14, 0, 16 8092; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v14, 31, v13 8093; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v16, 31, v15 8094; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[13:16], off, s[0:3], 0 offset:224 8095; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v1, 16, v12 8096; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v3, 16, v2 8097; GCN-NOHSA-SI-NEXT: v_bfe_i32 v11, v12, 0, 16 8098; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 8099; GCN-NOHSA-SI-NEXT: v_bfe_i32 v13, v1, 0, 16 8100; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v9, 16, v4 8101; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 8102; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v14, 31, v13 8103; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:192 8104; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v7, 16, v10 8105; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 8106; GCN-NOHSA-SI-NEXT: v_bfe_i32 v13, v3, 0, 16 8107; GCN-NOHSA-SI-NEXT: v_bfe_i32 v11, v2, 0, 16 8108; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 8109; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v14, 31, v13 8110; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:160 8111; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v1, 16, v8 8112; GCN-NOHSA-SI-NEXT: v_bfe_i32 v3, v1, 0, 16 8113; GCN-NOHSA-SI-NEXT: v_bfe_i32 v1, v8, 0, 16 8114; GCN-NOHSA-SI-NEXT: v_bfe_i32 v5, v10, 0, 16 8115; GCN-NOHSA-SI-NEXT: v_bfe_i32 v7, v7, 0, 16 8116; GCN-NOHSA-SI-NEXT: s_waitcnt expcnt(0) 8117; GCN-NOHSA-SI-NEXT: v_bfe_i32 v11, v9, 0, 16 8118; GCN-NOHSA-SI-NEXT: v_bfe_i32 v9, v4, 0, 16 8119; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v2, 16, v6 8120; GCN-NOHSA-SI-NEXT: v_bfe_i32 v13, v6, 0, 16 8121; GCN-NOHSA-SI-NEXT: v_bfe_i32 v15, v2, 0, 16 8122; GCN-NOHSA-SI-NEXT: v_lshrrev_b32_e32 v2, 16, v0 8123; GCN-NOHSA-SI-NEXT: v_bfe_i32 v17, v0, 0, 16 8124; GCN-NOHSA-SI-NEXT: v_bfe_i32 v19, v2, 0, 16 8125; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v2, 31, v1 8126; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v6, 31, v5 8127; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v10, 31, v9 8128; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v14, 31, v13 8129; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v18, 31, v17 8130; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v4, 31, v3 8131; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v8, 31, v7 8132; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 8133; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v16, 31, v15 8134; GCN-NOHSA-SI-NEXT: v_ashrrev_i32_e32 v20, 31, v19 8135; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[17:20], off, s[0:3], 0 offset:128 8136; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[13:16], off, s[0:3], 0 offset:96 8137; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[9:12], off, s[0:3], 0 offset:64 8138; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[5:8], off, s[0:3], 0 offset:32 8139; GCN-NOHSA-SI-NEXT: buffer_store_dwordx4 v[1:4], off, s[0:3], 0 8140; GCN-NOHSA-SI-NEXT: s_endpgm 8141; 8142; GCN-HSA-LABEL: global_sextload_v32i16_to_v32i64: 8143; GCN-HSA: ; %bb.0: 8144; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0 8145; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0) 8146; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2 8147; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3 8148; GCN-HSA-NEXT: flat_load_dwordx4 v[8:11], v[0:1] 8149; GCN-HSA-NEXT: s_add_u32 s4, s2, 48 8150; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 8151; GCN-HSA-NEXT: v_mov_b32_e32 v0, s4 8152; GCN-HSA-NEXT: v_mov_b32_e32 v1, s5 8153; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1] 8154; GCN-HSA-NEXT: s_add_u32 s4, s2, 32 8155; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0 8156; GCN-HSA-NEXT: v_mov_b32_e32 v4, s4 8157; GCN-HSA-NEXT: v_mov_b32_e32 v5, s5 8158; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5] 8159; GCN-HSA-NEXT: s_add_u32 s2, s2, 16 8160; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0 8161; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3 8162; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2 8163; GCN-HSA-NEXT: flat_load_dwordx4 v[12:15], v[12:13] 8164; GCN-HSA-NEXT: s_add_u32 s2, s0, 48 8165; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 8166; GCN-HSA-NEXT: s_add_u32 s4, s0, 16 8167; GCN-HSA-NEXT: s_addc_u32 s5, s1, 0 8168; GCN-HSA-NEXT: v_mov_b32_e32 v21, s5 8169; GCN-HSA-NEXT: v_mov_b32_e32 v20, s4 8170; GCN-HSA-NEXT: s_waitcnt vmcnt(3) 8171; GCN-HSA-NEXT: v_ashr_i64 v[18:19], v[8:9], 48 8172; GCN-HSA-NEXT: v_bfe_i32 v16, v9, 0, 16 8173; GCN-HSA-NEXT: v_ashrrev_i32_e32 v17, 31, v16 8174; GCN-HSA-NEXT: flat_store_dwordx4 v[20:21], v[16:19] 8175; GCN-HSA-NEXT: v_mov_b32_e32 v21, s3 8176; GCN-HSA-NEXT: v_mov_b32_e32 v20, s2 8177; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xf0 8178; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 8179; GCN-HSA-NEXT: s_add_u32 s4, s0, 0xd0 8180; GCN-HSA-NEXT: s_addc_u32 s5, s1, 0 8181; GCN-HSA-NEXT: s_add_u32 s6, s0, 0xb0 8182; GCN-HSA-NEXT: s_addc_u32 s7, s1, 0 8183; GCN-HSA-NEXT: s_add_u32 s8, s0, 0x90 8184; GCN-HSA-NEXT: s_addc_u32 s9, s1, 0 8185; GCN-HSA-NEXT: s_add_u32 s10, s0, 0x70 8186; GCN-HSA-NEXT: s_addc_u32 s11, s1, 0 8187; GCN-HSA-NEXT: v_mov_b32_e32 v9, v11 8188; GCN-HSA-NEXT: s_add_u32 s12, s0, 0x50 8189; GCN-HSA-NEXT: v_bfe_i32 v16, v9, 0, 16 8190; GCN-HSA-NEXT: v_ashr_i64 v[18:19], v[10:11], 48 8191; GCN-HSA-NEXT: s_addc_u32 s13, s1, 0 8192; GCN-HSA-NEXT: v_ashrrev_i32_e32 v17, 31, v16 8193; GCN-HSA-NEXT: s_add_u32 s14, s0, 32 8194; GCN-HSA-NEXT: v_lshrrev_b32_e32 v9, 16, v10 8195; GCN-HSA-NEXT: flat_store_dwordx4 v[20:21], v[16:19] 8196; GCN-HSA-NEXT: s_addc_u32 s15, s1, 0 8197; GCN-HSA-NEXT: v_bfe_i32 v18, v9, 0, 16 8198; GCN-HSA-NEXT: v_bfe_i32 v16, v10, 0, 16 8199; GCN-HSA-NEXT: v_mov_b32_e32 v9, s14 8200; GCN-HSA-NEXT: v_ashrrev_i32_e32 v17, 31, v16 8201; GCN-HSA-NEXT: v_ashrrev_i32_e32 v19, 31, v18 8202; GCN-HSA-NEXT: v_mov_b32_e32 v10, s15 8203; GCN-HSA-NEXT: flat_store_dwordx4 v[9:10], v[16:19] 8204; GCN-HSA-NEXT: v_lshrrev_b32_e32 v9, 16, v8 8205; GCN-HSA-NEXT: v_mov_b32_e32 v17, s1 8206; GCN-HSA-NEXT: v_bfe_i32 v8, v8, 0, 16 8207; GCN-HSA-NEXT: v_bfe_i32 v10, v9, 0, 16 8208; GCN-HSA-NEXT: v_mov_b32_e32 v16, s0 8209; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 31, v8 8210; GCN-HSA-NEXT: v_ashrrev_i32_e32 v11, 31, v10 8211; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[8:11] 8212; GCN-HSA-NEXT: v_mov_b32_e32 v17, s5 8213; GCN-HSA-NEXT: s_waitcnt vmcnt(6) 8214; GCN-HSA-NEXT: v_ashr_i64 v[10:11], v[0:1], 48 8215; GCN-HSA-NEXT: v_bfe_i32 v8, v1, 0, 16 8216; GCN-HSA-NEXT: v_mov_b32_e32 v16, s4 8217; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 31, v8 8218; GCN-HSA-NEXT: v_mov_b32_e32 v1, v3 8219; GCN-HSA-NEXT: v_mov_b32_e32 v19, s3 8220; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[8:11] 8221; GCN-HSA-NEXT: v_mov_b32_e32 v18, s2 8222; GCN-HSA-NEXT: v_bfe_i32 v8, v1, 0, 16 8223; GCN-HSA-NEXT: v_ashr_i64 v[10:11], v[2:3], 48 8224; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 31, v8 8225; GCN-HSA-NEXT: flat_store_dwordx4 v[18:19], v[8:11] 8226; GCN-HSA-NEXT: v_mov_b32_e32 v19, s9 8227; GCN-HSA-NEXT: s_waitcnt vmcnt(7) 8228; GCN-HSA-NEXT: v_ashr_i64 v[10:11], v[4:5], 48 8229; GCN-HSA-NEXT: v_bfe_i32 v8, v5, 0, 16 8230; GCN-HSA-NEXT: v_mov_b32_e32 v18, s8 8231; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 31, v8 8232; GCN-HSA-NEXT: v_mov_b32_e32 v1, v7 8233; GCN-HSA-NEXT: v_mov_b32_e32 v17, s7 8234; GCN-HSA-NEXT: flat_store_dwordx4 v[18:19], v[8:11] 8235; GCN-HSA-NEXT: v_mov_b32_e32 v16, s6 8236; GCN-HSA-NEXT: v_bfe_i32 v8, v1, 0, 16 8237; GCN-HSA-NEXT: v_ashr_i64 v[10:11], v[6:7], 48 8238; GCN-HSA-NEXT: v_ashrrev_i32_e32 v9, 31, v8 8239; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[8:11] 8240; GCN-HSA-NEXT: v_mov_b32_e32 v17, s13 8241; GCN-HSA-NEXT: s_waitcnt vmcnt(8) 8242; GCN-HSA-NEXT: v_ashr_i64 v[9:10], v[12:13], 48 8243; GCN-HSA-NEXT: v_bfe_i32 v7, v13, 0, 16 8244; GCN-HSA-NEXT: v_mov_b32_e32 v16, s12 8245; GCN-HSA-NEXT: v_ashrrev_i32_e32 v8, 31, v7 8246; GCN-HSA-NEXT: v_mov_b32_e32 v3, v15 8247; GCN-HSA-NEXT: v_mov_b32_e32 v19, s11 8248; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[7:10] 8249; GCN-HSA-NEXT: v_mov_b32_e32 v18, s10 8250; GCN-HSA-NEXT: v_bfe_i32 v7, v3, 0, 16 8251; GCN-HSA-NEXT: v_ashr_i64 v[9:10], v[14:15], 48 8252; GCN-HSA-NEXT: v_lshrrev_b32_e32 v1, 16, v2 8253; GCN-HSA-NEXT: v_ashrrev_i32_e32 v8, 31, v7 8254; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xe0 8255; GCN-HSA-NEXT: flat_store_dwordx4 v[18:19], v[7:10] 8256; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 8257; GCN-HSA-NEXT: v_bfe_i32 v7, v2, 0, 16 8258; GCN-HSA-NEXT: v_bfe_i32 v9, v1, 0, 16 8259; GCN-HSA-NEXT: v_mov_b32_e32 v1, s2 8260; GCN-HSA-NEXT: v_mov_b32_e32 v2, s3 8261; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xc0 8262; GCN-HSA-NEXT: v_ashrrev_i32_e32 v8, 31, v7 8263; GCN-HSA-NEXT: v_ashrrev_i32_e32 v10, 31, v9 8264; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 8265; GCN-HSA-NEXT: flat_store_dwordx4 v[1:2], v[7:10] 8266; GCN-HSA-NEXT: v_lshrrev_b32_e32 v5, 16, v6 8267; GCN-HSA-NEXT: v_mov_b32_e32 v8, s3 8268; GCN-HSA-NEXT: v_mov_b32_e32 v7, s2 8269; GCN-HSA-NEXT: s_add_u32 s2, s0, 0xa0 8270; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 8271; GCN-HSA-NEXT: v_lshrrev_b32_e32 v13, 16, v4 8272; GCN-HSA-NEXT: v_bfe_i32 v11, v4, 0, 16 8273; GCN-HSA-NEXT: v_bfe_i32 v17, v5, 0, 16 8274; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 8275; GCN-HSA-NEXT: v_bfe_i32 v15, v6, 0, 16 8276; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 8277; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x80 8278; GCN-HSA-NEXT: v_lshrrev_b32_e32 v3, 16, v0 8279; GCN-HSA-NEXT: v_ashrrev_i32_e32 v16, 31, v15 8280; GCN-HSA-NEXT: v_ashrrev_i32_e32 v18, 31, v17 8281; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 8282; GCN-HSA-NEXT: v_bfe_i32 v0, v0, 0, 16 8283; GCN-HSA-NEXT: v_bfe_i32 v2, v3, 0, 16 8284; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[15:18] 8285; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 8286; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 31, v0 8287; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 31, v2 8288; GCN-HSA-NEXT: v_bfe_i32 v13, v13, 0, 16 8289; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 8290; GCN-HSA-NEXT: s_add_u32 s2, s0, 0x60 8291; GCN-HSA-NEXT: v_lshrrev_b32_e32 v9, 16, v14 8292; GCN-HSA-NEXT: flat_store_dwordx4 v[7:8], v[0:3] 8293; GCN-HSA-NEXT: v_bfe_i32 v7, v14, 0, 16 8294; GCN-HSA-NEXT: v_lshrrev_b32_e32 v2, 16, v12 8295; GCN-HSA-NEXT: v_bfe_i32 v0, v12, 0, 16 8296; GCN-HSA-NEXT: v_ashrrev_i32_e32 v12, 31, v11 8297; GCN-HSA-NEXT: v_ashrrev_i32_e32 v14, 31, v13 8298; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0 8299; GCN-HSA-NEXT: v_bfe_i32 v9, v9, 0, 16 8300; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[11:14] 8301; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3 8302; GCN-HSA-NEXT: s_add_u32 s0, s0, 64 8303; GCN-HSA-NEXT: v_ashrrev_i32_e32 v8, 31, v7 8304; GCN-HSA-NEXT: v_ashrrev_i32_e32 v10, 31, v9 8305; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2 8306; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0 8307; GCN-HSA-NEXT: v_bfe_i32 v2, v2, 0, 16 8308; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[7:10] 8309; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1 8310; GCN-HSA-NEXT: v_ashrrev_i32_e32 v1, 31, v0 8311; GCN-HSA-NEXT: v_ashrrev_i32_e32 v3, 31, v2 8312; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0 8313; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3] 8314; GCN-HSA-NEXT: s_endpgm 8315; 8316; GCN-NOHSA-VI-LABEL: global_sextload_v32i16_to_v32i64: 8317; GCN-NOHSA-VI: ; %bb.0: 8318; GCN-NOHSA-VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24 8319; GCN-NOHSA-VI-NEXT: s_mov_b32 s3, 0xf000 8320; GCN-NOHSA-VI-NEXT: s_mov_b32 s2, -1 8321; GCN-NOHSA-VI-NEXT: s_mov_b32 s10, s2 8322; GCN-NOHSA-VI-NEXT: s_mov_b32 s11, s3 8323; GCN-NOHSA-VI-NEXT: s_waitcnt lgkmcnt(0) 8324; GCN-NOHSA-VI-NEXT: s_mov_b32 s8, s6 8325; GCN-NOHSA-VI-NEXT: s_mov_b32 s9, s7 8326; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[12:15], off, s[8:11], 0 offset:48 8327; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[8:11], off, s[8:11], 0 offset:32 8328; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 8329; GCN-NOHSA-VI-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 offset:16 8330; GCN-NOHSA-VI-NEXT: s_mov_b32 s0, s4 8331; GCN-NOHSA-VI-NEXT: s_mov_b32 s1, s5 8332; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(3) 8333; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v16, 16, v14 8334; GCN-NOHSA-VI-NEXT: v_bfe_i32 v18, v16, 0, 16 8335; GCN-NOHSA-VI-NEXT: v_bfe_i32 v16, v14, 0, 16 8336; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v17, 31, v16 8337; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v19, 31, v18 8338; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v14, v15 8339; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v15, 16, v15 8340; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:224 8341; GCN-NOHSA-VI-NEXT: v_bfe_i32 v14, v14, 0, 16 8342; GCN-NOHSA-VI-NEXT: v_bfe_i32 v16, v15, 0, 16 8343; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v15, 31, v14 8344; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v17, 31, v16 8345; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[14:17], off, s[0:3], 0 offset:240 8346; GCN-NOHSA-VI-NEXT: s_waitcnt vmcnt(2) 8347; GCN-NOHSA-VI-NEXT: v_bfe_i32 v18, v1, 0, 16 8348; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v14, 16, v12 8349; GCN-NOHSA-VI-NEXT: v_bfe_i32 v16, v14, 0, 16 8350; GCN-NOHSA-VI-NEXT: v_bfe_i32 v14, v12, 0, 16 8351; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v15, 31, v14 8352; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v17, 31, v16 8353; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[14:17], off, s[0:3], 0 offset:192 8354; GCN-NOHSA-VI-NEXT: v_bfe_i32 v12, v13, 0, 16 8355; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v14, 16, v13 8356; GCN-NOHSA-VI-NEXT: v_bfe_i32 v14, v14, 0, 16 8357; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v13, 31, v12 8358; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v15, 31, v14 8359; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v16, v11 8360; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:208 8361; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v17, 16, v11 8362; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v12, 16, v10 8363; GCN-NOHSA-VI-NEXT: v_bfe_i32 v11, v16, 0, 16 8364; GCN-NOHSA-VI-NEXT: v_bfe_i32 v16, v12, 0, 16 8365; GCN-NOHSA-VI-NEXT: v_bfe_i32 v14, v10, 0, 16 8366; GCN-NOHSA-VI-NEXT: v_bfe_i32 v13, v17, 0, 16 8367; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v15, 31, v14 8368; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v17, 31, v16 8369; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[14:17], off, s[0:3], 0 offset:160 8370; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 8371; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v14, 31, v13 8372; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:176 8373; GCN-NOHSA-VI-NEXT: v_bfe_i32 v10, v5, 0, 16 8374; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v11, 16, v8 8375; GCN-NOHSA-VI-NEXT: v_bfe_i32 v13, v11, 0, 16 8376; GCN-NOHSA-VI-NEXT: v_bfe_i32 v11, v8, 0, 16 8377; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 8378; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v14, 31, v13 8379; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v8, 16, v9 8380; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:128 8381; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v5, 16, v5 8382; GCN-NOHSA-VI-NEXT: v_bfe_i32 v11, v9, 0, 16 8383; GCN-NOHSA-VI-NEXT: v_bfe_i32 v13, v8, 0, 16 8384; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 8385; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v14, 31, v13 8386; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v9, 16, v2 8387; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:144 8388; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v8, v3 8389; GCN-NOHSA-VI-NEXT: v_bfe_i32 v13, v9, 0, 16 8390; GCN-NOHSA-VI-NEXT: v_bfe_i32 v11, v2, 0, 16 8391; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 8392; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v14, 31, v13 8393; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v2, 16, v3 8394; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:96 8395; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v3, 16, v4 8396; GCN-NOHSA-VI-NEXT: v_bfe_i32 v11, v8, 0, 16 8397; GCN-NOHSA-VI-NEXT: v_bfe_i32 v13, v2, 0, 16 8398; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 8399; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v14, 31, v13 8400; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v2, 16, v0 8401; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:112 8402; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v19, 31, v18 8403; GCN-NOHSA-VI-NEXT: v_bfe_i32 v13, v2, 0, 16 8404; GCN-NOHSA-VI-NEXT: v_bfe_i32 v11, v0, 0, 16 8405; GCN-NOHSA-VI-NEXT: v_mov_b32_e32 v0, v7 8406; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v2, 16, v7 8407; GCN-NOHSA-VI-NEXT: v_bfe_i32 v7, v3, 0, 16 8408; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v3, 16, v6 8409; GCN-NOHSA-VI-NEXT: v_bfe_i32 v16, v3, 0, 16 8410; GCN-NOHSA-VI-NEXT: v_lshrrev_b32_e32 v3, 16, v1 8411; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v12, 31, v11 8412; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v14, 31, v13 8413; GCN-NOHSA-VI-NEXT: v_bfe_i32 v20, v3, 0, 16 8414; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:64 8415; GCN-NOHSA-VI-NEXT: v_bfe_i32 v0, v0, 0, 16 8416; GCN-NOHSA-VI-NEXT: v_bfe_i32 v12, v5, 0, 16 8417; GCN-NOHSA-VI-NEXT: v_bfe_i32 v2, v2, 0, 16 8418; GCN-NOHSA-VI-NEXT: v_bfe_i32 v5, v4, 0, 16 8419; GCN-NOHSA-VI-NEXT: v_bfe_i32 v14, v6, 0, 16 8420; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v21, 31, v20 8421; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v11, 31, v10 8422; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v13, 31, v12 8423; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v6, 31, v5 8424; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v8, 31, v7 8425; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v1, 31, v0 8426; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v3, 31, v2 8427; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v15, 31, v14 8428; GCN-NOHSA-VI-NEXT: v_ashrrev_i32_e32 v17, 31, v16 8429; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[18:21], off, s[0:3], 0 offset:80 8430; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[14:17], off, s[0:3], 0 offset:32 8431; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48 8432; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[5:8], off, s[0:3], 0 8433; GCN-NOHSA-VI-NEXT: buffer_store_dwordx4 v[10:13], off, s[0:3], 0 offset:16 8434; GCN-NOHSA-VI-NEXT: s_endpgm 8435; 8436; EG-LABEL: global_sextload_v32i16_to_v32i64: 8437; EG: ; %bb.0: 8438; EG-NEXT: ALU 0, @30, KC0[CB0:0-32], KC1[] 8439; EG-NEXT: TEX 0 @22 8440; EG-NEXT: ALU 56, @31, KC0[CB0:0-32], KC1[] 8441; EG-NEXT: TEX 2 @24 8442; EG-NEXT: ALU 74, @88, KC0[CB0:0-32], KC1[] 8443; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T50.XYZW, T38.X, 0 8444; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T49.XYZW, T36.X, 0 8445; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T48.XYZW, T34.X, 0 8446; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T39.XYZW, T33.X, 0 8447; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T47.XYZW, T32.X, 0 8448; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T46.XYZW, T31.X, 0 8449; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T45.XYZW, T30.X, 0 8450; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T40.XYZW, T29.X, 0 8451; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T44.XYZW, T28.X, 0 8452; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T43.XYZW, T27.X, 0 8453; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T42.XYZW, T26.X, 0 8454; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T25.X, 0 8455; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T41.XYZW, T24.X, 0 8456; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T23.X, 0 8457; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T37.XYZW, T22.X, 0 8458; EG-NEXT: MEM_RAT_CACHELESS STORE_RAW T35.XYZW, T21.X, 1 8459; EG-NEXT: CF_END 8460; EG-NEXT: Fetch clause starting at 22: 8461; EG-NEXT: VTX_READ_128 T20.XYZW, T19.X, 0, #1 8462; EG-NEXT: Fetch clause starting at 24: 8463; EG-NEXT: VTX_READ_128 T38.XYZW, T19.X, 48, #1 8464; EG-NEXT: VTX_READ_128 T39.XYZW, T19.X, 32, #1 8465; EG-NEXT: VTX_READ_128 T40.XYZW, T19.X, 16, #1 8466; EG-NEXT: ALU clause starting at 30: 8467; EG-NEXT: MOV * T19.X, KC0[2].Z, 8468; EG-NEXT: ALU clause starting at 31: 8469; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 8470; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 8471; EG-NEXT: LSHR T21.X, PV.W, literal.x, 8472; EG-NEXT: LSHR * T22.X, KC0[2].Y, literal.x, 8473; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) 8474; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 8475; EG-NEXT: 48(6.726233e-44), 0(0.000000e+00) 8476; EG-NEXT: LSHR T23.X, PV.W, literal.x, 8477; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8478; EG-NEXT: 2(2.802597e-45), 32(4.484155e-44) 8479; EG-NEXT: LSHR T24.X, PV.W, literal.x, 8480; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8481; EG-NEXT: 2(2.802597e-45), 80(1.121039e-43) 8482; EG-NEXT: LSHR T25.X, PV.W, literal.x, 8483; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8484; EG-NEXT: 2(2.802597e-45), 64(8.968310e-44) 8485; EG-NEXT: LSHR T26.X, PV.W, literal.x, 8486; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8487; EG-NEXT: 2(2.802597e-45), 112(1.569454e-43) 8488; EG-NEXT: LSHR T27.X, PV.W, literal.x, 8489; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8490; EG-NEXT: 2(2.802597e-45), 96(1.345247e-43) 8491; EG-NEXT: LSHR T28.X, PV.W, literal.x, 8492; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8493; EG-NEXT: 2(2.802597e-45), 144(2.017870e-43) 8494; EG-NEXT: LSHR T29.X, PV.W, literal.x, 8495; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8496; EG-NEXT: 2(2.802597e-45), 128(1.793662e-43) 8497; EG-NEXT: LSHR T30.X, PV.W, literal.x, 8498; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8499; EG-NEXT: 2(2.802597e-45), 176(2.466285e-43) 8500; EG-NEXT: LSHR T31.X, PV.W, literal.x, 8501; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8502; EG-NEXT: 2(2.802597e-45), 160(2.242078e-43) 8503; EG-NEXT: LSHR T32.X, PV.W, literal.x, 8504; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8505; EG-NEXT: 2(2.802597e-45), 208(2.914701e-43) 8506; EG-NEXT: LSHR T33.X, PV.W, literal.x, 8507; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8508; EG-NEXT: 2(2.802597e-45), 192(2.690493e-43) 8509; EG-NEXT: LSHR T34.X, PV.W, literal.x, 8510; EG-NEXT: ADD_INT T0.W, KC0[2].Y, literal.y, 8511; EG-NEXT: ASHR * T35.W, T20.Y, literal.z, 8512; EG-NEXT: 2(2.802597e-45), 240(3.363116e-43) 8513; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 8514; EG-NEXT: LSHR T36.X, PV.W, literal.x, 8515; EG-NEXT: ASHR T35.Z, T20.Y, literal.y, 8516; EG-NEXT: ASHR * T37.W, T20.X, literal.z, 8517; EG-NEXT: 2(2.802597e-45), 16(2.242078e-44) 8518; EG-NEXT: 31(4.344025e-44), 0(0.000000e+00) 8519; EG-NEXT: BFE_INT T35.X, T20.Y, 0.0, literal.x, 8520; EG-NEXT: ASHR * T37.Z, T20.X, literal.x, 8521; EG-NEXT: 16(2.242078e-44), 0(0.000000e+00) 8522; EG-NEXT: BFE_INT T37.X, T20.X, 0.0, literal.x, 8523; EG-NEXT: ASHR T35.Y, PV.X, literal.y, 8524; EG-NEXT: ASHR * T19.W, T20.W, literal.y, 8525; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8526; EG-NEXT: ALU clause starting at 88: 8527; EG-NEXT: ASHR T19.Z, T20.W, literal.x, 8528; EG-NEXT: ASHR * T41.W, T20.Z, literal.y, 8529; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8530; EG-NEXT: BFE_INT T19.X, T20.W, 0.0, literal.x, 8531; EG-NEXT: ASHR T37.Y, T37.X, literal.y, 8532; EG-NEXT: ASHR T41.Z, T20.Z, literal.x, 8533; EG-NEXT: ASHR * T20.W, T40.Y, literal.y, 8534; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8535; EG-NEXT: BFE_INT T41.X, T20.Z, 0.0, literal.x, 8536; EG-NEXT: ASHR T19.Y, PV.X, literal.y, 8537; EG-NEXT: ASHR T20.Z, T40.Y, literal.x, 8538; EG-NEXT: ASHR * T42.W, T40.X, literal.y, 8539; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8540; EG-NEXT: BFE_INT T20.X, T40.Y, 0.0, literal.x, 8541; EG-NEXT: ASHR T41.Y, PV.X, literal.y, 8542; EG-NEXT: ASHR T42.Z, T40.X, literal.x, 8543; EG-NEXT: ASHR * T43.W, T40.W, literal.y, 8544; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8545; EG-NEXT: BFE_INT T42.X, T40.X, 0.0, literal.x, 8546; EG-NEXT: ASHR T20.Y, PV.X, literal.y, 8547; EG-NEXT: ASHR T43.Z, T40.W, literal.x, 8548; EG-NEXT: ASHR * T44.W, T40.Z, literal.y, 8549; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8550; EG-NEXT: BFE_INT T43.X, T40.W, 0.0, literal.x, 8551; EG-NEXT: ASHR T42.Y, PV.X, literal.y, 8552; EG-NEXT: ASHR T44.Z, T40.Z, literal.x, 8553; EG-NEXT: ASHR * T40.W, T39.Y, literal.y, 8554; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8555; EG-NEXT: BFE_INT T44.X, T40.Z, 0.0, literal.x, 8556; EG-NEXT: ASHR T43.Y, PV.X, literal.y, 8557; EG-NEXT: ASHR T40.Z, T39.Y, literal.x, 8558; EG-NEXT: ASHR * T45.W, T39.X, literal.y, 8559; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8560; EG-NEXT: BFE_INT T40.X, T39.Y, 0.0, literal.x, 8561; EG-NEXT: ASHR T44.Y, PV.X, literal.y, 8562; EG-NEXT: ASHR T45.Z, T39.X, literal.x, 8563; EG-NEXT: ASHR * T46.W, T39.W, literal.y, 8564; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8565; EG-NEXT: BFE_INT T45.X, T39.X, 0.0, literal.x, 8566; EG-NEXT: ASHR T40.Y, PV.X, literal.y, 8567; EG-NEXT: ASHR T46.Z, T39.W, literal.x, 8568; EG-NEXT: ASHR * T47.W, T39.Z, literal.y, 8569; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8570; EG-NEXT: BFE_INT T46.X, T39.W, 0.0, literal.x, 8571; EG-NEXT: ASHR T45.Y, PV.X, literal.y, 8572; EG-NEXT: ASHR T47.Z, T39.Z, literal.x, 8573; EG-NEXT: ASHR * T39.W, T38.Y, literal.y, 8574; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8575; EG-NEXT: BFE_INT T47.X, T39.Z, 0.0, literal.x, 8576; EG-NEXT: ASHR T46.Y, PV.X, literal.y, 8577; EG-NEXT: ASHR T39.Z, T38.Y, literal.x, 8578; EG-NEXT: ASHR * T48.W, T38.X, literal.y, 8579; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8580; EG-NEXT: BFE_INT T39.X, T38.Y, 0.0, literal.x, 8581; EG-NEXT: ASHR T47.Y, PV.X, literal.y, 8582; EG-NEXT: ASHR T48.Z, T38.X, literal.x, 8583; EG-NEXT: ASHR * T49.W, T38.W, literal.y, 8584; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8585; EG-NEXT: BFE_INT T48.X, T38.X, 0.0, literal.x, 8586; EG-NEXT: ASHR T39.Y, PV.X, literal.y, 8587; EG-NEXT: ASHR T49.Z, T38.W, literal.x, 8588; EG-NEXT: ASHR * T50.W, T38.Z, literal.y, 8589; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8590; EG-NEXT: BFE_INT T49.X, T38.W, 0.0, literal.x, 8591; EG-NEXT: ASHR T48.Y, PV.X, literal.y, 8592; EG-NEXT: ASHR * T50.Z, T38.Z, literal.x, 8593; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8594; EG-NEXT: BFE_INT T50.X, T38.Z, 0.0, literal.x, 8595; EG-NEXT: ASHR T49.Y, PV.X, literal.y, 8596; EG-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.z, 8597; EG-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8598; EG-NEXT: 224(3.138909e-43), 0(0.000000e+00) 8599; EG-NEXT: LSHR T38.X, PV.W, literal.x, 8600; EG-NEXT: ASHR * T50.Y, PV.X, literal.y, 8601; EG-NEXT: 2(2.802597e-45), 31(4.344025e-44) 8602; 8603; CM-LABEL: global_sextload_v32i16_to_v32i64: 8604; CM: ; %bb.0: 8605; CM-NEXT: ALU 0, @30, KC0[CB0:0-32], KC1[] 8606; CM-NEXT: TEX 0 @22 8607; CM-NEXT: ALU 55, @31, KC0[CB0:0-32], KC1[] 8608; CM-NEXT: TEX 2 @24 8609; CM-NEXT: ALU 73, @87, KC0[CB0:0-32], KC1[] 8610; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T38, T50.X 8611; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T49, T36.X 8612; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T48, T34.X 8613; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T47, T33.X 8614; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T39, T32.X 8615; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T46, T31.X 8616; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T45, T30.X 8617; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T44, T29.X 8618; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T40, T28.X 8619; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T43, T27.X 8620; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T42, T26.X 8621; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T41, T25.X 8622; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T20, T24.X 8623; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T19, T23.X 8624; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T37, T22.X 8625; CM-NEXT: MEM_RAT_CACHELESS STORE_DWORD T35, T21.X 8626; CM-NEXT: CF_END 8627; CM-NEXT: Fetch clause starting at 22: 8628; CM-NEXT: VTX_READ_128 T20.XYZW, T19.X, 48, #1 8629; CM-NEXT: Fetch clause starting at 24: 8630; CM-NEXT: VTX_READ_128 T38.XYZW, T19.X, 0, #1 8631; CM-NEXT: VTX_READ_128 T39.XYZW, T19.X, 16, #1 8632; CM-NEXT: VTX_READ_128 T40.XYZW, T19.X, 32, #1 8633; CM-NEXT: ALU clause starting at 30: 8634; CM-NEXT: MOV * T19.X, KC0[2].Z, 8635; CM-NEXT: ALU clause starting at 31: 8636; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 8637; CM-NEXT: 224(3.138909e-43), 0(0.000000e+00) 8638; CM-NEXT: LSHR T21.X, PV.W, literal.x, 8639; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8640; CM-NEXT: 2(2.802597e-45), 240(3.363116e-43) 8641; CM-NEXT: LSHR T22.X, PV.W, literal.x, 8642; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8643; CM-NEXT: 2(2.802597e-45), 192(2.690493e-43) 8644; CM-NEXT: LSHR T23.X, PV.W, literal.x, 8645; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8646; CM-NEXT: 2(2.802597e-45), 208(2.914701e-43) 8647; CM-NEXT: LSHR T24.X, PV.W, literal.x, 8648; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8649; CM-NEXT: 2(2.802597e-45), 160(2.242078e-43) 8650; CM-NEXT: LSHR T25.X, PV.W, literal.x, 8651; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8652; CM-NEXT: 2(2.802597e-45), 176(2.466285e-43) 8653; CM-NEXT: LSHR T26.X, PV.W, literal.x, 8654; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8655; CM-NEXT: 2(2.802597e-45), 128(1.793662e-43) 8656; CM-NEXT: LSHR T27.X, PV.W, literal.x, 8657; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8658; CM-NEXT: 2(2.802597e-45), 144(2.017870e-43) 8659; CM-NEXT: LSHR T28.X, PV.W, literal.x, 8660; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8661; CM-NEXT: 2(2.802597e-45), 96(1.345247e-43) 8662; CM-NEXT: LSHR T29.X, PV.W, literal.x, 8663; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8664; CM-NEXT: 2(2.802597e-45), 112(1.569454e-43) 8665; CM-NEXT: LSHR T30.X, PV.W, literal.x, 8666; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8667; CM-NEXT: 2(2.802597e-45), 64(8.968310e-44) 8668; CM-NEXT: LSHR T31.X, PV.W, literal.x, 8669; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8670; CM-NEXT: 2(2.802597e-45), 80(1.121039e-43) 8671; CM-NEXT: LSHR T32.X, PV.W, literal.x, 8672; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8673; CM-NEXT: 2(2.802597e-45), 32(4.484155e-44) 8674; CM-NEXT: LSHR T33.X, PV.W, literal.x, 8675; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.y, 8676; CM-NEXT: 2(2.802597e-45), 48(6.726233e-44) 8677; CM-NEXT: LSHR T34.X, PV.W, literal.x, 8678; CM-NEXT: ASHR * T35.W, T20.Z, literal.y, 8679; CM-NEXT: 2(2.802597e-45), 31(4.344025e-44) 8680; CM-NEXT: LSHR T36.X, KC0[2].Y, literal.x, 8681; CM-NEXT: ASHR T35.Z, T20.Z, literal.y, 8682; CM-NEXT: ASHR * T37.W, T20.W, literal.z, 8683; CM-NEXT: 2(2.802597e-45), 16(2.242078e-44) 8684; CM-NEXT: 31(4.344025e-44), 0(0.000000e+00) 8685; CM-NEXT: BFE_INT T35.X, T20.Z, 0.0, literal.x, 8686; CM-NEXT: ASHR * T37.Z, T20.W, literal.x, 8687; CM-NEXT: 16(2.242078e-44), 0(0.000000e+00) 8688; CM-NEXT: BFE_INT T37.X, T20.W, 0.0, literal.x, 8689; CM-NEXT: ASHR T35.Y, PV.X, literal.y, 8690; CM-NEXT: ASHR * T19.W, T20.X, literal.y, 8691; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8692; CM-NEXT: ALU clause starting at 87: 8693; CM-NEXT: ASHR T19.Z, T20.X, literal.x, 8694; CM-NEXT: ASHR * T20.W, T20.Y, literal.y, 8695; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8696; CM-NEXT: BFE_INT T19.X, T20.X, 0.0, literal.x, 8697; CM-NEXT: ASHR T37.Y, T37.X, literal.y, BS:VEC_120/SCL_212 8698; CM-NEXT: ASHR T20.Z, T20.Y, literal.x, 8699; CM-NEXT: ASHR * T41.W, T40.Z, literal.y, 8700; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8701; CM-NEXT: BFE_INT T20.X, T20.Y, 0.0, literal.x, 8702; CM-NEXT: ASHR T19.Y, PV.X, literal.y, 8703; CM-NEXT: ASHR T41.Z, T40.Z, literal.x, 8704; CM-NEXT: ASHR * T42.W, T40.W, literal.y, 8705; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8706; CM-NEXT: BFE_INT T41.X, T40.Z, 0.0, literal.x, 8707; CM-NEXT: ASHR T20.Y, PV.X, literal.y, 8708; CM-NEXT: ASHR T42.Z, T40.W, literal.x, 8709; CM-NEXT: ASHR * T43.W, T40.X, literal.y, 8710; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8711; CM-NEXT: BFE_INT T42.X, T40.W, 0.0, literal.x, 8712; CM-NEXT: ASHR T41.Y, PV.X, literal.y, 8713; CM-NEXT: ASHR T43.Z, T40.X, literal.x, 8714; CM-NEXT: ASHR * T40.W, T40.Y, literal.y, 8715; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8716; CM-NEXT: BFE_INT T43.X, T40.X, 0.0, literal.x, 8717; CM-NEXT: ASHR T42.Y, PV.X, literal.y, 8718; CM-NEXT: ASHR T40.Z, T40.Y, literal.x, 8719; CM-NEXT: ASHR * T44.W, T39.Z, literal.y, 8720; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8721; CM-NEXT: BFE_INT T40.X, T40.Y, 0.0, literal.x, 8722; CM-NEXT: ASHR T43.Y, PV.X, literal.y, 8723; CM-NEXT: ASHR T44.Z, T39.Z, literal.x, 8724; CM-NEXT: ASHR * T45.W, T39.W, literal.y, 8725; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8726; CM-NEXT: BFE_INT T44.X, T39.Z, 0.0, literal.x, 8727; CM-NEXT: ASHR T40.Y, PV.X, literal.y, 8728; CM-NEXT: ASHR T45.Z, T39.W, literal.x, 8729; CM-NEXT: ASHR * T46.W, T39.X, literal.y, 8730; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8731; CM-NEXT: BFE_INT T45.X, T39.W, 0.0, literal.x, 8732; CM-NEXT: ASHR T44.Y, PV.X, literal.y, 8733; CM-NEXT: ASHR T46.Z, T39.X, literal.x, 8734; CM-NEXT: ASHR * T39.W, T39.Y, literal.y, 8735; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8736; CM-NEXT: BFE_INT T46.X, T39.X, 0.0, literal.x, 8737; CM-NEXT: ASHR T45.Y, PV.X, literal.y, 8738; CM-NEXT: ASHR T39.Z, T39.Y, literal.x, 8739; CM-NEXT: ASHR * T47.W, T38.Z, literal.y, 8740; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8741; CM-NEXT: BFE_INT T39.X, T39.Y, 0.0, literal.x, 8742; CM-NEXT: ASHR T46.Y, PV.X, literal.y, 8743; CM-NEXT: ASHR T47.Z, T38.Z, literal.x, 8744; CM-NEXT: ASHR * T48.W, T38.W, literal.y, 8745; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8746; CM-NEXT: BFE_INT T47.X, T38.Z, 0.0, literal.x, 8747; CM-NEXT: ASHR T39.Y, PV.X, literal.y, 8748; CM-NEXT: ASHR T48.Z, T38.W, literal.x, 8749; CM-NEXT: ASHR * T49.W, T38.X, literal.y, 8750; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8751; CM-NEXT: BFE_INT T48.X, T38.W, 0.0, literal.x, 8752; CM-NEXT: ASHR T47.Y, PV.X, literal.y, 8753; CM-NEXT: ASHR T49.Z, T38.X, literal.x, 8754; CM-NEXT: ASHR * T38.W, T38.Y, literal.y, 8755; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8756; CM-NEXT: BFE_INT T49.X, T38.X, 0.0, literal.x, 8757; CM-NEXT: ASHR T48.Y, PV.X, literal.y, 8758; CM-NEXT: ASHR * T38.Z, T38.Y, literal.x, 8759; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8760; CM-NEXT: BFE_INT T38.X, T38.Y, 0.0, literal.x, 8761; CM-NEXT: ASHR T49.Y, PV.X, literal.y, 8762; CM-NEXT: ADD_INT * T0.W, KC0[2].Y, literal.x, 8763; CM-NEXT: 16(2.242078e-44), 31(4.344025e-44) 8764; CM-NEXT: LSHR T50.X, PV.W, literal.x, 8765; CM-NEXT: ASHR * T38.Y, PV.X, literal.y, 8766; CM-NEXT: 2(2.802597e-45), 31(4.344025e-44) 8767 %load = load <32 x i16>, <32 x i16> addrspace(1)* %in 8768 %ext = sext <32 x i16> %load to <32 x i64> 8769 store <32 x i64> %ext, <32 x i64> addrspace(1)* %out 8770 ret void 8771} 8772 8773; define amdgpu_kernel void @global_zextload_v64i16_to_v64i64(<64 x i64> addrspace(1)* %out, <64 x i16> addrspace(1)* %in) #0 { 8774; %load = load <64 x i16>, <64 x i16> addrspace(1)* %in 8775; %ext = zext <64 x i16> %load to <64 x i64> 8776; store <64 x i64> %ext, <64 x i64> addrspace(1)* %out 8777; ret void 8778; } 8779 8780; define amdgpu_kernel void @global_sextload_v64i16_to_v64i64(<64 x i64> addrspace(1)* %out, <64 x i16> addrspace(1)* %in) #0 { 8781; %load = load <64 x i16>, <64 x i16> addrspace(1)* %in 8782; %ext = sext <64 x i16> %load to <64 x i64> 8783; store <64 x i64> %ext, <64 x i64> addrspace(1)* %out 8784; ret void 8785; } 8786 8787attributes #0 = { nounwind } 8788