brintos

brintos / llvm-project-archived public Read only

0
0
Text · 37.6 KiB · 542b0cc Raw
949 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -mtriple=amdgcn < %s | FileCheck --check-prefix=GFX6 %s3; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=kaveri < %s | FileCheck --check-prefix=GFX7 %s4; RUN: llc -mtriple=amdgcn -mcpu=tonga < %s | FileCheck --check-prefix=GFX8 %s5; RUN: llc -mtriple=r600 -mcpu=redwood < %s | FileCheck --check-prefix=EG %s6; RUN: llc -mtriple=amdgcn -mcpu=gfx1200 < %s | FileCheck -check-prefix=GFX12 %s7 8define amdgpu_kernel void @constant_load_i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {9; GFX6-LABEL: constant_load_i64:10; GFX6:       ; %bb.0:11; GFX6-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x912; GFX6-NEXT:    s_waitcnt lgkmcnt(0)13; GFX6-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x014; GFX6-NEXT:    s_mov_b32 s3, 0xf00015; GFX6-NEXT:    s_mov_b32 s2, -116; GFX6-NEXT:    s_waitcnt lgkmcnt(0)17; GFX6-NEXT:    v_mov_b32_e32 v0, s418; GFX6-NEXT:    v_mov_b32_e32 v1, s519; GFX6-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 020; GFX6-NEXT:    s_endpgm21;22; GFX7-LABEL: constant_load_i64:23; GFX7:       ; %bb.0:24; GFX7-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x025; GFX7-NEXT:    s_add_i32 s12, s12, s1726; GFX7-NEXT:    s_mov_b32 flat_scratch_lo, s1327; GFX7-NEXT:    s_lshr_b32 flat_scratch_hi, s12, 828; GFX7-NEXT:    s_waitcnt lgkmcnt(0)29; GFX7-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x030; GFX7-NEXT:    v_mov_b32_e32 v0, s031; GFX7-NEXT:    v_mov_b32_e32 v1, s132; GFX7-NEXT:    s_waitcnt lgkmcnt(0)33; GFX7-NEXT:    v_mov_b32_e32 v2, s234; GFX7-NEXT:    v_mov_b32_e32 v3, s335; GFX7-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]36; GFX7-NEXT:    s_endpgm37;38; GFX8-LABEL: constant_load_i64:39; GFX8:       ; %bb.0:40; GFX8-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2441; GFX8-NEXT:    s_waitcnt lgkmcnt(0)42; GFX8-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x043; GFX8-NEXT:    v_mov_b32_e32 v0, s044; GFX8-NEXT:    v_mov_b32_e32 v1, s145; GFX8-NEXT:    s_waitcnt lgkmcnt(0)46; GFX8-NEXT:    v_mov_b32_e32 v2, s247; GFX8-NEXT:    v_mov_b32_e32 v3, s348; GFX8-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]49; GFX8-NEXT:    s_endpgm50;51; EG-LABEL: constant_load_i64:52; EG:       ; %bb.0:53; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]54; EG-NEXT:    TEX 0 @655; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]56; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 157; EG-NEXT:    CF_END58; EG-NEXT:    PAD59; EG-NEXT:    Fetch clause starting at 6:60; EG-NEXT:     VTX_READ_64 T0.XY, T0.X, 0, #161; EG-NEXT:    ALU clause starting at 8:62; EG-NEXT:     MOV * T0.X, KC0[2].Z,63; EG-NEXT:    ALU clause starting at 9:64; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,65; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)66;67; GFX12-LABEL: constant_load_i64:68; GFX12:       ; %bb.0:69; GFX12-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2470; GFX12-NEXT:    s_wait_kmcnt 0x071; GFX12-NEXT:    s_load_b64 s[2:3], s[2:3], 0x072; GFX12-NEXT:    v_mov_b32_e32 v2, 073; GFX12-NEXT:    s_wait_kmcnt 0x074; GFX12-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s375; GFX12-NEXT:    global_store_b64 v2, v[0:1], s[0:1]76; GFX12-NEXT:    s_endpgm77  %ld = load i64, ptr addrspace(4) %in78  store i64 %ld, ptr addrspace(1) %out79  ret void80}81 82define amdgpu_kernel void @constant_load_v2i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {83; GFX6-LABEL: constant_load_v2i64:84; GFX6:       ; %bb.0: ; %entry85; GFX6-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x986; GFX6-NEXT:    s_waitcnt lgkmcnt(0)87; GFX6-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x088; GFX6-NEXT:    s_mov_b32 s3, 0xf00089; GFX6-NEXT:    s_mov_b32 s2, -190; GFX6-NEXT:    s_waitcnt lgkmcnt(0)91; GFX6-NEXT:    v_mov_b32_e32 v0, s492; GFX6-NEXT:    v_mov_b32_e32 v1, s593; GFX6-NEXT:    v_mov_b32_e32 v2, s694; GFX6-NEXT:    v_mov_b32_e32 v3, s795; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 096; GFX6-NEXT:    s_endpgm97;98; GFX7-LABEL: constant_load_v2i64:99; GFX7:       ; %bb.0: ; %entry100; GFX7-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0101; GFX7-NEXT:    s_add_i32 s12, s12, s17102; GFX7-NEXT:    s_mov_b32 flat_scratch_lo, s13103; GFX7-NEXT:    s_lshr_b32 flat_scratch_hi, s12, 8104; GFX7-NEXT:    s_waitcnt lgkmcnt(0)105; GFX7-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0106; GFX7-NEXT:    v_mov_b32_e32 v4, s0107; GFX7-NEXT:    v_mov_b32_e32 v5, s1108; GFX7-NEXT:    s_waitcnt lgkmcnt(0)109; GFX7-NEXT:    v_mov_b32_e32 v0, s4110; GFX7-NEXT:    v_mov_b32_e32 v1, s5111; GFX7-NEXT:    v_mov_b32_e32 v2, s6112; GFX7-NEXT:    v_mov_b32_e32 v3, s7113; GFX7-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]114; GFX7-NEXT:    s_endpgm115;116; GFX8-LABEL: constant_load_v2i64:117; GFX8:       ; %bb.0: ; %entry118; GFX8-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24119; GFX8-NEXT:    s_waitcnt lgkmcnt(0)120; GFX8-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0121; GFX8-NEXT:    v_mov_b32_e32 v4, s0122; GFX8-NEXT:    v_mov_b32_e32 v5, s1123; GFX8-NEXT:    s_waitcnt lgkmcnt(0)124; GFX8-NEXT:    v_mov_b32_e32 v0, s4125; GFX8-NEXT:    v_mov_b32_e32 v1, s5126; GFX8-NEXT:    v_mov_b32_e32 v2, s6127; GFX8-NEXT:    v_mov_b32_e32 v3, s7128; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]129; GFX8-NEXT:    s_endpgm130;131; EG-LABEL: constant_load_v2i64:132; EG:       ; %bb.0: ; %entry133; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]134; EG-NEXT:    TEX 0 @6135; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]136; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T1.X, 1137; EG-NEXT:    CF_END138; EG-NEXT:    PAD139; EG-NEXT:    Fetch clause starting at 6:140; EG-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 0, #1141; EG-NEXT:    ALU clause starting at 8:142; EG-NEXT:     MOV * T0.X, KC0[2].Z,143; EG-NEXT:    ALU clause starting at 9:144; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,145; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)146;147; GFX12-LABEL: constant_load_v2i64:148; GFX12:       ; %bb.0: ; %entry149; GFX12-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24150; GFX12-NEXT:    s_wait_kmcnt 0x0151; GFX12-NEXT:    s_load_b128 s[4:7], s[2:3], 0x0152; GFX12-NEXT:    v_mov_b32_e32 v4, 0153; GFX12-NEXT:    s_wait_kmcnt 0x0154; GFX12-NEXT:    v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v3, s7155; GFX12-NEXT:    v_dual_mov_b32 v1, s5 :: v_dual_mov_b32 v2, s6156; GFX12-NEXT:    global_store_b128 v4, v[0:3], s[0:1]157; GFX12-NEXT:    s_endpgm158entry:159  %ld = load <2 x i64>, ptr addrspace(4) %in160  store <2 x i64> %ld, ptr addrspace(1) %out161  ret void162}163 164define amdgpu_kernel void @constant_load_v3i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {165; GFX6-LABEL: constant_load_v3i64:166; GFX6:       ; %bb.0: ; %entry167; GFX6-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9168; GFX6-NEXT:    s_waitcnt lgkmcnt(0)169; GFX6-NEXT:    s_load_dwordx2 s[8:9], s[2:3], 0x4170; GFX6-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0171; GFX6-NEXT:    s_mov_b32 s3, 0xf000172; GFX6-NEXT:    s_mov_b32 s2, -1173; GFX6-NEXT:    s_waitcnt lgkmcnt(0)174; GFX6-NEXT:    v_mov_b32_e32 v0, s8175; GFX6-NEXT:    v_mov_b32_e32 v1, s9176; GFX6-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0 offset:16177; GFX6-NEXT:    s_waitcnt expcnt(0)178; GFX6-NEXT:    v_mov_b32_e32 v0, s4179; GFX6-NEXT:    v_mov_b32_e32 v1, s5180; GFX6-NEXT:    v_mov_b32_e32 v2, s6181; GFX6-NEXT:    v_mov_b32_e32 v3, s7182; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0183; GFX6-NEXT:    s_endpgm184;185; GFX7-LABEL: constant_load_v3i64:186; GFX7:       ; %bb.0: ; %entry187; GFX7-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0188; GFX7-NEXT:    s_add_i32 s12, s12, s17189; GFX7-NEXT:    s_lshr_b32 flat_scratch_hi, s12, 8190; GFX7-NEXT:    s_mov_b32 flat_scratch_lo, s13191; GFX7-NEXT:    s_waitcnt lgkmcnt(0)192; GFX7-NEXT:    s_load_dwordx2 s[8:9], s[2:3], 0x4193; GFX7-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0194; GFX7-NEXT:    s_add_u32 s2, s0, 16195; GFX7-NEXT:    s_addc_u32 s3, s1, 0196; GFX7-NEXT:    v_mov_b32_e32 v4, s3197; GFX7-NEXT:    v_mov_b32_e32 v3, s2198; GFX7-NEXT:    s_waitcnt lgkmcnt(0)199; GFX7-NEXT:    v_mov_b32_e32 v5, s8200; GFX7-NEXT:    v_mov_b32_e32 v6, s9201; GFX7-NEXT:    flat_store_dwordx2 v[3:4], v[5:6]202; GFX7-NEXT:    v_mov_b32_e32 v5, s1203; GFX7-NEXT:    v_mov_b32_e32 v0, s4204; GFX7-NEXT:    v_mov_b32_e32 v1, s5205; GFX7-NEXT:    v_mov_b32_e32 v2, s6206; GFX7-NEXT:    v_mov_b32_e32 v3, s7207; GFX7-NEXT:    v_mov_b32_e32 v4, s0208; GFX7-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]209; GFX7-NEXT:    s_endpgm210;211; GFX8-LABEL: constant_load_v3i64:212; GFX8:       ; %bb.0: ; %entry213; GFX8-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24214; GFX8-NEXT:    s_waitcnt lgkmcnt(0)215; GFX8-NEXT:    s_load_dwordx2 s[8:9], s[2:3], 0x10216; GFX8-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0217; GFX8-NEXT:    s_add_u32 s2, s0, 16218; GFX8-NEXT:    s_addc_u32 s3, s1, 0219; GFX8-NEXT:    v_mov_b32_e32 v4, s3220; GFX8-NEXT:    v_mov_b32_e32 v3, s2221; GFX8-NEXT:    s_waitcnt lgkmcnt(0)222; GFX8-NEXT:    v_mov_b32_e32 v5, s8223; GFX8-NEXT:    v_mov_b32_e32 v6, s9224; GFX8-NEXT:    flat_store_dwordx2 v[3:4], v[5:6]225; GFX8-NEXT:    v_mov_b32_e32 v5, s1226; GFX8-NEXT:    v_mov_b32_e32 v0, s4227; GFX8-NEXT:    v_mov_b32_e32 v1, s5228; GFX8-NEXT:    v_mov_b32_e32 v2, s6229; GFX8-NEXT:    v_mov_b32_e32 v3, s7230; GFX8-NEXT:    v_mov_b32_e32 v4, s0231; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]232; GFX8-NEXT:    s_endpgm233;234; EG-LABEL: constant_load_v3i64:235; EG:       ; %bb.0: ; %entry236; EG-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]237; EG-NEXT:    TEX 0 @8238; EG-NEXT:    ALU 1, @13, KC0[CB0:0-32], KC1[]239; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0240; EG-NEXT:    TEX 0 @10241; EG-NEXT:    ALU 3, @15, KC0[CB0:0-32], KC1[]242; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1243; EG-NEXT:    CF_END244; EG-NEXT:    Fetch clause starting at 8:245; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 0, #1246; EG-NEXT:    Fetch clause starting at 10:247; EG-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 16, #1248; EG-NEXT:    ALU clause starting at 12:249; EG-NEXT:     MOV * T0.X, KC0[2].Z,250; EG-NEXT:    ALU clause starting at 13:251; EG-NEXT:     LSHR * T2.X, KC0[2].Y, literal.x,252; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)253; EG-NEXT:    ALU clause starting at 15:254; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,255; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)256; EG-NEXT:     LSHR * T1.X, PV.W, literal.x,257; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)258;259; GFX12-LABEL: constant_load_v3i64:260; GFX12:       ; %bb.0: ; %entry261; GFX12-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24262; GFX12-NEXT:    s_wait_kmcnt 0x0263; GFX12-NEXT:    s_clause 0x1264; GFX12-NEXT:    s_load_b64 s[8:9], s[2:3], 0x10265; GFX12-NEXT:    s_load_b128 s[4:7], s[2:3], 0x0266; GFX12-NEXT:    s_wait_kmcnt 0x0267; GFX12-NEXT:    v_dual_mov_b32 v6, 0 :: v_dual_mov_b32 v5, s9268; GFX12-NEXT:    v_dual_mov_b32 v4, s8 :: v_dual_mov_b32 v1, s5269; GFX12-NEXT:    v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v3, s7270; GFX12-NEXT:    v_mov_b32_e32 v2, s6271; GFX12-NEXT:    s_clause 0x1272; GFX12-NEXT:    global_store_b64 v6, v[4:5], s[0:1] offset:16273; GFX12-NEXT:    global_store_b128 v6, v[0:3], s[0:1]274; GFX12-NEXT:    s_endpgm275entry:276  %ld = load <3 x i64>, ptr addrspace(4) %in277  store <3 x i64> %ld, ptr addrspace(1) %out278  ret void279}280 281define amdgpu_kernel void @constant_load_v4i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {282; GFX6-LABEL: constant_load_v4i64:283; GFX6:       ; %bb.0: ; %entry284; GFX6-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x9285; GFX6-NEXT:    s_waitcnt lgkmcnt(0)286; GFX6-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0287; GFX6-NEXT:    s_mov_b32 s11, 0xf000288; GFX6-NEXT:    s_mov_b32 s10, -1289; GFX6-NEXT:    s_waitcnt lgkmcnt(0)290; GFX6-NEXT:    v_mov_b32_e32 v0, s4291; GFX6-NEXT:    v_mov_b32_e32 v1, s5292; GFX6-NEXT:    v_mov_b32_e32 v2, s6293; GFX6-NEXT:    v_mov_b32_e32 v3, s7294; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:16295; GFX6-NEXT:    s_waitcnt expcnt(0)296; GFX6-NEXT:    v_mov_b32_e32 v0, s0297; GFX6-NEXT:    v_mov_b32_e32 v1, s1298; GFX6-NEXT:    v_mov_b32_e32 v2, s2299; GFX6-NEXT:    v_mov_b32_e32 v3, s3300; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0301; GFX6-NEXT:    s_endpgm302;303; GFX7-LABEL: constant_load_v4i64:304; GFX7:       ; %bb.0: ; %entry305; GFX7-NEXT:    s_load_dwordx4 s[8:11], s[8:9], 0x0306; GFX7-NEXT:    s_add_i32 s12, s12, s17307; GFX7-NEXT:    s_lshr_b32 flat_scratch_hi, s12, 8308; GFX7-NEXT:    s_mov_b32 flat_scratch_lo, s13309; GFX7-NEXT:    s_waitcnt lgkmcnt(0)310; GFX7-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0311; GFX7-NEXT:    s_add_u32 s10, s8, 16312; GFX7-NEXT:    s_addc_u32 s11, s9, 0313; GFX7-NEXT:    v_mov_b32_e32 v6, s10314; GFX7-NEXT:    v_mov_b32_e32 v7, s11315; GFX7-NEXT:    s_waitcnt lgkmcnt(0)316; GFX7-NEXT:    v_mov_b32_e32 v0, s4317; GFX7-NEXT:    v_mov_b32_e32 v1, s5318; GFX7-NEXT:    v_mov_b32_e32 v2, s6319; GFX7-NEXT:    v_mov_b32_e32 v3, s7320; GFX7-NEXT:    flat_store_dwordx4 v[6:7], v[0:3]321; GFX7-NEXT:    v_mov_b32_e32 v4, s0322; GFX7-NEXT:    v_mov_b32_e32 v0, s8323; GFX7-NEXT:    v_mov_b32_e32 v5, s1324; GFX7-NEXT:    v_mov_b32_e32 v6, s2325; GFX7-NEXT:    v_mov_b32_e32 v7, s3326; GFX7-NEXT:    v_mov_b32_e32 v1, s9327; GFX7-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]328; GFX7-NEXT:    s_endpgm329;330; GFX8-LABEL: constant_load_v4i64:331; GFX8:       ; %bb.0: ; %entry332; GFX8-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x24333; GFX8-NEXT:    s_waitcnt lgkmcnt(0)334; GFX8-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0335; GFX8-NEXT:    s_add_u32 s10, s8, 16336; GFX8-NEXT:    s_addc_u32 s11, s9, 0337; GFX8-NEXT:    v_mov_b32_e32 v6, s10338; GFX8-NEXT:    v_mov_b32_e32 v7, s11339; GFX8-NEXT:    s_waitcnt lgkmcnt(0)340; GFX8-NEXT:    v_mov_b32_e32 v0, s4341; GFX8-NEXT:    v_mov_b32_e32 v1, s5342; GFX8-NEXT:    v_mov_b32_e32 v2, s6343; GFX8-NEXT:    v_mov_b32_e32 v3, s7344; GFX8-NEXT:    flat_store_dwordx4 v[6:7], v[0:3]345; GFX8-NEXT:    v_mov_b32_e32 v4, s0346; GFX8-NEXT:    v_mov_b32_e32 v0, s8347; GFX8-NEXT:    v_mov_b32_e32 v5, s1348; GFX8-NEXT:    v_mov_b32_e32 v6, s2349; GFX8-NEXT:    v_mov_b32_e32 v7, s3350; GFX8-NEXT:    v_mov_b32_e32 v1, s9351; GFX8-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]352; GFX8-NEXT:    s_endpgm353;354; EG-LABEL: constant_load_v4i64:355; EG:       ; %bb.0: ; %entry356; EG-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]357; EG-NEXT:    TEX 0 @8358; EG-NEXT:    ALU 3, @13, KC0[CB0:0-32], KC1[]359; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0360; EG-NEXT:    TEX 0 @10361; EG-NEXT:    ALU 1, @17, KC0[CB0:0-32], KC1[]362; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T1.X, 1363; EG-NEXT:    CF_END364; EG-NEXT:    Fetch clause starting at 8:365; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 16, #1366; EG-NEXT:    Fetch clause starting at 10:367; EG-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 0, #1368; EG-NEXT:    ALU clause starting at 12:369; EG-NEXT:     MOV * T0.X, KC0[2].Z,370; EG-NEXT:    ALU clause starting at 13:371; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,372; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)373; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,374; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)375; EG-NEXT:    ALU clause starting at 17:376; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,377; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)378;379; GFX12-LABEL: constant_load_v4i64:380; GFX12:       ; %bb.0: ; %entry381; GFX12-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24382; GFX12-NEXT:    s_wait_kmcnt 0x0383; GFX12-NEXT:    s_load_b256 s[0:7], s[10:11], 0x0384; GFX12-NEXT:    s_wait_kmcnt 0x0385; GFX12-NEXT:    v_dual_mov_b32 v8, 0 :: v_dual_mov_b32 v1, s5386; GFX12-NEXT:    v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v3, s7387; GFX12-NEXT:    v_dual_mov_b32 v2, s6 :: v_dual_mov_b32 v5, s1388; GFX12-NEXT:    v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v7, s3389; GFX12-NEXT:    v_mov_b32_e32 v6, s2390; GFX12-NEXT:    s_clause 0x1391; GFX12-NEXT:    global_store_b128 v8, v[0:3], s[8:9] offset:16392; GFX12-NEXT:    global_store_b128 v8, v[4:7], s[8:9]393; GFX12-NEXT:    s_endpgm394entry:395  %ld = load <4 x i64>, ptr addrspace(4) %in396  store <4 x i64> %ld, ptr addrspace(1) %out397  ret void398}399 400define amdgpu_kernel void @constant_load_v8i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {401; GFX6-LABEL: constant_load_v8i64:402; GFX6:       ; %bb.0: ; %entry403; GFX6-NEXT:    s_load_dwordx4 s[16:19], s[4:5], 0x9404; GFX6-NEXT:    s_waitcnt lgkmcnt(0)405; GFX6-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0406; GFX6-NEXT:    s_mov_b32 s19, 0xf000407; GFX6-NEXT:    s_mov_b32 s18, -1408; GFX6-NEXT:    s_waitcnt lgkmcnt(0)409; GFX6-NEXT:    v_mov_b32_e32 v0, s12410; GFX6-NEXT:    v_mov_b32_e32 v1, s13411; GFX6-NEXT:    v_mov_b32_e32 v2, s14412; GFX6-NEXT:    v_mov_b32_e32 v3, s15413; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:48414; GFX6-NEXT:    s_waitcnt expcnt(0)415; GFX6-NEXT:    v_mov_b32_e32 v0, s8416; GFX6-NEXT:    v_mov_b32_e32 v1, s9417; GFX6-NEXT:    v_mov_b32_e32 v2, s10418; GFX6-NEXT:    v_mov_b32_e32 v3, s11419; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:32420; GFX6-NEXT:    s_waitcnt expcnt(0)421; GFX6-NEXT:    v_mov_b32_e32 v0, s4422; GFX6-NEXT:    v_mov_b32_e32 v1, s5423; GFX6-NEXT:    v_mov_b32_e32 v2, s6424; GFX6-NEXT:    v_mov_b32_e32 v3, s7425; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:16426; GFX6-NEXT:    s_waitcnt expcnt(0)427; GFX6-NEXT:    v_mov_b32_e32 v0, s0428; GFX6-NEXT:    v_mov_b32_e32 v1, s1429; GFX6-NEXT:    v_mov_b32_e32 v2, s2430; GFX6-NEXT:    v_mov_b32_e32 v3, s3431; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0432; GFX6-NEXT:    s_endpgm433;434; GFX7-LABEL: constant_load_v8i64:435; GFX7:       ; %bb.0: ; %entry436; GFX7-NEXT:    s_add_i32 s12, s12, s17437; GFX7-NEXT:    s_load_dwordx4 s[16:19], s[8:9], 0x0438; GFX7-NEXT:    s_mov_b32 flat_scratch_lo, s13439; GFX7-NEXT:    s_lshr_b32 flat_scratch_hi, s12, 8440; GFX7-NEXT:    s_waitcnt lgkmcnt(0)441; GFX7-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0442; GFX7-NEXT:    s_add_u32 s18, s16, 48443; GFX7-NEXT:    s_addc_u32 s19, s17, 0444; GFX7-NEXT:    v_mov_b32_e32 v6, s18445; GFX7-NEXT:    v_mov_b32_e32 v7, s19446; GFX7-NEXT:    s_waitcnt lgkmcnt(0)447; GFX7-NEXT:    v_mov_b32_e32 v0, s12448; GFX7-NEXT:    v_mov_b32_e32 v1, s13449; GFX7-NEXT:    v_mov_b32_e32 v2, s14450; GFX7-NEXT:    v_mov_b32_e32 v3, s15451; GFX7-NEXT:    v_mov_b32_e32 v4, s8452; GFX7-NEXT:    s_add_u32 s8, s16, 32453; GFX7-NEXT:    v_mov_b32_e32 v5, s9454; GFX7-NEXT:    flat_store_dwordx4 v[6:7], v[0:3]455; GFX7-NEXT:    s_addc_u32 s9, s17, 0456; GFX7-NEXT:    v_mov_b32_e32 v0, s8457; GFX7-NEXT:    v_mov_b32_e32 v6, s10458; GFX7-NEXT:    v_mov_b32_e32 v7, s11459; GFX7-NEXT:    v_mov_b32_e32 v1, s9460; GFX7-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]461; GFX7-NEXT:    v_mov_b32_e32 v0, s4462; GFX7-NEXT:    s_add_u32 s4, s16, 16463; GFX7-NEXT:    v_mov_b32_e32 v1, s5464; GFX7-NEXT:    s_addc_u32 s5, s17, 0465; GFX7-NEXT:    v_mov_b32_e32 v4, s4466; GFX7-NEXT:    v_mov_b32_e32 v2, s6467; GFX7-NEXT:    v_mov_b32_e32 v3, s7468; GFX7-NEXT:    v_mov_b32_e32 v5, s5469; GFX7-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]470; GFX7-NEXT:    v_mov_b32_e32 v4, s16471; GFX7-NEXT:    v_mov_b32_e32 v0, s0472; GFX7-NEXT:    v_mov_b32_e32 v1, s1473; GFX7-NEXT:    v_mov_b32_e32 v2, s2474; GFX7-NEXT:    v_mov_b32_e32 v3, s3475; GFX7-NEXT:    v_mov_b32_e32 v5, s17476; GFX7-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]477; GFX7-NEXT:    s_endpgm478;479; GFX8-LABEL: constant_load_v8i64:480; GFX8:       ; %bb.0: ; %entry481; GFX8-NEXT:    s_load_dwordx4 s[16:19], s[4:5], 0x24482; GFX8-NEXT:    s_waitcnt lgkmcnt(0)483; GFX8-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0484; GFX8-NEXT:    s_add_u32 s18, s16, 48485; GFX8-NEXT:    s_addc_u32 s19, s17, 0486; GFX8-NEXT:    v_mov_b32_e32 v6, s18487; GFX8-NEXT:    v_mov_b32_e32 v7, s19488; GFX8-NEXT:    s_waitcnt lgkmcnt(0)489; GFX8-NEXT:    v_mov_b32_e32 v0, s12490; GFX8-NEXT:    v_mov_b32_e32 v1, s13491; GFX8-NEXT:    v_mov_b32_e32 v2, s14492; GFX8-NEXT:    v_mov_b32_e32 v3, s15493; GFX8-NEXT:    v_mov_b32_e32 v4, s8494; GFX8-NEXT:    s_add_u32 s8, s16, 32495; GFX8-NEXT:    v_mov_b32_e32 v5, s9496; GFX8-NEXT:    flat_store_dwordx4 v[6:7], v[0:3]497; GFX8-NEXT:    s_addc_u32 s9, s17, 0498; GFX8-NEXT:    v_mov_b32_e32 v0, s8499; GFX8-NEXT:    v_mov_b32_e32 v6, s10500; GFX8-NEXT:    v_mov_b32_e32 v7, s11501; GFX8-NEXT:    v_mov_b32_e32 v1, s9502; GFX8-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]503; GFX8-NEXT:    v_mov_b32_e32 v0, s4504; GFX8-NEXT:    s_add_u32 s4, s16, 16505; GFX8-NEXT:    v_mov_b32_e32 v1, s5506; GFX8-NEXT:    s_addc_u32 s5, s17, 0507; GFX8-NEXT:    v_mov_b32_e32 v4, s4508; GFX8-NEXT:    v_mov_b32_e32 v2, s6509; GFX8-NEXT:    v_mov_b32_e32 v3, s7510; GFX8-NEXT:    v_mov_b32_e32 v5, s5511; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]512; GFX8-NEXT:    v_mov_b32_e32 v4, s16513; GFX8-NEXT:    v_mov_b32_e32 v0, s0514; GFX8-NEXT:    v_mov_b32_e32 v1, s1515; GFX8-NEXT:    v_mov_b32_e32 v2, s2516; GFX8-NEXT:    v_mov_b32_e32 v3, s3517; GFX8-NEXT:    v_mov_b32_e32 v5, s17518; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]519; GFX8-NEXT:    s_endpgm520;521; EG-LABEL: constant_load_v8i64:522; EG:       ; %bb.0: ; %entry523; EG-NEXT:    ALU 0, @22, KC0[CB0:0-32], KC1[]524; EG-NEXT:    TEX 0 @14525; EG-NEXT:    ALU 3, @23, KC0[CB0:0-32], KC1[]526; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0527; EG-NEXT:    TEX 0 @16528; EG-NEXT:    ALU 3, @27, KC0[CB0:0-32], KC1[]529; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0530; EG-NEXT:    TEX 0 @18531; EG-NEXT:    ALU 3, @31, KC0[CB0:0-32], KC1[]532; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0533; EG-NEXT:    TEX 0 @20534; EG-NEXT:    ALU 1, @35, KC0[CB0:0-32], KC1[]535; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T1.X, 1536; EG-NEXT:    CF_END537; EG-NEXT:    Fetch clause starting at 14:538; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 48, #1539; EG-NEXT:    Fetch clause starting at 16:540; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 32, #1541; EG-NEXT:    Fetch clause starting at 18:542; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 16, #1543; EG-NEXT:    Fetch clause starting at 20:544; EG-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 0, #1545; EG-NEXT:    ALU clause starting at 22:546; EG-NEXT:     MOV * T0.X, KC0[2].Z,547; EG-NEXT:    ALU clause starting at 23:548; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,549; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)550; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,551; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)552; EG-NEXT:    ALU clause starting at 27:553; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,554; EG-NEXT:    32(4.484155e-44), 0(0.000000e+00)555; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,556; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)557; EG-NEXT:    ALU clause starting at 31:558; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,559; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)560; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,561; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)562; EG-NEXT:    ALU clause starting at 35:563; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,564; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)565;566; GFX12-LABEL: constant_load_v8i64:567; GFX12:       ; %bb.0: ; %entry568; GFX12-NEXT:    s_load_b128 s[16:19], s[4:5], 0x24569; GFX12-NEXT:    s_wait_kmcnt 0x0570; GFX12-NEXT:    s_load_b512 s[0:15], s[18:19], 0x0571; GFX12-NEXT:    s_wait_kmcnt 0x0572; GFX12-NEXT:    v_dual_mov_b32 v16, 0 :: v_dual_mov_b32 v1, s13573; GFX12-NEXT:    v_dual_mov_b32 v0, s12 :: v_dual_mov_b32 v3, s15574; GFX12-NEXT:    v_dual_mov_b32 v2, s14 :: v_dual_mov_b32 v5, s9575; GFX12-NEXT:    v_dual_mov_b32 v4, s8 :: v_dual_mov_b32 v7, s11576; GFX12-NEXT:    v_dual_mov_b32 v6, s10 :: v_dual_mov_b32 v9, s5577; GFX12-NEXT:    v_dual_mov_b32 v8, s4 :: v_dual_mov_b32 v11, s7578; GFX12-NEXT:    v_dual_mov_b32 v10, s6 :: v_dual_mov_b32 v13, s1579; GFX12-NEXT:    v_dual_mov_b32 v12, s0 :: v_dual_mov_b32 v15, s3580; GFX12-NEXT:    v_mov_b32_e32 v14, s2581; GFX12-NEXT:    s_clause 0x3582; GFX12-NEXT:    global_store_b128 v16, v[0:3], s[16:17] offset:48583; GFX12-NEXT:    global_store_b128 v16, v[4:7], s[16:17] offset:32584; GFX12-NEXT:    global_store_b128 v16, v[8:11], s[16:17] offset:16585; GFX12-NEXT:    global_store_b128 v16, v[12:15], s[16:17]586; GFX12-NEXT:    s_endpgm587entry:588  %ld = load <8 x i64>, ptr addrspace(4) %in589  store <8 x i64> %ld, ptr addrspace(1) %out590  ret void591}592 593define amdgpu_kernel void @constant_load_v16i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {594; GFX6-LABEL: constant_load_v16i64:595; GFX6:       ; %bb.0: ; %entry596; GFX6-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9597; GFX6-NEXT:    s_waitcnt lgkmcnt(0)598; GFX6-NEXT:    s_load_dwordx16 s[16:31], s[2:3], 0x10599; GFX6-NEXT:    s_mov_b32 s39, 0xf000600; GFX6-NEXT:    s_mov_b32 s38, -1601; GFX6-NEXT:    s_mov_b32 s36, s0602; GFX6-NEXT:    s_mov_b32 s37, s1603; GFX6-NEXT:    s_load_dwordx16 s[0:15], s[2:3], 0x0604; GFX6-NEXT:    s_waitcnt lgkmcnt(0)605; GFX6-NEXT:    v_mov_b32_e32 v0, s28606; GFX6-NEXT:    v_mov_b32_e32 v1, s29607; GFX6-NEXT:    v_mov_b32_e32 v2, s30608; GFX6-NEXT:    v_mov_b32_e32 v3, s31609; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[36:39], 0 offset:112610; GFX6-NEXT:    s_waitcnt expcnt(0)611; GFX6-NEXT:    v_mov_b32_e32 v0, s24612; GFX6-NEXT:    v_mov_b32_e32 v1, s25613; GFX6-NEXT:    v_mov_b32_e32 v2, s26614; GFX6-NEXT:    v_mov_b32_e32 v3, s27615; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[36:39], 0 offset:96616; GFX6-NEXT:    s_waitcnt expcnt(0)617; GFX6-NEXT:    v_mov_b32_e32 v0, s20618; GFX6-NEXT:    v_mov_b32_e32 v1, s21619; GFX6-NEXT:    v_mov_b32_e32 v2, s22620; GFX6-NEXT:    v_mov_b32_e32 v3, s23621; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[36:39], 0 offset:80622; GFX6-NEXT:    s_waitcnt expcnt(0)623; GFX6-NEXT:    v_mov_b32_e32 v0, s16624; GFX6-NEXT:    v_mov_b32_e32 v1, s17625; GFX6-NEXT:    v_mov_b32_e32 v2, s18626; GFX6-NEXT:    v_mov_b32_e32 v3, s19627; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[36:39], 0 offset:64628; GFX6-NEXT:    s_waitcnt expcnt(0)629; GFX6-NEXT:    v_mov_b32_e32 v0, s12630; GFX6-NEXT:    v_mov_b32_e32 v1, s13631; GFX6-NEXT:    v_mov_b32_e32 v2, s14632; GFX6-NEXT:    v_mov_b32_e32 v3, s15633; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[36:39], 0 offset:48634; GFX6-NEXT:    s_waitcnt expcnt(0)635; GFX6-NEXT:    v_mov_b32_e32 v0, s8636; GFX6-NEXT:    v_mov_b32_e32 v1, s9637; GFX6-NEXT:    v_mov_b32_e32 v2, s10638; GFX6-NEXT:    v_mov_b32_e32 v3, s11639; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[36:39], 0 offset:32640; GFX6-NEXT:    s_waitcnt expcnt(0)641; GFX6-NEXT:    v_mov_b32_e32 v0, s4642; GFX6-NEXT:    v_mov_b32_e32 v1, s5643; GFX6-NEXT:    v_mov_b32_e32 v2, s6644; GFX6-NEXT:    v_mov_b32_e32 v3, s7645; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[36:39], 0 offset:16646; GFX6-NEXT:    s_waitcnt expcnt(0)647; GFX6-NEXT:    v_mov_b32_e32 v0, s0648; GFX6-NEXT:    v_mov_b32_e32 v1, s1649; GFX6-NEXT:    v_mov_b32_e32 v2, s2650; GFX6-NEXT:    v_mov_b32_e32 v3, s3651; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[36:39], 0652; GFX6-NEXT:    s_endpgm653;654; GFX7-LABEL: constant_load_v16i64:655; GFX7:       ; %bb.0: ; %entry656; GFX7-NEXT:    s_add_i32 s12, s12, s17657; GFX7-NEXT:    s_load_dwordx4 s[16:19], s[8:9], 0x0658; GFX7-NEXT:    s_mov_b32 flat_scratch_lo, s13659; GFX7-NEXT:    s_lshr_b32 flat_scratch_hi, s12, 8660; GFX7-NEXT:    s_waitcnt lgkmcnt(0)661; GFX7-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x10662; GFX7-NEXT:    s_waitcnt lgkmcnt(0)663; GFX7-NEXT:    v_mov_b32_e32 v0, s12664; GFX7-NEXT:    v_mov_b32_e32 v1, s13665; GFX7-NEXT:    v_mov_b32_e32 v2, s14666; GFX7-NEXT:    v_mov_b32_e32 v3, s15667; GFX7-NEXT:    v_mov_b32_e32 v4, s8668; GFX7-NEXT:    v_mov_b32_e32 v5, s9669; GFX7-NEXT:    v_mov_b32_e32 v6, s10670; GFX7-NEXT:    v_mov_b32_e32 v7, s11671; GFX7-NEXT:    v_mov_b32_e32 v8, s4672; GFX7-NEXT:    v_mov_b32_e32 v9, s5673; GFX7-NEXT:    v_mov_b32_e32 v10, s6674; GFX7-NEXT:    v_mov_b32_e32 v11, s7675; GFX7-NEXT:    v_mov_b32_e32 v12, s0676; GFX7-NEXT:    v_mov_b32_e32 v13, s1677; GFX7-NEXT:    v_mov_b32_e32 v14, s2678; GFX7-NEXT:    v_mov_b32_e32 v15, s3679; GFX7-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0680; GFX7-NEXT:    s_add_u32 s18, s16, 0x70681; GFX7-NEXT:    s_addc_u32 s19, s17, 0682; GFX7-NEXT:    v_mov_b32_e32 v16, s18683; GFX7-NEXT:    v_mov_b32_e32 v17, s19684; GFX7-NEXT:    s_add_u32 s18, s16, 0x60685; GFX7-NEXT:    flat_store_dwordx4 v[16:17], v[0:3]686; GFX7-NEXT:    s_addc_u32 s19, s17, 0687; GFX7-NEXT:    v_mov_b32_e32 v0, s18688; GFX7-NEXT:    v_mov_b32_e32 v1, s19689; GFX7-NEXT:    s_add_u32 s18, s16, 0x50690; GFX7-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]691; GFX7-NEXT:    s_addc_u32 s19, s17, 0692; GFX7-NEXT:    v_mov_b32_e32 v0, s18693; GFX7-NEXT:    v_mov_b32_e32 v1, s19694; GFX7-NEXT:    s_add_u32 s18, s16, 64695; GFX7-NEXT:    flat_store_dwordx4 v[0:1], v[8:11]696; GFX7-NEXT:    s_addc_u32 s19, s17, 0697; GFX7-NEXT:    v_mov_b32_e32 v0, s18698; GFX7-NEXT:    v_mov_b32_e32 v1, s19699; GFX7-NEXT:    flat_store_dwordx4 v[0:1], v[12:15]700; GFX7-NEXT:    s_waitcnt lgkmcnt(0)701; GFX7-NEXT:    v_mov_b32_e32 v0, s12702; GFX7-NEXT:    s_add_u32 s12, s16, 48703; GFX7-NEXT:    v_mov_b32_e32 v1, s13704; GFX7-NEXT:    s_addc_u32 s13, s17, 0705; GFX7-NEXT:    v_mov_b32_e32 v4, s12706; GFX7-NEXT:    v_mov_b32_e32 v2, s14707; GFX7-NEXT:    v_mov_b32_e32 v3, s15708; GFX7-NEXT:    v_mov_b32_e32 v5, s13709; GFX7-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]710; GFX7-NEXT:    s_nop 0711; GFX7-NEXT:    v_mov_b32_e32 v0, s8712; GFX7-NEXT:    s_add_u32 s8, s16, 32713; GFX7-NEXT:    v_mov_b32_e32 v1, s9714; GFX7-NEXT:    s_addc_u32 s9, s17, 0715; GFX7-NEXT:    v_mov_b32_e32 v4, s8716; GFX7-NEXT:    v_mov_b32_e32 v2, s10717; GFX7-NEXT:    v_mov_b32_e32 v3, s11718; GFX7-NEXT:    v_mov_b32_e32 v5, s9719; GFX7-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]720; GFX7-NEXT:    s_nop 0721; GFX7-NEXT:    v_mov_b32_e32 v0, s4722; GFX7-NEXT:    s_add_u32 s4, s16, 16723; GFX7-NEXT:    v_mov_b32_e32 v1, s5724; GFX7-NEXT:    s_addc_u32 s5, s17, 0725; GFX7-NEXT:    v_mov_b32_e32 v4, s4726; GFX7-NEXT:    v_mov_b32_e32 v2, s6727; GFX7-NEXT:    v_mov_b32_e32 v3, s7728; GFX7-NEXT:    v_mov_b32_e32 v5, s5729; GFX7-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]730; GFX7-NEXT:    v_mov_b32_e32 v4, s16731; GFX7-NEXT:    v_mov_b32_e32 v0, s0732; GFX7-NEXT:    v_mov_b32_e32 v1, s1733; GFX7-NEXT:    v_mov_b32_e32 v2, s2734; GFX7-NEXT:    v_mov_b32_e32 v3, s3735; GFX7-NEXT:    v_mov_b32_e32 v5, s17736; GFX7-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]737; GFX7-NEXT:    s_endpgm738;739; GFX8-LABEL: constant_load_v16i64:740; GFX8:       ; %bb.0: ; %entry741; GFX8-NEXT:    s_load_dwordx4 s[36:39], s[4:5], 0x24742; GFX8-NEXT:    s_waitcnt lgkmcnt(0)743; GFX8-NEXT:    s_load_dwordx16 s[16:31], s[38:39], 0x40744; GFX8-NEXT:    s_load_dwordx16 s[0:15], s[38:39], 0x0745; GFX8-NEXT:    s_add_u32 s34, s36, 0x70746; GFX8-NEXT:    s_addc_u32 s35, s37, 0747; GFX8-NEXT:    v_mov_b32_e32 v5, s34748; GFX8-NEXT:    v_mov_b32_e32 v6, s35749; GFX8-NEXT:    s_waitcnt lgkmcnt(0)750; GFX8-NEXT:    v_mov_b32_e32 v0, s28751; GFX8-NEXT:    v_mov_b32_e32 v1, s29752; GFX8-NEXT:    v_mov_b32_e32 v2, s30753; GFX8-NEXT:    v_mov_b32_e32 v3, s31754; GFX8-NEXT:    v_mov_b32_e32 v4, s24755; GFX8-NEXT:    s_add_u32 s24, s36, 0x60756; GFX8-NEXT:    flat_store_dwordx4 v[5:6], v[0:3]757; GFX8-NEXT:    v_mov_b32_e32 v5, s25758; GFX8-NEXT:    s_addc_u32 s25, s37, 0759; GFX8-NEXT:    v_mov_b32_e32 v0, s24760; GFX8-NEXT:    v_mov_b32_e32 v6, s26761; GFX8-NEXT:    v_mov_b32_e32 v7, s27762; GFX8-NEXT:    v_mov_b32_e32 v1, s25763; GFX8-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]764; GFX8-NEXT:    v_mov_b32_e32 v0, s20765; GFX8-NEXT:    s_add_u32 s20, s36, 0x50766; GFX8-NEXT:    v_mov_b32_e32 v1, s21767; GFX8-NEXT:    s_addc_u32 s21, s37, 0768; GFX8-NEXT:    v_mov_b32_e32 v4, s20769; GFX8-NEXT:    v_mov_b32_e32 v2, s22770; GFX8-NEXT:    v_mov_b32_e32 v3, s23771; GFX8-NEXT:    v_mov_b32_e32 v5, s21772; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]773; GFX8-NEXT:    s_nop 0774; GFX8-NEXT:    v_mov_b32_e32 v0, s16775; GFX8-NEXT:    s_add_u32 s16, s36, 64776; GFX8-NEXT:    v_mov_b32_e32 v1, s17777; GFX8-NEXT:    s_addc_u32 s17, s37, 0778; GFX8-NEXT:    v_mov_b32_e32 v4, s16779; GFX8-NEXT:    v_mov_b32_e32 v2, s18780; GFX8-NEXT:    v_mov_b32_e32 v3, s19781; GFX8-NEXT:    v_mov_b32_e32 v5, s17782; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]783; GFX8-NEXT:    s_nop 0784; GFX8-NEXT:    v_mov_b32_e32 v0, s12785; GFX8-NEXT:    s_add_u32 s12, s36, 48786; GFX8-NEXT:    v_mov_b32_e32 v1, s13787; GFX8-NEXT:    s_addc_u32 s13, s37, 0788; GFX8-NEXT:    v_mov_b32_e32 v4, s12789; GFX8-NEXT:    v_mov_b32_e32 v2, s14790; GFX8-NEXT:    v_mov_b32_e32 v3, s15791; GFX8-NEXT:    v_mov_b32_e32 v5, s13792; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]793; GFX8-NEXT:    s_nop 0794; GFX8-NEXT:    v_mov_b32_e32 v0, s8795; GFX8-NEXT:    s_add_u32 s8, s36, 32796; GFX8-NEXT:    v_mov_b32_e32 v1, s9797; GFX8-NEXT:    s_addc_u32 s9, s37, 0798; GFX8-NEXT:    v_mov_b32_e32 v4, s8799; GFX8-NEXT:    v_mov_b32_e32 v2, s10800; GFX8-NEXT:    v_mov_b32_e32 v3, s11801; GFX8-NEXT:    v_mov_b32_e32 v5, s9802; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]803; GFX8-NEXT:    s_nop 0804; GFX8-NEXT:    v_mov_b32_e32 v0, s4805; GFX8-NEXT:    s_add_u32 s4, s36, 16806; GFX8-NEXT:    v_mov_b32_e32 v1, s5807; GFX8-NEXT:    s_addc_u32 s5, s37, 0808; GFX8-NEXT:    v_mov_b32_e32 v4, s4809; GFX8-NEXT:    v_mov_b32_e32 v2, s6810; GFX8-NEXT:    v_mov_b32_e32 v3, s7811; GFX8-NEXT:    v_mov_b32_e32 v5, s5812; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]813; GFX8-NEXT:    v_mov_b32_e32 v4, s36814; GFX8-NEXT:    v_mov_b32_e32 v0, s0815; GFX8-NEXT:    v_mov_b32_e32 v1, s1816; GFX8-NEXT:    v_mov_b32_e32 v2, s2817; GFX8-NEXT:    v_mov_b32_e32 v3, s3818; GFX8-NEXT:    v_mov_b32_e32 v5, s37819; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]820; GFX8-NEXT:    s_endpgm821;822; EG-LABEL: constant_load_v16i64:823; EG:       ; %bb.0: ; %entry824; EG-NEXT:    ALU 0, @42, KC0[CB0:0-32], KC1[]825; EG-NEXT:    TEX 0 @26826; EG-NEXT:    ALU 3, @43, KC0[CB0:0-32], KC1[]827; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0828; EG-NEXT:    TEX 0 @28829; EG-NEXT:    ALU 3, @47, KC0[CB0:0-32], KC1[]830; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0831; EG-NEXT:    TEX 0 @30832; EG-NEXT:    ALU 3, @51, KC0[CB0:0-32], KC1[]833; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0834; EG-NEXT:    TEX 0 @32835; EG-NEXT:    ALU 3, @55, KC0[CB0:0-32], KC1[]836; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0837; EG-NEXT:    TEX 0 @34838; EG-NEXT:    ALU 3, @59, KC0[CB0:0-32], KC1[]839; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0840; EG-NEXT:    TEX 0 @36841; EG-NEXT:    ALU 3, @63, KC0[CB0:0-32], KC1[]842; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0843; EG-NEXT:    TEX 0 @38844; EG-NEXT:    ALU 3, @67, KC0[CB0:0-32], KC1[]845; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0846; EG-NEXT:    TEX 0 @40847; EG-NEXT:    ALU 1, @71, KC0[CB0:0-32], KC1[]848; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T1.X, 1849; EG-NEXT:    CF_END850; EG-NEXT:    Fetch clause starting at 26:851; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 112, #1852; EG-NEXT:    Fetch clause starting at 28:853; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 96, #1854; EG-NEXT:    Fetch clause starting at 30:855; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 80, #1856; EG-NEXT:    Fetch clause starting at 32:857; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 64, #1858; EG-NEXT:    Fetch clause starting at 34:859; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 48, #1860; EG-NEXT:    Fetch clause starting at 36:861; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 32, #1862; EG-NEXT:    Fetch clause starting at 38:863; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 16, #1864; EG-NEXT:    Fetch clause starting at 40:865; EG-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 0, #1866; EG-NEXT:    ALU clause starting at 42:867; EG-NEXT:     MOV * T0.X, KC0[2].Z,868; EG-NEXT:    ALU clause starting at 43:869; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,870; EG-NEXT:    112(1.569454e-43), 0(0.000000e+00)871; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,872; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)873; EG-NEXT:    ALU clause starting at 47:874; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,875; EG-NEXT:    96(1.345247e-43), 0(0.000000e+00)876; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,877; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)878; EG-NEXT:    ALU clause starting at 51:879; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,880; EG-NEXT:    80(1.121039e-43), 0(0.000000e+00)881; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,882; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)883; EG-NEXT:    ALU clause starting at 55:884; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,885; EG-NEXT:    64(8.968310e-44), 0(0.000000e+00)886; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,887; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)888; EG-NEXT:    ALU clause starting at 59:889; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,890; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)891; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,892; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)893; EG-NEXT:    ALU clause starting at 63:894; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,895; EG-NEXT:    32(4.484155e-44), 0(0.000000e+00)896; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,897; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)898; EG-NEXT:    ALU clause starting at 67:899; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,900; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)901; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,902; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)903; EG-NEXT:    ALU clause starting at 71:904; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,905; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)906;907; GFX12-LABEL: constant_load_v16i64:908; GFX12:       ; %bb.0: ; %entry909; GFX12-NEXT:    s_load_b128 s[36:39], s[4:5], 0x24910; GFX12-NEXT:    s_wait_kmcnt 0x0911; GFX12-NEXT:    s_clause 0x1912; GFX12-NEXT:    s_load_b512 s[16:31], s[38:39], 0x40913; GFX12-NEXT:    s_load_b512 s[0:15], s[38:39], 0x0914; GFX12-NEXT:    s_wait_kmcnt 0x0915; GFX12-NEXT:    v_dual_mov_b32 v32, 0 :: v_dual_mov_b32 v1, s29916; GFX12-NEXT:    v_dual_mov_b32 v0, s28 :: v_dual_mov_b32 v3, s31917; GFX12-NEXT:    v_dual_mov_b32 v2, s30 :: v_dual_mov_b32 v5, s25918; GFX12-NEXT:    v_dual_mov_b32 v4, s24 :: v_dual_mov_b32 v7, s27919; GFX12-NEXT:    v_dual_mov_b32 v6, s26 :: v_dual_mov_b32 v9, s21920; GFX12-NEXT:    v_dual_mov_b32 v8, s20 :: v_dual_mov_b32 v11, s23921; GFX12-NEXT:    v_dual_mov_b32 v10, s22 :: v_dual_mov_b32 v13, s17922; GFX12-NEXT:    v_dual_mov_b32 v12, s16 :: v_dual_mov_b32 v15, s19923; GFX12-NEXT:    v_dual_mov_b32 v14, s18 :: v_dual_mov_b32 v17, s13924; GFX12-NEXT:    v_dual_mov_b32 v16, s12 :: v_dual_mov_b32 v19, s15925; GFX12-NEXT:    v_dual_mov_b32 v18, s14 :: v_dual_mov_b32 v21, s9926; GFX12-NEXT:    v_dual_mov_b32 v20, s8 :: v_dual_mov_b32 v23, s11927; GFX12-NEXT:    v_dual_mov_b32 v22, s10 :: v_dual_mov_b32 v25, s5928; GFX12-NEXT:    v_dual_mov_b32 v24, s4 :: v_dual_mov_b32 v27, s7929; GFX12-NEXT:    v_dual_mov_b32 v26, s6 :: v_dual_mov_b32 v29, s1930; GFX12-NEXT:    v_dual_mov_b32 v28, s0 :: v_dual_mov_b32 v31, s3931; GFX12-NEXT:    v_mov_b32_e32 v30, s2932; GFX12-NEXT:    s_clause 0x7933; GFX12-NEXT:    global_store_b128 v32, v[0:3], s[36:37] offset:112934; GFX12-NEXT:    global_store_b128 v32, v[4:7], s[36:37] offset:96935; GFX12-NEXT:    global_store_b128 v32, v[8:11], s[36:37] offset:80936; GFX12-NEXT:    global_store_b128 v32, v[12:15], s[36:37] offset:64937; GFX12-NEXT:    global_store_b128 v32, v[16:19], s[36:37] offset:48938; GFX12-NEXT:    global_store_b128 v32, v[20:23], s[36:37] offset:32939; GFX12-NEXT:    global_store_b128 v32, v[24:27], s[36:37] offset:16940; GFX12-NEXT:    global_store_b128 v32, v[28:31], s[36:37]941; GFX12-NEXT:    s_endpgm942entry:943  %ld = load <16 x i64>, ptr addrspace(4) %in944  store <16 x i64> %ld, ptr addrspace(1) %out945  ret void946}947 948attributes #0 = { nounwind }949