brintos

brintos / llvm-project-archived public Read only

0
0
Text · 209.9 KiB · 9444841 Raw
4275 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx700 < %s | FileCheck -check-prefixes=GFX7,GFX7-SDAG %s3; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx700 < %s | FileCheck -check-prefixes=GFX7,GFX7-GISEL %s4; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx801 < %s | FileCheck -check-prefixes=GFX8,GFX8-SDAG %s5; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx801 < %s | FileCheck -check-prefixes=GFX8,GFX8-GISEL %s6; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx942 < %s | FileCheck -check-prefixes=GFX9,GFX9-SDAG %s7; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx942 < %s | FileCheck -check-prefixes=GFX9,GFX9-GISEL %s8; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1010 < %s | FileCheck -check-prefixes=GFX10,GFX10-SDAG %s9; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1010 < %s | FileCheck -check-prefixes=GFX10,GFX10-GISEL %s10; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1100 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-SDAG,GFX11-SDAG-TRUE16 %s11; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1100 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-SDAG,GFX11-SDAG-FAKE16 %s12; FIXME-TRUE16. enable gisel13; XUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1100 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-GISEL,GFX11-GISEL-TRUE16 %s14; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1100 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-GISEL,GFX11-GISEL-FAKE16 %s15; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1200 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-SDAG,GFX12-SDAG-TRUE16 %s16; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1200 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-SDAG,GFX12-SDAG-FAKE16 %s17; XUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1200 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-GISEL,GFX12-GISEL-TRUE16 %s18; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1200 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-GISEL,GFX12-GISEL-FAKE16 %s19 20define i8 @test_vector_reduce_mul_v2i8(<2 x i8> %v) {21; GFX7-SDAG-LABEL: test_vector_reduce_mul_v2i8:22; GFX7-SDAG:       ; %bb.0: ; %entry23; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)24; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v125; GFX7-SDAG-NEXT:    v_and_b32_e32 v0, 0xff, v026; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]27;28; GFX7-GISEL-LABEL: test_vector_reduce_mul_v2i8:29; GFX7-GISEL:       ; %bb.0: ; %entry30; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)31; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v132; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]33;34; GFX8-SDAG-LABEL: test_vector_reduce_mul_v2i8:35; GFX8-SDAG:       ; %bb.0: ; %entry36; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)37; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v138; GFX8-SDAG-NEXT:    v_mul_lo_u16_sdwa v1, v1, v1 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_139; GFX8-SDAG-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD40; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]41;42; GFX8-GISEL-LABEL: test_vector_reduce_mul_v2i8:43; GFX8-GISEL:       ; %bb.0: ; %entry44; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)45; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v146; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]47;48; GFX9-SDAG-LABEL: test_vector_reduce_mul_v2i8:49; GFX9-SDAG:       ; %bb.0: ; %entry50; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)51; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v152; GFX9-SDAG-NEXT:    v_mul_lo_u16_sdwa v1, v1, v1 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_153; GFX9-SDAG-NEXT:    s_nop 054; GFX9-SDAG-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD55; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]56;57; GFX9-GISEL-LABEL: test_vector_reduce_mul_v2i8:58; GFX9-GISEL:       ; %bb.0: ; %entry59; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)60; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v161; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]62;63; GFX10-SDAG-LABEL: test_vector_reduce_mul_v2i8:64; GFX10-SDAG:       ; %bb.0: ; %entry65; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)66; GFX10-SDAG-NEXT:    v_lshrrev_b16 v2, 8, v167; GFX10-SDAG-NEXT:    v_mul_lo_u16 v0, v0, v168; GFX10-SDAG-NEXT:    v_mul_lo_u16 v2, v1, v269; GFX10-SDAG-NEXT:    v_lshlrev_b16 v1, 8, v270; GFX10-SDAG-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD71; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]72;73; GFX10-GISEL-LABEL: test_vector_reduce_mul_v2i8:74; GFX10-GISEL:       ; %bb.0: ; %entry75; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)76; GFX10-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v177; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]78;79; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_mul_v2i8:80; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry81; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)82; GFX11-SDAG-TRUE16-NEXT:    v_lshrrev_b16 v0.h, 8, v1.l83; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v1.l84; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)85; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.h, v1.l, v0.h86; GFX11-SDAG-TRUE16-NEXT:    v_and_b16 v0.l, 0xff, v0.l87; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)88; GFX11-SDAG-TRUE16-NEXT:    v_lshlrev_b16 v0.h, 8, v0.h89; GFX11-SDAG-TRUE16-NEXT:    v_or_b16 v0.l, v0.l, v0.h90; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]91;92; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_mul_v2i8:93; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry94; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)95; GFX11-SDAG-FAKE16-NEXT:    v_lshrrev_b16 v2, 8, v196; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v197; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)98; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v1, v1, v299; GFX11-SDAG-FAKE16-NEXT:    v_and_b32_e32 v0, 0xff, v0100; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)101; GFX11-SDAG-FAKE16-NEXT:    v_lshlrev_b16 v1, 8, v1102; GFX11-SDAG-FAKE16-NEXT:    v_or_b32_e32 v0, v0, v1103; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]104;105; GFX11-GISEL-LABEL: test_vector_reduce_mul_v2i8:106; GFX11-GISEL:       ; %bb.0: ; %entry107; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)108; GFX11-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v1109; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]110;111; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_mul_v2i8:112; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry113; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0114; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x0115; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x0116; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x0117; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x0118; GFX12-SDAG-TRUE16-NEXT:    v_lshrrev_b16 v0.h, 8, v1.l119; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v1.l120; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)121; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.h, v1.l, v0.h122; GFX12-SDAG-TRUE16-NEXT:    v_and_b16 v0.l, 0xff, v0.l123; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)124; GFX12-SDAG-TRUE16-NEXT:    v_lshlrev_b16 v0.h, 8, v0.h125; GFX12-SDAG-TRUE16-NEXT:    v_or_b16 v0.l, v0.l, v0.h126; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]127;128; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_mul_v2i8:129; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry130; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0131; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x0132; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x0133; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x0134; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x0135; GFX12-SDAG-FAKE16-NEXT:    v_lshrrev_b16 v2, 8, v1136; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v1137; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)138; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v1, v1, v2139; GFX12-SDAG-FAKE16-NEXT:    v_and_b32_e32 v0, 0xff, v0140; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)141; GFX12-SDAG-FAKE16-NEXT:    v_lshlrev_b16 v1, 8, v1142; GFX12-SDAG-FAKE16-NEXT:    v_or_b32_e32 v0, v0, v1143; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]144;145; GFX12-GISEL-LABEL: test_vector_reduce_mul_v2i8:146; GFX12-GISEL:       ; %bb.0: ; %entry147; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0148; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0149; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0150; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0151; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0152; GFX12-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v1153; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]154entry:155  %res = call i8 @llvm.vector.reduce.mul.v2i8(<2 x i8> %v)156  ret i8 %res157}158 159define i8 @test_vector_reduce_mul_v3i8(<3 x i8> %v) {160; GFX7-SDAG-LABEL: test_vector_reduce_mul_v3i8:161; GFX7-SDAG:       ; %bb.0: ; %entry162; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)163; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v2164; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v1, v0165; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]166;167; GFX7-GISEL-LABEL: test_vector_reduce_mul_v3i8:168; GFX7-GISEL:       ; %bb.0: ; %entry169; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)170; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v1171; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v2172; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]173;174; GFX8-SDAG-LABEL: test_vector_reduce_mul_v3i8:175; GFX8-SDAG:       ; %bb.0: ; %entry176; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)177; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v2178; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v1, v0179; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]180;181; GFX8-GISEL-LABEL: test_vector_reduce_mul_v3i8:182; GFX8-GISEL:       ; %bb.0: ; %entry183; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)184; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v1185; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v2186; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]187;188; GFX9-SDAG-LABEL: test_vector_reduce_mul_v3i8:189; GFX9-SDAG:       ; %bb.0: ; %entry190; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)191; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v2192; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v1, v0193; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]194;195; GFX9-GISEL-LABEL: test_vector_reduce_mul_v3i8:196; GFX9-GISEL:       ; %bb.0: ; %entry197; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)198; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v1199; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v2200; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]201;202; GFX10-SDAG-LABEL: test_vector_reduce_mul_v3i8:203; GFX10-SDAG:       ; %bb.0: ; %entry204; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)205; GFX10-SDAG-NEXT:    v_mul_lo_u16 v0, v0, v2206; GFX10-SDAG-NEXT:    v_mul_lo_u16 v0, v1, v0207; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]208;209; GFX10-GISEL-LABEL: test_vector_reduce_mul_v3i8:210; GFX10-GISEL:       ; %bb.0: ; %entry211; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)212; GFX10-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v1213; GFX10-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v2214; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]215;216; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_mul_v3i8:217; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry218; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)219; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v2.l220; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)221; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v1.l, v0.l222; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]223;224; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_mul_v3i8:225; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry226; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)227; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v2228; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)229; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v1, v0230; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]231;232; GFX11-GISEL-LABEL: test_vector_reduce_mul_v3i8:233; GFX11-GISEL:       ; %bb.0: ; %entry234; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)235; GFX11-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v1236; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)237; GFX11-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v2238; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]239;240; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_mul_v3i8:241; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry242; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0243; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x0244; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x0245; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x0246; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x0247; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v2.l248; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)249; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v1.l, v0.l250; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]251;252; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_mul_v3i8:253; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry254; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0255; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x0256; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x0257; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x0258; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x0259; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v2260; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)261; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v1, v0262; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]263;264; GFX12-GISEL-LABEL: test_vector_reduce_mul_v3i8:265; GFX12-GISEL:       ; %bb.0: ; %entry266; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0267; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0268; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0269; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0270; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0271; GFX12-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v1272; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)273; GFX12-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v2274; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]275entry:276  %res = call i8 @llvm.vector.reduce.mul.v3i8(<3 x i8> %v)277  ret i8 %res278}279 280define i8 @test_vector_reduce_mul_v4i8(<4 x i8> %v) {281; GFX7-SDAG-LABEL: test_vector_reduce_mul_v4i8:282; GFX7-SDAG:       ; %bb.0: ; %entry283; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)284; GFX7-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v3285; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v2286; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v1287; GFX7-SDAG-NEXT:    v_and_b32_e32 v0, 0xff, v0288; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]289;290; GFX7-GISEL-LABEL: test_vector_reduce_mul_v4i8:291; GFX7-GISEL:       ; %bb.0: ; %entry292; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)293; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v2294; GFX7-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v3295; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v1296; GFX7-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8297; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]298;299; GFX8-SDAG-LABEL: test_vector_reduce_mul_v4i8:300; GFX8-SDAG:       ; %bb.0: ; %entry301; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)302; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v1, v1, v3303; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v2304; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v1305; GFX8-SDAG-NEXT:    v_and_b32_e32 v0, 0xff, v0306; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]307;308; GFX8-GISEL-LABEL: test_vector_reduce_mul_v4i8:309; GFX8-GISEL:       ; %bb.0: ; %entry310; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)311; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v2312; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v1, v1, v3313; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v1314; GFX8-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8315; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]316;317; GFX9-SDAG-LABEL: test_vector_reduce_mul_v4i8:318; GFX9-SDAG:       ; %bb.0: ; %entry319; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)320; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v1, v1, v3321; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v2322; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v1323; GFX9-SDAG-NEXT:    v_and_b32_e32 v0, 0xff, v0324; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]325;326; GFX9-GISEL-LABEL: test_vector_reduce_mul_v4i8:327; GFX9-GISEL:       ; %bb.0: ; %entry328; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)329; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v2330; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v1, v1, v3331; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v1332; GFX9-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8333; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]334;335; GFX10-SDAG-LABEL: test_vector_reduce_mul_v4i8:336; GFX10-SDAG:       ; %bb.0: ; %entry337; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)338; GFX10-SDAG-NEXT:    v_mul_lo_u16 v1, v1, v3339; GFX10-SDAG-NEXT:    v_mul_lo_u16 v0, v0, v2340; GFX10-SDAG-NEXT:    v_mul_lo_u16 v0, v0, v1341; GFX10-SDAG-NEXT:    v_and_b32_e32 v0, 0xff, v0342; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]343;344; GFX10-GISEL-LABEL: test_vector_reduce_mul_v4i8:345; GFX10-GISEL:       ; %bb.0: ; %entry346; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)347; GFX10-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v2348; GFX10-GISEL-NEXT:    v_mul_lo_u16 v1, v1, v3349; GFX10-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v1350; GFX10-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8351; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]352;353; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_mul_v4i8:354; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry355; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)356; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.h, v1.l, v3.l357; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v2.l358; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)359; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v0.h360; GFX11-SDAG-TRUE16-NEXT:    v_and_b16 v0.l, 0xff, v0.l361; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]362;363; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_mul_v4i8:364; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry365; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)366; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v1, v1, v3367; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v2368; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)369; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v1370; GFX11-SDAG-FAKE16-NEXT:    v_and_b32_e32 v0, 0xff, v0371; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]372;373; GFX11-GISEL-LABEL: test_vector_reduce_mul_v4i8:374; GFX11-GISEL:       ; %bb.0: ; %entry375; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)376; GFX11-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v2377; GFX11-GISEL-NEXT:    v_mul_lo_u16 v1, v1, v3378; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)379; GFX11-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v1380; GFX11-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8381; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]382;383; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_mul_v4i8:384; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry385; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0386; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x0387; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x0388; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x0389; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x0390; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.h, v1.l, v3.l391; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v2.l392; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)393; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v0.h394; GFX12-SDAG-TRUE16-NEXT:    v_and_b16 v0.l, 0xff, v0.l395; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]396;397; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_mul_v4i8:398; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry399; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0400; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x0401; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x0402; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x0403; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x0404; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v1, v1, v3405; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v2406; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)407; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v1408; GFX12-SDAG-FAKE16-NEXT:    v_and_b32_e32 v0, 0xff, v0409; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]410;411; GFX12-GISEL-LABEL: test_vector_reduce_mul_v4i8:412; GFX12-GISEL:       ; %bb.0: ; %entry413; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0414; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0415; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0416; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0417; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0418; GFX12-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v2419; GFX12-GISEL-NEXT:    v_mul_lo_u16 v1, v1, v3420; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)421; GFX12-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v1422; GFX12-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8423; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]424entry:425  %res = call i8 @llvm.vector.reduce.mul.v4i8(<4 x i8> %v)426  ret i8 %res427}428 429define i8 @test_vector_reduce_mul_v8i8(<8 x i8> %v) {430; GFX7-SDAG-LABEL: test_vector_reduce_mul_v8i8:431; GFX7-SDAG:       ; %bb.0: ; %entry432; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)433; GFX7-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v6434; GFX7-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v7435; GFX7-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v5436; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v4437; GFX7-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v3438; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v2439; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v1440; GFX7-SDAG-NEXT:    v_and_b32_e32 v0, 0xff, v0441; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]442;443; GFX7-GISEL-LABEL: test_vector_reduce_mul_v8i8:444; GFX7-GISEL:       ; %bb.0: ; %entry445; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)446; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v4447; GFX7-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v5448; GFX7-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v6449; GFX7-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v7450; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v2451; GFX7-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v3452; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v1453; GFX7-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8454; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]455;456; GFX8-SDAG-LABEL: test_vector_reduce_mul_v8i8:457; GFX8-SDAG:       ; %bb.0: ; %entry458; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)459; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v2, v2, v6460; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v4461; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v3, v3, v7462; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v1, v1, v5463; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v1, v1, v3464; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v2465; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v1466; GFX8-SDAG-NEXT:    v_and_b32_e32 v0, 0xff, v0467; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]468;469; GFX8-GISEL-LABEL: test_vector_reduce_mul_v8i8:470; GFX8-GISEL:       ; %bb.0: ; %entry471; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)472; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v4473; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v1, v1, v5474; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v2, v2, v6475; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v3, v3, v7476; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v2477; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v1, v1, v3478; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v1479; GFX8-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8480; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]481;482; GFX9-SDAG-LABEL: test_vector_reduce_mul_v8i8:483; GFX9-SDAG:       ; %bb.0: ; %entry484; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)485; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v2, v2, v6486; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v4487; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v3, v3, v7488; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v1, v1, v5489; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v1, v1, v3490; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v2491; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v1492; GFX9-SDAG-NEXT:    v_and_b32_e32 v0, 0xff, v0493; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]494;495; GFX9-GISEL-LABEL: test_vector_reduce_mul_v8i8:496; GFX9-GISEL:       ; %bb.0: ; %entry497; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)498; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v4499; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v1, v1, v5500; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v2, v2, v6501; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v3, v3, v7502; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v2503; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v1, v1, v3504; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v1505; GFX9-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8506; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]507;508; GFX10-SDAG-LABEL: test_vector_reduce_mul_v8i8:509; GFX10-SDAG:       ; %bb.0: ; %entry510; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)511; GFX10-SDAG-NEXT:    v_mul_lo_u16 v2, v2, v6512; GFX10-SDAG-NEXT:    v_mul_lo_u16 v3, v3, v7513; GFX10-SDAG-NEXT:    v_mul_lo_u16 v1, v1, v5514; GFX10-SDAG-NEXT:    v_mul_lo_u16 v0, v0, v4515; GFX10-SDAG-NEXT:    v_mul_lo_u16 v1, v1, v3516; GFX10-SDAG-NEXT:    v_mul_lo_u16 v0, v0, v2517; GFX10-SDAG-NEXT:    v_mul_lo_u16 v0, v0, v1518; GFX10-SDAG-NEXT:    v_and_b32_e32 v0, 0xff, v0519; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]520;521; GFX10-GISEL-LABEL: test_vector_reduce_mul_v8i8:522; GFX10-GISEL:       ; %bb.0: ; %entry523; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)524; GFX10-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v4525; GFX10-GISEL-NEXT:    v_mul_lo_u16 v1, v1, v5526; GFX10-GISEL-NEXT:    v_mul_lo_u16 v2, v2, v6527; GFX10-GISEL-NEXT:    v_mul_lo_u16 v3, v3, v7528; GFX10-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v2529; GFX10-GISEL-NEXT:    v_mul_lo_u16 v1, v1, v3530; GFX10-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v1531; GFX10-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8532; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]533;534; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_mul_v8i8:535; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry536; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)537; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.h, v2.l, v6.l538; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v1.h, v3.l, v7.l539; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v1.l, v1.l, v5.l540; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v4.l541; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)542; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v1.l, v1.l, v1.h543; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v0.h544; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)545; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v1.l546; GFX11-SDAG-TRUE16-NEXT:    v_and_b16 v0.l, 0xff, v0.l547; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]548;549; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_mul_v8i8:550; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry551; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)552; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v2, v2, v6553; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v3, v3, v7554; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v1, v1, v5555; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v4556; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)557; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v1, v1, v3558; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v2559; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)560; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v1561; GFX11-SDAG-FAKE16-NEXT:    v_and_b32_e32 v0, 0xff, v0562; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]563;564; GFX11-GISEL-LABEL: test_vector_reduce_mul_v8i8:565; GFX11-GISEL:       ; %bb.0: ; %entry566; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)567; GFX11-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v4568; GFX11-GISEL-NEXT:    v_mul_lo_u16 v1, v1, v5569; GFX11-GISEL-NEXT:    v_mul_lo_u16 v2, v2, v6570; GFX11-GISEL-NEXT:    v_mul_lo_u16 v3, v3, v7571; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)572; GFX11-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v2573; GFX11-GISEL-NEXT:    v_mul_lo_u16 v1, v1, v3574; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)575; GFX11-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v1576; GFX11-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8577; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]578;579; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_mul_v8i8:580; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry581; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0582; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x0583; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x0584; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x0585; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x0586; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.h, v2.l, v6.l587; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v1.h, v3.l, v7.l588; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v1.l, v1.l, v5.l589; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v4.l590; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)591; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v1.l, v1.l, v1.h592; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v0.h593; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)594; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v1.l595; GFX12-SDAG-TRUE16-NEXT:    v_and_b16 v0.l, 0xff, v0.l596; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]597;598; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_mul_v8i8:599; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry600; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0601; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x0602; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x0603; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x0604; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x0605; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v2, v2, v6606; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v3, v3, v7607; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v1, v1, v5608; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v4609; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)610; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v1, v1, v3611; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v2612; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)613; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v1614; GFX12-SDAG-FAKE16-NEXT:    v_and_b32_e32 v0, 0xff, v0615; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]616;617; GFX12-GISEL-LABEL: test_vector_reduce_mul_v8i8:618; GFX12-GISEL:       ; %bb.0: ; %entry619; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0620; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0621; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0622; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0623; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0624; GFX12-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v4625; GFX12-GISEL-NEXT:    v_mul_lo_u16 v1, v1, v5626; GFX12-GISEL-NEXT:    v_mul_lo_u16 v2, v2, v6627; GFX12-GISEL-NEXT:    v_mul_lo_u16 v3, v3, v7628; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)629; GFX12-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v2630; GFX12-GISEL-NEXT:    v_mul_lo_u16 v1, v1, v3631; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)632; GFX12-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v1633; GFX12-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8634; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]635entry:636  %res = call i8 @llvm.vector.reduce.mul.v8i8(<8 x i8> %v)637  ret i8 %res638}639 640define i8 @test_vector_reduce_mul_v16i8(<16 x i8> %v) {641; GFX7-SDAG-LABEL: test_vector_reduce_mul_v16i8:642; GFX7-SDAG:       ; %bb.0: ; %entry643; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)644; GFX7-SDAG-NEXT:    v_mul_lo_u32 v5, v5, v13645; GFX7-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v9646; GFX7-SDAG-NEXT:    v_mul_lo_u32 v7, v7, v15647; GFX7-SDAG-NEXT:    v_mul_lo_u32 v6, v6, v14648; GFX7-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v10649; GFX7-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v11650; GFX7-SDAG-NEXT:    v_mul_lo_u32 v4, v4, v12651; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v8652; GFX7-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v6653; GFX7-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v7654; GFX7-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v5655; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v4656; GFX7-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v3657; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v2658; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v1659; GFX7-SDAG-NEXT:    v_and_b32_e32 v0, 0xff, v0660; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]661;662; GFX7-GISEL-LABEL: test_vector_reduce_mul_v16i8:663; GFX7-GISEL:       ; %bb.0: ; %entry664; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)665; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v8666; GFX7-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v9667; GFX7-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v10668; GFX7-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v11669; GFX7-GISEL-NEXT:    v_mul_lo_u32 v4, v4, v12670; GFX7-GISEL-NEXT:    v_mul_lo_u32 v5, v5, v13671; GFX7-GISEL-NEXT:    v_mul_lo_u32 v6, v6, v14672; GFX7-GISEL-NEXT:    v_mul_lo_u32 v7, v7, v15673; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v4674; GFX7-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v5675; GFX7-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v6676; GFX7-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v7677; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v2678; GFX7-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v3679; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v1680; GFX7-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8681; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]682;683; GFX8-SDAG-LABEL: test_vector_reduce_mul_v16i8:684; GFX8-SDAG:       ; %bb.0: ; %entry685; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)686; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v5, v5, v13687; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v1, v1, v9688; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v7, v7, v15689; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v3, v3, v11690; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v4, v4, v12691; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v8692; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v6, v6, v14693; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v2, v2, v10694; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v2, v2, v6695; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v4696; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v3, v3, v7697; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v1, v1, v5698; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v1, v1, v3699; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v2700; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v1701; GFX8-SDAG-NEXT:    v_and_b32_e32 v0, 0xff, v0702; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]703;704; GFX8-GISEL-LABEL: test_vector_reduce_mul_v16i8:705; GFX8-GISEL:       ; %bb.0: ; %entry706; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)707; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v8708; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v1, v1, v9709; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v2, v2, v10710; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v3, v3, v11711; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v4, v4, v12712; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v5, v5, v13713; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v6, v6, v14714; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v7, v7, v15715; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v4716; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v1, v1, v5717; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v2, v2, v6718; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v3, v3, v7719; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v2720; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v1, v1, v3721; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v1722; GFX8-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8723; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]724;725; GFX9-SDAG-LABEL: test_vector_reduce_mul_v16i8:726; GFX9-SDAG:       ; %bb.0: ; %entry727; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)728; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v5, v5, v13729; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v1, v1, v9730; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v7, v7, v15731; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v3, v3, v11732; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v4, v4, v12733; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v8734; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v6, v6, v14735; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v2, v2, v10736; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v2, v2, v6737; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v4738; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v3, v3, v7739; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v1, v1, v5740; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v1, v1, v3741; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v2742; GFX9-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v1743; GFX9-SDAG-NEXT:    v_and_b32_e32 v0, 0xff, v0744; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]745;746; GFX9-GISEL-LABEL: test_vector_reduce_mul_v16i8:747; GFX9-GISEL:       ; %bb.0: ; %entry748; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)749; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v8750; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v1, v1, v9751; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v2, v2, v10752; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v3, v3, v11753; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v4, v4, v12754; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v5, v5, v13755; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v6, v6, v14756; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v7, v7, v15757; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v4758; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v1, v1, v5759; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v2, v2, v6760; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v3, v3, v7761; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v2762; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v1, v1, v3763; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v1764; GFX9-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8765; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]766;767; GFX10-SDAG-LABEL: test_vector_reduce_mul_v16i8:768; GFX10-SDAG:       ; %bb.0: ; %entry769; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)770; GFX10-SDAG-NEXT:    v_mul_lo_u16 v5, v5, v13771; GFX10-SDAG-NEXT:    v_mul_lo_u16 v1, v1, v9772; GFX10-SDAG-NEXT:    v_mul_lo_u16 v7, v7, v15773; GFX10-SDAG-NEXT:    v_mul_lo_u16 v6, v6, v14774; GFX10-SDAG-NEXT:    v_mul_lo_u16 v2, v2, v10775; GFX10-SDAG-NEXT:    v_mul_lo_u16 v3, v3, v11776; GFX10-SDAG-NEXT:    v_mul_lo_u16 v4, v4, v12777; GFX10-SDAG-NEXT:    v_mul_lo_u16 v0, v0, v8778; GFX10-SDAG-NEXT:    v_mul_lo_u16 v1, v1, v5779; GFX10-SDAG-NEXT:    v_mul_lo_u16 v2, v2, v6780; GFX10-SDAG-NEXT:    v_mul_lo_u16 v3, v3, v7781; GFX10-SDAG-NEXT:    v_mul_lo_u16 v0, v0, v4782; GFX10-SDAG-NEXT:    v_mul_lo_u16 v1, v1, v3783; GFX10-SDAG-NEXT:    v_mul_lo_u16 v0, v0, v2784; GFX10-SDAG-NEXT:    v_mul_lo_u16 v0, v0, v1785; GFX10-SDAG-NEXT:    v_and_b32_e32 v0, 0xff, v0786; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]787;788; GFX10-GISEL-LABEL: test_vector_reduce_mul_v16i8:789; GFX10-GISEL:       ; %bb.0: ; %entry790; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)791; GFX10-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v8792; GFX10-GISEL-NEXT:    v_mul_lo_u16 v1, v1, v9793; GFX10-GISEL-NEXT:    v_mul_lo_u16 v2, v2, v10794; GFX10-GISEL-NEXT:    v_mul_lo_u16 v3, v3, v11795; GFX10-GISEL-NEXT:    v_mul_lo_u16 v4, v4, v12796; GFX10-GISEL-NEXT:    v_mul_lo_u16 v5, v5, v13797; GFX10-GISEL-NEXT:    v_mul_lo_u16 v6, v6, v14798; GFX10-GISEL-NEXT:    v_mul_lo_u16 v7, v7, v15799; GFX10-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v4800; GFX10-GISEL-NEXT:    v_mul_lo_u16 v1, v1, v5801; GFX10-GISEL-NEXT:    v_mul_lo_u16 v2, v2, v6802; GFX10-GISEL-NEXT:    v_mul_lo_u16 v3, v3, v7803; GFX10-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v2804; GFX10-GISEL-NEXT:    v_mul_lo_u16 v1, v1, v3805; GFX10-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v1806; GFX10-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8807; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]808;809; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_mul_v16i8:810; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry811; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)812; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v1.h, v5.l, v13.l813; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v1.l, v1.l, v9.l814; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v5.l, v7.l, v15.l815; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.h, v6.l, v14.l816; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v2.l, v2.l, v10.l817; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v2.h, v3.l, v11.l818; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v3.l, v4.l, v12.l819; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v8.l820; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v1.l, v1.l, v1.h821; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.h, v2.l, v0.h822; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v2.l, v2.h, v5.l823; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)824; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v3.l825; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v1.l, v1.l, v2.l826; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)827; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v0.h828; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v1.l829; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)830; GFX11-SDAG-TRUE16-NEXT:    v_and_b16 v0.l, 0xff, v0.l831; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]832;833; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_mul_v16i8:834; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry835; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)836; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v5, v5, v13837; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v1, v1, v9838; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v7, v7, v15839; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v6, v6, v14840; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v2, v2, v10841; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v3, v3, v11842; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v4, v4, v12843; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v8844; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v1, v1, v5845; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v2, v2, v6846; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v3, v3, v7847; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)848; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v4849; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v1, v1, v3850; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)851; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v2852; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v1853; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)854; GFX11-SDAG-FAKE16-NEXT:    v_and_b32_e32 v0, 0xff, v0855; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]856;857; GFX11-GISEL-LABEL: test_vector_reduce_mul_v16i8:858; GFX11-GISEL:       ; %bb.0: ; %entry859; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)860; GFX11-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v8861; GFX11-GISEL-NEXT:    v_mul_lo_u16 v1, v1, v9862; GFX11-GISEL-NEXT:    v_mul_lo_u16 v2, v2, v10863; GFX11-GISEL-NEXT:    v_mul_lo_u16 v3, v3, v11864; GFX11-GISEL-NEXT:    v_mul_lo_u16 v4, v4, v12865; GFX11-GISEL-NEXT:    v_mul_lo_u16 v5, v5, v13866; GFX11-GISEL-NEXT:    v_mul_lo_u16 v6, v6, v14867; GFX11-GISEL-NEXT:    v_mul_lo_u16 v7, v7, v15868; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)869; GFX11-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v4870; GFX11-GISEL-NEXT:    v_mul_lo_u16 v1, v1, v5871; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)872; GFX11-GISEL-NEXT:    v_mul_lo_u16 v2, v2, v6873; GFX11-GISEL-NEXT:    v_mul_lo_u16 v3, v3, v7874; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)875; GFX11-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v2876; GFX11-GISEL-NEXT:    v_mul_lo_u16 v1, v1, v3877; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)878; GFX11-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v1879; GFX11-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8880; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]881;882; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_mul_v16i8:883; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry884; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0885; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x0886; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x0887; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x0888; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x0889; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v1.h, v5.l, v13.l890; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v1.l, v1.l, v9.l891; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v5.l, v7.l, v15.l892; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.h, v6.l, v14.l893; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v2.l, v2.l, v10.l894; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v2.h, v3.l, v11.l895; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v3.l, v4.l, v12.l896; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v8.l897; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v1.l, v1.l, v1.h898; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.h, v2.l, v0.h899; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v2.l, v2.h, v5.l900; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)901; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v3.l902; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v1.l, v1.l, v2.l903; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)904; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v0.h905; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v1.l906; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)907; GFX12-SDAG-TRUE16-NEXT:    v_and_b16 v0.l, 0xff, v0.l908; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]909;910; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_mul_v16i8:911; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry912; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0913; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x0914; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x0915; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x0916; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x0917; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v5, v5, v13918; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v1, v1, v9919; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v7, v7, v15920; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v6, v6, v14921; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v2, v2, v10922; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v3, v3, v11923; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v4, v4, v12924; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v8925; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v1, v1, v5926; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v2, v2, v6927; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v3, v3, v7928; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)929; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v4930; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v1, v1, v3931; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)932; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v2933; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v1934; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)935; GFX12-SDAG-FAKE16-NEXT:    v_and_b32_e32 v0, 0xff, v0936; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]937;938; GFX12-GISEL-LABEL: test_vector_reduce_mul_v16i8:939; GFX12-GISEL:       ; %bb.0: ; %entry940; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0941; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0942; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0943; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0944; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0945; GFX12-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v8946; GFX12-GISEL-NEXT:    v_mul_lo_u16 v1, v1, v9947; GFX12-GISEL-NEXT:    v_mul_lo_u16 v2, v2, v10948; GFX12-GISEL-NEXT:    v_mul_lo_u16 v3, v3, v11949; GFX12-GISEL-NEXT:    v_mul_lo_u16 v4, v4, v12950; GFX12-GISEL-NEXT:    v_mul_lo_u16 v5, v5, v13951; GFX12-GISEL-NEXT:    v_mul_lo_u16 v6, v6, v14952; GFX12-GISEL-NEXT:    v_mul_lo_u16 v7, v7, v15953; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)954; GFX12-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v4955; GFX12-GISEL-NEXT:    v_mul_lo_u16 v1, v1, v5956; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)957; GFX12-GISEL-NEXT:    v_mul_lo_u16 v2, v2, v6958; GFX12-GISEL-NEXT:    v_mul_lo_u16 v3, v3, v7959; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)960; GFX12-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v2961; GFX12-GISEL-NEXT:    v_mul_lo_u16 v1, v1, v3962; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)963; GFX12-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v1964; GFX12-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8965; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]966entry:967  %res = call i8 @llvm.vector.reduce.mul.v16i8(<16 x i8> %v)968  ret i8 %res969}970 971define i16 @test_vector_reduce_mul_v2i16(<2 x i16> %v) {972; GFX7-SDAG-LABEL: test_vector_reduce_mul_v2i16:973; GFX7-SDAG:       ; %bb.0: ; %entry974; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)975; GFX7-SDAG-NEXT:    v_lshrrev_b32_e32 v2, 16, v1976; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v1977; GFX7-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v2978; GFX7-SDAG-NEXT:    v_and_b32_e32 v0, 0xffff, v0979; GFX7-SDAG-NEXT:    v_lshlrev_b32_e32 v1, 16, v1980; GFX7-SDAG-NEXT:    v_or_b32_e32 v0, v0, v1981; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]982;983; GFX7-GISEL-LABEL: test_vector_reduce_mul_v2i16:984; GFX7-GISEL:       ; %bb.0: ; %entry985; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)986; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v1987; GFX7-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 16988; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]989;990; GFX8-LABEL: test_vector_reduce_mul_v2i16:991; GFX8:       ; %bb.0: ; %entry992; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)993; GFX8-NEXT:    v_mul_lo_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1994; GFX8-NEXT:    s_setpc_b64 s[30:31]995;996; GFX9-SDAG-LABEL: test_vector_reduce_mul_v2i16:997; GFX9-SDAG:       ; %bb.0: ; %entry998; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)999; GFX9-SDAG-NEXT:    v_alignbit_b32 v1, s0, v0, 161000; GFX9-SDAG-NEXT:    v_pk_mul_lo_u16 v0, v0, v11001; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]1002;1003; GFX9-GISEL-LABEL: test_vector_reduce_mul_v2i16:1004; GFX9-GISEL:       ; %bb.0: ; %entry1005; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1006; GFX9-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01007; GFX9-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11008; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]1009;1010; GFX10-SDAG-LABEL: test_vector_reduce_mul_v2i16:1011; GFX10-SDAG:       ; %bb.0: ; %entry1012; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1013; GFX10-SDAG-NEXT:    v_alignbit_b32 v1, s4, v0, 161014; GFX10-SDAG-NEXT:    v_pk_mul_lo_u16 v0, v0, v11015; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]1016;1017; GFX10-GISEL-LABEL: test_vector_reduce_mul_v2i16:1018; GFX10-GISEL:       ; %bb.0: ; %entry1019; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1020; GFX10-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01021; GFX10-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11022; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]1023;1024; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_mul_v2i16:1025; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry1026; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1027; GFX11-SDAG-TRUE16-NEXT:    v_mov_b32_e32 v1, s01028; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v0.h1029; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1030; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v1.l1031; GFX11-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v21032; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1033;1034; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_mul_v2i16:1035; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry1036; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1037; GFX11-SDAG-FAKE16-NEXT:    v_alignbit_b32 v1, s0, v0, 161038; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1039; GFX11-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11040; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1041;1042; GFX11-GISEL-LABEL: test_vector_reduce_mul_v2i16:1043; GFX11-GISEL:       ; %bb.0: ; %entry1044; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1045; GFX11-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01046; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1047; GFX11-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11048; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]1049;1050; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_mul_v2i16:1051; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry1052; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x01053; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x01054; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x01055; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x01056; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x01057; GFX12-SDAG-TRUE16-NEXT:    v_mov_b32_e32 v1, s01058; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v0.h1059; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1060; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v1.l1061; GFX12-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v21062; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1063;1064; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_mul_v2i16:1065; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry1066; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x01067; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x01068; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x01069; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x01070; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x01071; GFX12-SDAG-FAKE16-NEXT:    v_alignbit_b32 v1, s0, v0, 161072; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1073; GFX12-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11074; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1075;1076; GFX12-GISEL-LABEL: test_vector_reduce_mul_v2i16:1077; GFX12-GISEL:       ; %bb.0: ; %entry1078; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x01079; GFX12-GISEL-NEXT:    s_wait_expcnt 0x01080; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x01081; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x01082; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x01083; GFX12-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01084; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1085; GFX12-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11086; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]1087entry:1088  %res = call i16 @llvm.vector.reduce.mul.v2i16(<2 x i16> %v)1089  ret i16 %res1090}1091 1092define i16 @test_vector_reduce_mul_v3i16(<3 x i16> %v) {1093; GFX7-SDAG-LABEL: test_vector_reduce_mul_v3i16:1094; GFX7-SDAG:       ; %bb.0: ; %entry1095; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1096; GFX7-SDAG-NEXT:    v_lshlrev_b32_e32 v3, 16, v11097; GFX7-SDAG-NEXT:    v_and_b32_e32 v0, 0xffff, v01098; GFX7-SDAG-NEXT:    v_and_b32_e32 v2, 0xffff, v21099; GFX7-SDAG-NEXT:    v_or_b32_e32 v0, v0, v31100; GFX7-SDAG-NEXT:    v_or_b32_e32 v2, 0x10000, v21101; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v21102; GFX7-SDAG-NEXT:    v_and_b32_e32 v1, 0xffff, v11103; GFX7-SDAG-NEXT:    v_lshrrev_b32_e32 v2, 16, v21104; GFX7-SDAG-NEXT:    v_mul_u32_u24_e32 v1, v1, v21105; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v11106; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]1107;1108; GFX7-GISEL-LABEL: test_vector_reduce_mul_v3i16:1109; GFX7-GISEL:       ; %bb.0: ; %entry1110; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1111; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v11112; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v21113; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]1114;1115; GFX8-LABEL: test_vector_reduce_mul_v3i16:1116; GFX8:       ; %bb.0: ; %entry1117; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1118; GFX8-NEXT:    v_mul_lo_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11119; GFX8-NEXT:    v_mul_lo_u16_e32 v0, v0, v11120; GFX8-NEXT:    s_setpc_b64 s[30:31]1121;1122; GFX9-SDAG-LABEL: test_vector_reduce_mul_v3i16:1123; GFX9-SDAG:       ; %bb.0: ; %entry1124; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1125; GFX9-SDAG-NEXT:    v_mov_b32_e32 v2, 0x50401001126; GFX9-SDAG-NEXT:    v_perm_b32 v1, 1, v1, v21127; GFX9-SDAG-NEXT:    v_pk_mul_lo_u16 v0, v0, v11128; GFX9-SDAG-NEXT:    s_nop 01129; GFX9-SDAG-NEXT:    v_mul_lo_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11130; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]1131;1132; GFX9-GISEL-LABEL: test_vector_reduce_mul_v3i16:1133; GFX9-GISEL:       ; %bb.0: ; %entry1134; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1135; GFX9-GISEL-NEXT:    v_mul_lo_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11136; GFX9-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v11137; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]1138;1139; GFX10-SDAG-LABEL: test_vector_reduce_mul_v3i16:1140; GFX10-SDAG:       ; %bb.0: ; %entry1141; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1142; GFX10-SDAG-NEXT:    v_perm_b32 v1, 1, v1, 0x50401001143; GFX10-SDAG-NEXT:    v_pk_mul_lo_u16 v0, v0, v11144; GFX10-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 16, v01145; GFX10-SDAG-NEXT:    v_mul_lo_u16 v0, v0, v11146; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]1147;1148; GFX10-GISEL-LABEL: test_vector_reduce_mul_v3i16:1149; GFX10-GISEL:       ; %bb.0: ; %entry1150; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1151; GFX10-GISEL-NEXT:    v_lshrrev_b32_e32 v2, 16, v01152; GFX10-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v21153; GFX10-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v11154; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]1155;1156; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_mul_v3i16:1157; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry1158; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1159; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.h, 11160; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1161; GFX11-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11162; GFX11-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v0.h1163; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1164;1165; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_mul_v3i16:1166; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry1167; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1168; GFX11-SDAG-FAKE16-NEXT:    v_perm_b32 v1, 1, v1, 0x50401001169; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1170; GFX11-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11171; GFX11-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v01172; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1173; GFX11-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v11174; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1175;1176; GFX11-GISEL-LABEL: test_vector_reduce_mul_v3i16:1177; GFX11-GISEL:       ; %bb.0: ; %entry1178; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1179; GFX11-GISEL-NEXT:    v_lshrrev_b32_e32 v2, 16, v01180; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1181; GFX11-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v21182; GFX11-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v11183; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]1184;1185; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_mul_v3i16:1186; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry1187; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x01188; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x01189; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x01190; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x01191; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x01192; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.h, 11193; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1194; GFX12-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11195; GFX12-SDAG-TRUE16-NEXT:    v_mul_lo_u16 v0.l, v0.l, v0.h1196; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1197;1198; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_mul_v3i16:1199; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry1200; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x01201; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x01202; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x01203; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x01204; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x01205; GFX12-SDAG-FAKE16-NEXT:    v_perm_b32 v1, 1, v1, 0x50401001206; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1207; GFX12-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11208; GFX12-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v01209; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1210; GFX12-SDAG-FAKE16-NEXT:    v_mul_lo_u16 v0, v0, v11211; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1212;1213; GFX12-GISEL-LABEL: test_vector_reduce_mul_v3i16:1214; GFX12-GISEL:       ; %bb.0: ; %entry1215; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x01216; GFX12-GISEL-NEXT:    s_wait_expcnt 0x01217; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x01218; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x01219; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x01220; GFX12-GISEL-NEXT:    v_lshrrev_b32_e32 v2, 16, v01221; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1222; GFX12-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v21223; GFX12-GISEL-NEXT:    v_mul_lo_u16 v0, v0, v11224; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]1225entry:1226  %res = call i16 @llvm.vector.reduce.mul.v3i16(<3 x i16> %v)1227  ret i16 %res1228}1229 1230define i16 @test_vector_reduce_mul_v4i16(<4 x i16> %v) {1231; GFX7-SDAG-LABEL: test_vector_reduce_mul_v4i16:1232; GFX7-SDAG:       ; %bb.0: ; %entry1233; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1234; GFX7-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v31235; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v21236; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v11237; GFX7-SDAG-NEXT:    v_and_b32_e32 v0, 0xffff, v01238; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]1239;1240; GFX7-GISEL-LABEL: test_vector_reduce_mul_v4i16:1241; GFX7-GISEL:       ; %bb.0: ; %entry1242; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1243; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v21244; GFX7-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v31245; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v11246; GFX7-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 161247; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]1248;1249; GFX8-SDAG-LABEL: test_vector_reduce_mul_v4i16:1250; GFX8-SDAG:       ; %bb.0: ; %entry1251; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1252; GFX8-SDAG-NEXT:    v_mul_lo_u16_sdwa v2, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11253; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v11254; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v21255; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]1256;1257; GFX8-GISEL-LABEL: test_vector_reduce_mul_v4i16:1258; GFX8-GISEL:       ; %bb.0: ; %entry1259; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1260; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v2, v0, v11261; GFX8-GISEL-NEXT:    v_mul_lo_u16_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11262; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v2, v01263; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]1264;1265; GFX9-SDAG-LABEL: test_vector_reduce_mul_v4i16:1266; GFX9-SDAG:       ; %bb.0: ; %entry1267; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1268; GFX9-SDAG-NEXT:    v_pk_mul_lo_u16 v0, v0, v11269; GFX9-SDAG-NEXT:    s_nop 01270; GFX9-SDAG-NEXT:    v_alignbit_b32 v1, s0, v0, 161271; GFX9-SDAG-NEXT:    v_pk_mul_lo_u16 v0, v0, v11272; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]1273;1274; GFX9-GISEL-LABEL: test_vector_reduce_mul_v4i16:1275; GFX9-GISEL:       ; %bb.0: ; %entry1276; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1277; GFX9-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11278; GFX9-GISEL-NEXT:    s_nop 01279; GFX9-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01280; GFX9-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11281; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]1282;1283; GFX10-SDAG-LABEL: test_vector_reduce_mul_v4i16:1284; GFX10-SDAG:       ; %bb.0: ; %entry1285; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1286; GFX10-SDAG-NEXT:    v_pk_mul_lo_u16 v0, v0, v11287; GFX10-SDAG-NEXT:    v_alignbit_b32 v1, s4, v0, 161288; GFX10-SDAG-NEXT:    v_pk_mul_lo_u16 v0, v0, v11289; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]1290;1291; GFX10-GISEL-LABEL: test_vector_reduce_mul_v4i16:1292; GFX10-GISEL:       ; %bb.0: ; %entry1293; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1294; GFX10-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11295; GFX10-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01296; GFX10-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11297; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]1298;1299; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_mul_v4i16:1300; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry1301; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1302; GFX11-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11303; GFX11-SDAG-TRUE16-NEXT:    v_mov_b32_e32 v1, s01304; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1305; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v0.h1306; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v1.l1307; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1308; GFX11-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v21309; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1310;1311; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_mul_v4i16:1312; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry1313; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1314; GFX11-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11315; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1316; GFX11-SDAG-FAKE16-NEXT:    v_alignbit_b32 v1, s0, v0, 161317; GFX11-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11318; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1319;1320; GFX11-GISEL-LABEL: test_vector_reduce_mul_v4i16:1321; GFX11-GISEL:       ; %bb.0: ; %entry1322; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1323; GFX11-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11324; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1325; GFX11-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01326; GFX11-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11327; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]1328;1329; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_mul_v4i16:1330; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry1331; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x01332; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x01333; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x01334; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x01335; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x01336; GFX12-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11337; GFX12-SDAG-TRUE16-NEXT:    v_mov_b32_e32 v1, s01338; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1339; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v0.h1340; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v1.l1341; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1342; GFX12-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v21343; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1344;1345; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_mul_v4i16:1346; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry1347; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x01348; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x01349; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x01350; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x01351; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x01352; GFX12-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11353; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1354; GFX12-SDAG-FAKE16-NEXT:    v_alignbit_b32 v1, s0, v0, 161355; GFX12-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11356; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1357;1358; GFX12-GISEL-LABEL: test_vector_reduce_mul_v4i16:1359; GFX12-GISEL:       ; %bb.0: ; %entry1360; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x01361; GFX12-GISEL-NEXT:    s_wait_expcnt 0x01362; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x01363; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x01364; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x01365; GFX12-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11366; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1367; GFX12-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01368; GFX12-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11369; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]1370entry:1371  %res = call i16 @llvm.vector.reduce.mul.v4i16(<4 x i16> %v)1372  ret i16 %res1373}1374 1375define i16 @test_vector_reduce_mul_v8i16(<8 x i16> %v) {1376; GFX7-SDAG-LABEL: test_vector_reduce_mul_v8i16:1377; GFX7-SDAG:       ; %bb.0: ; %entry1378; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1379; GFX7-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v61380; GFX7-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v71381; GFX7-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v51382; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v41383; GFX7-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v31384; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v21385; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v11386; GFX7-SDAG-NEXT:    v_and_b32_e32 v0, 0xffff, v01387; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]1388;1389; GFX7-GISEL-LABEL: test_vector_reduce_mul_v8i16:1390; GFX7-GISEL:       ; %bb.0: ; %entry1391; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1392; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v41393; GFX7-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v51394; GFX7-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v61395; GFX7-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v71396; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v21397; GFX7-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v31398; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v11399; GFX7-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 161400; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]1401;1402; GFX8-SDAG-LABEL: test_vector_reduce_mul_v8i16:1403; GFX8-SDAG:       ; %bb.0: ; %entry1404; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1405; GFX8-SDAG-NEXT:    v_mul_lo_u16_sdwa v4, v1, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11406; GFX8-SDAG-NEXT:    v_mul_lo_u16_sdwa v5, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11407; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v1, v1, v31408; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v21409; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v2, v5, v41410; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v11411; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v21412; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]1413;1414; GFX8-GISEL-LABEL: test_vector_reduce_mul_v8i16:1415; GFX8-GISEL:       ; %bb.0: ; %entry1416; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1417; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v4, v0, v21418; GFX8-GISEL-NEXT:    v_mul_lo_u16_sdwa v0, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11419; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v2, v1, v31420; GFX8-GISEL-NEXT:    v_mul_lo_u16_sdwa v1, v1, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11421; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v2, v4, v21422; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v11423; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v2, v01424; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]1425;1426; GFX9-SDAG-LABEL: test_vector_reduce_mul_v8i16:1427; GFX9-SDAG:       ; %bb.0: ; %entry1428; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1429; GFX9-SDAG-NEXT:    v_pk_mul_lo_u16 v1, v1, v31430; GFX9-SDAG-NEXT:    v_pk_mul_lo_u16 v0, v0, v21431; GFX9-SDAG-NEXT:    s_nop 01432; GFX9-SDAG-NEXT:    v_pk_mul_lo_u16 v0, v0, v11433; GFX9-SDAG-NEXT:    s_nop 01434; GFX9-SDAG-NEXT:    v_alignbit_b32 v1, s0, v0, 161435; GFX9-SDAG-NEXT:    v_pk_mul_lo_u16 v0, v0, v11436; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]1437;1438; GFX9-GISEL-LABEL: test_vector_reduce_mul_v8i16:1439; GFX9-GISEL:       ; %bb.0: ; %entry1440; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1441; GFX9-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v21442; GFX9-GISEL-NEXT:    v_pk_mul_lo_u16 v1, v1, v31443; GFX9-GISEL-NEXT:    s_nop 01444; GFX9-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11445; GFX9-GISEL-NEXT:    s_nop 01446; GFX9-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01447; GFX9-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11448; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]1449;1450; GFX10-SDAG-LABEL: test_vector_reduce_mul_v8i16:1451; GFX10-SDAG:       ; %bb.0: ; %entry1452; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1453; GFX10-SDAG-NEXT:    v_pk_mul_lo_u16 v1, v1, v31454; GFX10-SDAG-NEXT:    v_pk_mul_lo_u16 v0, v0, v21455; GFX10-SDAG-NEXT:    v_pk_mul_lo_u16 v0, v0, v11456; GFX10-SDAG-NEXT:    v_alignbit_b32 v1, s4, v0, 161457; GFX10-SDAG-NEXT:    v_pk_mul_lo_u16 v0, v0, v11458; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]1459;1460; GFX10-GISEL-LABEL: test_vector_reduce_mul_v8i16:1461; GFX10-GISEL:       ; %bb.0: ; %entry1462; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1463; GFX10-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v21464; GFX10-GISEL-NEXT:    v_pk_mul_lo_u16 v1, v1, v31465; GFX10-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11466; GFX10-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01467; GFX10-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11468; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]1469;1470; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_mul_v8i16:1471; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry1472; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1473; GFX11-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v1, v1, v31474; GFX11-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v21475; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)1476; GFX11-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11477; GFX11-SDAG-TRUE16-NEXT:    v_mov_b32_e32 v1, s01478; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v0.h1479; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1480; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v1.l1481; GFX11-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v21482; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1483;1484; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_mul_v8i16:1485; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry1486; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1487; GFX11-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v1, v1, v31488; GFX11-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v21489; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1490; GFX11-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11491; GFX11-SDAG-FAKE16-NEXT:    v_alignbit_b32 v1, s0, v0, 161492; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1493; GFX11-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11494; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1495;1496; GFX11-GISEL-LABEL: test_vector_reduce_mul_v8i16:1497; GFX11-GISEL:       ; %bb.0: ; %entry1498; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1499; GFX11-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v21500; GFX11-GISEL-NEXT:    v_pk_mul_lo_u16 v1, v1, v31501; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1502; GFX11-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11503; GFX11-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01504; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1505; GFX11-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11506; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]1507;1508; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_mul_v8i16:1509; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry1510; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x01511; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x01512; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x01513; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x01514; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x01515; GFX12-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v1, v1, v31516; GFX12-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v21517; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)1518; GFX12-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11519; GFX12-SDAG-TRUE16-NEXT:    v_mov_b32_e32 v1, s01520; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v0.h1521; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1522; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v1.l1523; GFX12-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v21524; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1525;1526; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_mul_v8i16:1527; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry1528; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x01529; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x01530; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x01531; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x01532; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x01533; GFX12-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v1, v1, v31534; GFX12-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v21535; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1536; GFX12-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11537; GFX12-SDAG-FAKE16-NEXT:    v_alignbit_b32 v1, s0, v0, 161538; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1539; GFX12-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11540; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1541;1542; GFX12-GISEL-LABEL: test_vector_reduce_mul_v8i16:1543; GFX12-GISEL:       ; %bb.0: ; %entry1544; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x01545; GFX12-GISEL-NEXT:    s_wait_expcnt 0x01546; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x01547; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x01548; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x01549; GFX12-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v21550; GFX12-GISEL-NEXT:    v_pk_mul_lo_u16 v1, v1, v31551; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1552; GFX12-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11553; GFX12-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01554; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1555; GFX12-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11556; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]1557entry:1558  %res = call i16 @llvm.vector.reduce.mul.v8i16(<8 x i16> %v)1559  ret i16 %res1560}1561 1562define i16 @test_vector_reduce_mul_v16i16(<16 x i16> %v) {1563; GFX7-SDAG-LABEL: test_vector_reduce_mul_v16i16:1564; GFX7-SDAG:       ; %bb.0: ; %entry1565; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1566; GFX7-SDAG-NEXT:    v_mul_lo_u32 v5, v5, v131567; GFX7-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v91568; GFX7-SDAG-NEXT:    v_mul_lo_u32 v7, v7, v151569; GFX7-SDAG-NEXT:    v_mul_lo_u32 v6, v6, v141570; GFX7-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v101571; GFX7-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v111572; GFX7-SDAG-NEXT:    v_mul_lo_u32 v4, v4, v121573; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v81574; GFX7-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v61575; GFX7-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v71576; GFX7-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v51577; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v41578; GFX7-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v31579; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v21580; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v11581; GFX7-SDAG-NEXT:    v_and_b32_e32 v0, 0xffff, v01582; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]1583;1584; GFX7-GISEL-LABEL: test_vector_reduce_mul_v16i16:1585; GFX7-GISEL:       ; %bb.0: ; %entry1586; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1587; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v81588; GFX7-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v91589; GFX7-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v101590; GFX7-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v111591; GFX7-GISEL-NEXT:    v_mul_lo_u32 v4, v4, v121592; GFX7-GISEL-NEXT:    v_mul_lo_u32 v5, v5, v131593; GFX7-GISEL-NEXT:    v_mul_lo_u32 v6, v6, v141594; GFX7-GISEL-NEXT:    v_mul_lo_u32 v7, v7, v151595; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v41596; GFX7-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v51597; GFX7-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v61598; GFX7-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v71599; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v21600; GFX7-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v31601; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v11602; GFX7-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 161603; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]1604;1605; GFX8-SDAG-LABEL: test_vector_reduce_mul_v16i16:1606; GFX8-SDAG:       ; %bb.0: ; %entry1607; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1608; GFX8-SDAG-NEXT:    v_mul_lo_u16_sdwa v8, v2, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11609; GFX8-SDAG-NEXT:    v_mul_lo_u16_sdwa v9, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11610; GFX8-SDAG-NEXT:    v_mul_lo_u16_sdwa v10, v3, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11611; GFX8-SDAG-NEXT:    v_mul_lo_u16_sdwa v11, v1, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11612; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v2, v2, v61613; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v41614; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v3, v3, v71615; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v1, v1, v51616; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v4, v11, v101617; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v5, v9, v81618; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v1, v1, v31619; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v21620; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v2, v5, v41621; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v11622; GFX8-SDAG-NEXT:    v_mul_lo_u16_e32 v0, v0, v21623; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]1624;1625; GFX8-GISEL-LABEL: test_vector_reduce_mul_v16i16:1626; GFX8-GISEL:       ; %bb.0: ; %entry1627; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1628; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v8, v0, v41629; GFX8-GISEL-NEXT:    v_mul_lo_u16_sdwa v0, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11630; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v4, v1, v51631; GFX8-GISEL-NEXT:    v_mul_lo_u16_sdwa v1, v1, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11632; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v5, v2, v61633; GFX8-GISEL-NEXT:    v_mul_lo_u16_sdwa v2, v2, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11634; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v6, v3, v71635; GFX8-GISEL-NEXT:    v_mul_lo_u16_sdwa v3, v3, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11636; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v5, v8, v51637; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v21638; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v2, v4, v61639; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v1, v1, v31640; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v2, v5, v21641; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v0, v11642; GFX8-GISEL-NEXT:    v_mul_lo_u16_e32 v0, v2, v01643; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]1644;1645; GFX9-SDAG-LABEL: test_vector_reduce_mul_v16i16:1646; GFX9-SDAG:       ; %bb.0: ; %entry1647; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1648; GFX9-SDAG-NEXT:    v_pk_mul_lo_u16 v2, v2, v61649; GFX9-SDAG-NEXT:    v_pk_mul_lo_u16 v0, v0, v41650; GFX9-SDAG-NEXT:    v_pk_mul_lo_u16 v3, v3, v71651; GFX9-SDAG-NEXT:    v_pk_mul_lo_u16 v1, v1, v51652; GFX9-SDAG-NEXT:    v_pk_mul_lo_u16 v0, v0, v21653; GFX9-SDAG-NEXT:    v_pk_mul_lo_u16 v1, v1, v31654; GFX9-SDAG-NEXT:    s_nop 01655; GFX9-SDAG-NEXT:    v_pk_mul_lo_u16 v0, v0, v11656; GFX9-SDAG-NEXT:    s_nop 01657; GFX9-SDAG-NEXT:    v_alignbit_b32 v1, s0, v0, 161658; GFX9-SDAG-NEXT:    v_pk_mul_lo_u16 v0, v0, v11659; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]1660;1661; GFX9-GISEL-LABEL: test_vector_reduce_mul_v16i16:1662; GFX9-GISEL:       ; %bb.0: ; %entry1663; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1664; GFX9-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v41665; GFX9-GISEL-NEXT:    v_pk_mul_lo_u16 v1, v1, v51666; GFX9-GISEL-NEXT:    v_pk_mul_lo_u16 v2, v2, v61667; GFX9-GISEL-NEXT:    v_pk_mul_lo_u16 v3, v3, v71668; GFX9-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v21669; GFX9-GISEL-NEXT:    v_pk_mul_lo_u16 v1, v1, v31670; GFX9-GISEL-NEXT:    s_nop 01671; GFX9-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11672; GFX9-GISEL-NEXT:    s_nop 01673; GFX9-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01674; GFX9-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11675; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]1676;1677; GFX10-SDAG-LABEL: test_vector_reduce_mul_v16i16:1678; GFX10-SDAG:       ; %bb.0: ; %entry1679; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1680; GFX10-SDAG-NEXT:    v_pk_mul_lo_u16 v2, v2, v61681; GFX10-SDAG-NEXT:    v_pk_mul_lo_u16 v3, v3, v71682; GFX10-SDAG-NEXT:    v_pk_mul_lo_u16 v1, v1, v51683; GFX10-SDAG-NEXT:    v_pk_mul_lo_u16 v0, v0, v41684; GFX10-SDAG-NEXT:    v_pk_mul_lo_u16 v1, v1, v31685; GFX10-SDAG-NEXT:    v_pk_mul_lo_u16 v0, v0, v21686; GFX10-SDAG-NEXT:    v_pk_mul_lo_u16 v0, v0, v11687; GFX10-SDAG-NEXT:    v_alignbit_b32 v1, s4, v0, 161688; GFX10-SDAG-NEXT:    v_pk_mul_lo_u16 v0, v0, v11689; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]1690;1691; GFX10-GISEL-LABEL: test_vector_reduce_mul_v16i16:1692; GFX10-GISEL:       ; %bb.0: ; %entry1693; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1694; GFX10-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v41695; GFX10-GISEL-NEXT:    v_pk_mul_lo_u16 v1, v1, v51696; GFX10-GISEL-NEXT:    v_pk_mul_lo_u16 v2, v2, v61697; GFX10-GISEL-NEXT:    v_pk_mul_lo_u16 v3, v3, v71698; GFX10-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v21699; GFX10-GISEL-NEXT:    v_pk_mul_lo_u16 v1, v1, v31700; GFX10-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11701; GFX10-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01702; GFX10-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11703; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]1704;1705; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_mul_v16i16:1706; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry1707; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1708; GFX11-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v2, v2, v61709; GFX11-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v3, v3, v71710; GFX11-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v1, v1, v51711; GFX11-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v41712; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1713; GFX11-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v1, v1, v31714; GFX11-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v21715; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)1716; GFX11-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11717; GFX11-SDAG-TRUE16-NEXT:    v_mov_b32_e32 v1, s01718; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v0.h1719; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1720; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v1.l1721; GFX11-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v21722; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1723;1724; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_mul_v16i16:1725; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry1726; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1727; GFX11-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v2, v2, v61728; GFX11-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v3, v3, v71729; GFX11-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v1, v1, v51730; GFX11-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v41731; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1732; GFX11-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v1, v1, v31733; GFX11-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v21734; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1735; GFX11-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11736; GFX11-SDAG-FAKE16-NEXT:    v_alignbit_b32 v1, s0, v0, 161737; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1738; GFX11-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11739; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1740;1741; GFX11-GISEL-LABEL: test_vector_reduce_mul_v16i16:1742; GFX11-GISEL:       ; %bb.0: ; %entry1743; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1744; GFX11-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v41745; GFX11-GISEL-NEXT:    v_pk_mul_lo_u16 v1, v1, v51746; GFX11-GISEL-NEXT:    v_pk_mul_lo_u16 v2, v2, v61747; GFX11-GISEL-NEXT:    v_pk_mul_lo_u16 v3, v3, v71748; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1749; GFX11-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v21750; GFX11-GISEL-NEXT:    v_pk_mul_lo_u16 v1, v1, v31751; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1752; GFX11-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11753; GFX11-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01754; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1755; GFX11-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11756; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]1757;1758; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_mul_v16i16:1759; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry1760; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x01761; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x01762; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x01763; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x01764; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x01765; GFX12-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v2, v2, v61766; GFX12-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v3, v3, v71767; GFX12-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v1, v1, v51768; GFX12-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v41769; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1770; GFX12-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v1, v1, v31771; GFX12-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v21772; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)1773; GFX12-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11774; GFX12-SDAG-TRUE16-NEXT:    v_mov_b32_e32 v1, s01775; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v0.h1776; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1777; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v1.l1778; GFX12-SDAG-TRUE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v21779; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1780;1781; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_mul_v16i16:1782; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry1783; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x01784; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x01785; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x01786; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x01787; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x01788; GFX12-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v2, v2, v61789; GFX12-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v3, v3, v71790; GFX12-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v1, v1, v51791; GFX12-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v41792; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1793; GFX12-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v1, v1, v31794; GFX12-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v21795; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1796; GFX12-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11797; GFX12-SDAG-FAKE16-NEXT:    v_alignbit_b32 v1, s0, v0, 161798; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1799; GFX12-SDAG-FAKE16-NEXT:    v_pk_mul_lo_u16 v0, v0, v11800; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1801;1802; GFX12-GISEL-LABEL: test_vector_reduce_mul_v16i16:1803; GFX12-GISEL:       ; %bb.0: ; %entry1804; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x01805; GFX12-GISEL-NEXT:    s_wait_expcnt 0x01806; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x01807; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x01808; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x01809; GFX12-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v41810; GFX12-GISEL-NEXT:    v_pk_mul_lo_u16 v1, v1, v51811; GFX12-GISEL-NEXT:    v_pk_mul_lo_u16 v2, v2, v61812; GFX12-GISEL-NEXT:    v_pk_mul_lo_u16 v3, v3, v71813; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1814; GFX12-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v21815; GFX12-GISEL-NEXT:    v_pk_mul_lo_u16 v1, v1, v31816; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1817; GFX12-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11818; GFX12-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01819; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1820; GFX12-GISEL-NEXT:    v_pk_mul_lo_u16 v0, v0, v11821; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]1822entry:1823  %res = call i16 @llvm.vector.reduce.mul.v16i16(<16 x i16> %v)1824  ret i16 %res1825}1826 1827define i32 @test_vector_reduce_mul_v2i32(<2 x i32> %v) {1828; GFX7-LABEL: test_vector_reduce_mul_v2i32:1829; GFX7:       ; %bb.0: ; %entry1830; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1831; GFX7-NEXT:    v_mul_lo_u32 v0, v0, v11832; GFX7-NEXT:    s_setpc_b64 s[30:31]1833;1834; GFX8-LABEL: test_vector_reduce_mul_v2i32:1835; GFX8:       ; %bb.0: ; %entry1836; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1837; GFX8-NEXT:    v_mul_lo_u32 v0, v0, v11838; GFX8-NEXT:    s_setpc_b64 s[30:31]1839;1840; GFX9-LABEL: test_vector_reduce_mul_v2i32:1841; GFX9:       ; %bb.0: ; %entry1842; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1843; GFX9-NEXT:    v_mul_lo_u32 v0, v0, v11844; GFX9-NEXT:    s_setpc_b64 s[30:31]1845;1846; GFX10-LABEL: test_vector_reduce_mul_v2i32:1847; GFX10:       ; %bb.0: ; %entry1848; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1849; GFX10-NEXT:    v_mul_lo_u32 v0, v0, v11850; GFX10-NEXT:    s_setpc_b64 s[30:31]1851;1852; GFX11-LABEL: test_vector_reduce_mul_v2i32:1853; GFX11:       ; %bb.0: ; %entry1854; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1855; GFX11-NEXT:    v_mul_lo_u32 v0, v0, v11856; GFX11-NEXT:    s_setpc_b64 s[30:31]1857;1858; GFX12-LABEL: test_vector_reduce_mul_v2i32:1859; GFX12:       ; %bb.0: ; %entry1860; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01861; GFX12-NEXT:    s_wait_expcnt 0x01862; GFX12-NEXT:    s_wait_samplecnt 0x01863; GFX12-NEXT:    s_wait_bvhcnt 0x01864; GFX12-NEXT:    s_wait_kmcnt 0x01865; GFX12-NEXT:    v_mul_lo_u32 v0, v0, v11866; GFX12-NEXT:    s_setpc_b64 s[30:31]1867entry:1868  %res = call i32 @llvm.vector.reduce.mul.v2i32(<2 x i32> %v)1869  ret i32 %res1870}1871 1872define i32 @test_vector_reduce_mul_v3i32(<3 x i32> %v) {1873; GFX7-LABEL: test_vector_reduce_mul_v3i32:1874; GFX7:       ; %bb.0: ; %entry1875; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1876; GFX7-NEXT:    v_mul_lo_u32 v0, v0, v11877; GFX7-NEXT:    v_mul_lo_u32 v0, v0, v21878; GFX7-NEXT:    s_setpc_b64 s[30:31]1879;1880; GFX8-LABEL: test_vector_reduce_mul_v3i32:1881; GFX8:       ; %bb.0: ; %entry1882; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1883; GFX8-NEXT:    v_mul_lo_u32 v0, v0, v11884; GFX8-NEXT:    v_mul_lo_u32 v0, v0, v21885; GFX8-NEXT:    s_setpc_b64 s[30:31]1886;1887; GFX9-LABEL: test_vector_reduce_mul_v3i32:1888; GFX9:       ; %bb.0: ; %entry1889; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1890; GFX9-NEXT:    v_mul_lo_u32 v0, v0, v11891; GFX9-NEXT:    v_mul_lo_u32 v0, v0, v21892; GFX9-NEXT:    s_setpc_b64 s[30:31]1893;1894; GFX10-LABEL: test_vector_reduce_mul_v3i32:1895; GFX10:       ; %bb.0: ; %entry1896; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1897; GFX10-NEXT:    v_mul_lo_u32 v0, v0, v11898; GFX10-NEXT:    v_mul_lo_u32 v0, v0, v21899; GFX10-NEXT:    s_setpc_b64 s[30:31]1900;1901; GFX11-LABEL: test_vector_reduce_mul_v3i32:1902; GFX11:       ; %bb.0: ; %entry1903; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1904; GFX11-NEXT:    v_mul_lo_u32 v0, v0, v11905; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1906; GFX11-NEXT:    v_mul_lo_u32 v0, v0, v21907; GFX11-NEXT:    s_setpc_b64 s[30:31]1908;1909; GFX12-LABEL: test_vector_reduce_mul_v3i32:1910; GFX12:       ; %bb.0: ; %entry1911; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01912; GFX12-NEXT:    s_wait_expcnt 0x01913; GFX12-NEXT:    s_wait_samplecnt 0x01914; GFX12-NEXT:    s_wait_bvhcnt 0x01915; GFX12-NEXT:    s_wait_kmcnt 0x01916; GFX12-NEXT:    v_mul_lo_u32 v0, v0, v11917; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)1918; GFX12-NEXT:    v_mul_lo_u32 v0, v0, v21919; GFX12-NEXT:    s_setpc_b64 s[30:31]1920entry:1921  %res = call i32 @llvm.vector.reduce.mul.v3i32(<3 x i32> %v)1922  ret i32 %res1923}1924 1925define i32 @test_vector_reduce_mul_v4i32(<4 x i32> %v) {1926; GFX7-SDAG-LABEL: test_vector_reduce_mul_v4i32:1927; GFX7-SDAG:       ; %bb.0: ; %entry1928; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1929; GFX7-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v31930; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v21931; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v11932; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]1933;1934; GFX7-GISEL-LABEL: test_vector_reduce_mul_v4i32:1935; GFX7-GISEL:       ; %bb.0: ; %entry1936; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1937; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v21938; GFX7-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v31939; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v11940; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]1941;1942; GFX8-SDAG-LABEL: test_vector_reduce_mul_v4i32:1943; GFX8-SDAG:       ; %bb.0: ; %entry1944; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1945; GFX8-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v31946; GFX8-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v21947; GFX8-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v11948; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]1949;1950; GFX8-GISEL-LABEL: test_vector_reduce_mul_v4i32:1951; GFX8-GISEL:       ; %bb.0: ; %entry1952; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1953; GFX8-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v21954; GFX8-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v31955; GFX8-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v11956; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]1957;1958; GFX9-SDAG-LABEL: test_vector_reduce_mul_v4i32:1959; GFX9-SDAG:       ; %bb.0: ; %entry1960; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1961; GFX9-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v31962; GFX9-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v21963; GFX9-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v11964; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]1965;1966; GFX9-GISEL-LABEL: test_vector_reduce_mul_v4i32:1967; GFX9-GISEL:       ; %bb.0: ; %entry1968; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1969; GFX9-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v21970; GFX9-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v31971; GFX9-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v11972; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]1973;1974; GFX10-SDAG-LABEL: test_vector_reduce_mul_v4i32:1975; GFX10-SDAG:       ; %bb.0: ; %entry1976; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1977; GFX10-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v31978; GFX10-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v21979; GFX10-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v11980; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]1981;1982; GFX10-GISEL-LABEL: test_vector_reduce_mul_v4i32:1983; GFX10-GISEL:       ; %bb.0: ; %entry1984; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1985; GFX10-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v21986; GFX10-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v31987; GFX10-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v11988; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]1989;1990; GFX11-SDAG-LABEL: test_vector_reduce_mul_v4i32:1991; GFX11-SDAG:       ; %bb.0: ; %entry1992; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1993; GFX11-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v31994; GFX11-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v21995; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)1996; GFX11-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v11997; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]1998;1999; GFX11-GISEL-LABEL: test_vector_reduce_mul_v4i32:2000; GFX11-GISEL:       ; %bb.0: ; %entry2001; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2002; GFX11-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v22003; GFX11-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v32004; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2005; GFX11-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v12006; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]2007;2008; GFX12-SDAG-LABEL: test_vector_reduce_mul_v4i32:2009; GFX12-SDAG:       ; %bb.0: ; %entry2010; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x02011; GFX12-SDAG-NEXT:    s_wait_expcnt 0x02012; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x02013; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x02014; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x02015; GFX12-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v32016; GFX12-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v22017; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)2018; GFX12-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v12019; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]2020;2021; GFX12-GISEL-LABEL: test_vector_reduce_mul_v4i32:2022; GFX12-GISEL:       ; %bb.0: ; %entry2023; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x02024; GFX12-GISEL-NEXT:    s_wait_expcnt 0x02025; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x02026; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x02027; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x02028; GFX12-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v22029; GFX12-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v32030; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2031; GFX12-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v12032; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]2033entry:2034  %res = call i32 @llvm.vector.reduce.mul.v4i32(<4 x i32> %v)2035  ret i32 %res2036}2037 2038define i32 @test_vector_reduce_mul_v8i32(<8 x i32> %v) {2039; GFX7-SDAG-LABEL: test_vector_reduce_mul_v8i32:2040; GFX7-SDAG:       ; %bb.0: ; %entry2041; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2042; GFX7-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v62043; GFX7-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v72044; GFX7-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v52045; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v42046; GFX7-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v32047; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v22048; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v12049; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]2050;2051; GFX7-GISEL-LABEL: test_vector_reduce_mul_v8i32:2052; GFX7-GISEL:       ; %bb.0: ; %entry2053; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2054; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v42055; GFX7-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v52056; GFX7-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v62057; GFX7-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v72058; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v22059; GFX7-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v32060; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v12061; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]2062;2063; GFX8-SDAG-LABEL: test_vector_reduce_mul_v8i32:2064; GFX8-SDAG:       ; %bb.0: ; %entry2065; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2066; GFX8-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v62067; GFX8-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v72068; GFX8-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v52069; GFX8-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v42070; GFX8-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v32071; GFX8-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v22072; GFX8-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v12073; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]2074;2075; GFX8-GISEL-LABEL: test_vector_reduce_mul_v8i32:2076; GFX8-GISEL:       ; %bb.0: ; %entry2077; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2078; GFX8-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v42079; GFX8-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v52080; GFX8-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v62081; GFX8-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v72082; GFX8-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v22083; GFX8-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v32084; GFX8-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v12085; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]2086;2087; GFX9-SDAG-LABEL: test_vector_reduce_mul_v8i32:2088; GFX9-SDAG:       ; %bb.0: ; %entry2089; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2090; GFX9-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v62091; GFX9-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v42092; GFX9-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v72093; GFX9-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v52094; GFX9-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v32095; GFX9-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v22096; GFX9-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v12097; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]2098;2099; GFX9-GISEL-LABEL: test_vector_reduce_mul_v8i32:2100; GFX9-GISEL:       ; %bb.0: ; %entry2101; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2102; GFX9-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v42103; GFX9-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v52104; GFX9-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v62105; GFX9-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v72106; GFX9-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v22107; GFX9-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v32108; GFX9-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v12109; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]2110;2111; GFX10-SDAG-LABEL: test_vector_reduce_mul_v8i32:2112; GFX10-SDAG:       ; %bb.0: ; %entry2113; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2114; GFX10-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v62115; GFX10-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v72116; GFX10-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v52117; GFX10-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v42118; GFX10-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v32119; GFX10-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v22120; GFX10-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v12121; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]2122;2123; GFX10-GISEL-LABEL: test_vector_reduce_mul_v8i32:2124; GFX10-GISEL:       ; %bb.0: ; %entry2125; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2126; GFX10-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v42127; GFX10-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v52128; GFX10-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v62129; GFX10-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v72130; GFX10-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v22131; GFX10-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v32132; GFX10-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v12133; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]2134;2135; GFX11-SDAG-LABEL: test_vector_reduce_mul_v8i32:2136; GFX11-SDAG:       ; %bb.0: ; %entry2137; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2138; GFX11-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v62139; GFX11-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v72140; GFX11-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v52141; GFX11-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v42142; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2143; GFX11-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v32144; GFX11-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v22145; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)2146; GFX11-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v12147; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]2148;2149; GFX11-GISEL-LABEL: test_vector_reduce_mul_v8i32:2150; GFX11-GISEL:       ; %bb.0: ; %entry2151; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2152; GFX11-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v42153; GFX11-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v52154; GFX11-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v62155; GFX11-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v72156; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2157; GFX11-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v22158; GFX11-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v32159; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2160; GFX11-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v12161; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]2162;2163; GFX12-SDAG-LABEL: test_vector_reduce_mul_v8i32:2164; GFX12-SDAG:       ; %bb.0: ; %entry2165; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x02166; GFX12-SDAG-NEXT:    s_wait_expcnt 0x02167; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x02168; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x02169; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x02170; GFX12-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v62171; GFX12-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v72172; GFX12-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v52173; GFX12-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v42174; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2175; GFX12-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v32176; GFX12-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v22177; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)2178; GFX12-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v12179; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]2180;2181; GFX12-GISEL-LABEL: test_vector_reduce_mul_v8i32:2182; GFX12-GISEL:       ; %bb.0: ; %entry2183; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x02184; GFX12-GISEL-NEXT:    s_wait_expcnt 0x02185; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x02186; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x02187; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x02188; GFX12-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v42189; GFX12-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v52190; GFX12-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v62191; GFX12-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v72192; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2193; GFX12-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v22194; GFX12-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v32195; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2196; GFX12-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v12197; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]2198entry:2199  %res = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> %v)2200  ret i32 %res2201}2202 2203define i32 @test_vector_reduce_mul_v16i32(<16 x i32> %v) {2204; GFX7-SDAG-LABEL: test_vector_reduce_mul_v16i32:2205; GFX7-SDAG:       ; %bb.0: ; %entry2206; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2207; GFX7-SDAG-NEXT:    v_mul_lo_u32 v5, v5, v132208; GFX7-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v92209; GFX7-SDAG-NEXT:    v_mul_lo_u32 v7, v7, v152210; GFX7-SDAG-NEXT:    v_mul_lo_u32 v6, v6, v142211; GFX7-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v102212; GFX7-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v112213; GFX7-SDAG-NEXT:    v_mul_lo_u32 v4, v4, v122214; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v82215; GFX7-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v62216; GFX7-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v72217; GFX7-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v52218; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v42219; GFX7-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v32220; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v22221; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v12222; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]2223;2224; GFX7-GISEL-LABEL: test_vector_reduce_mul_v16i32:2225; GFX7-GISEL:       ; %bb.0: ; %entry2226; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2227; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v82228; GFX7-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v92229; GFX7-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v102230; GFX7-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v112231; GFX7-GISEL-NEXT:    v_mul_lo_u32 v4, v4, v122232; GFX7-GISEL-NEXT:    v_mul_lo_u32 v5, v5, v132233; GFX7-GISEL-NEXT:    v_mul_lo_u32 v6, v6, v142234; GFX7-GISEL-NEXT:    v_mul_lo_u32 v7, v7, v152235; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v42236; GFX7-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v52237; GFX7-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v62238; GFX7-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v72239; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v22240; GFX7-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v32241; GFX7-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v12242; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]2243;2244; GFX8-SDAG-LABEL: test_vector_reduce_mul_v16i32:2245; GFX8-SDAG:       ; %bb.0: ; %entry2246; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2247; GFX8-SDAG-NEXT:    v_mul_lo_u32 v5, v5, v132248; GFX8-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v92249; GFX8-SDAG-NEXT:    v_mul_lo_u32 v7, v7, v152250; GFX8-SDAG-NEXT:    v_mul_lo_u32 v6, v6, v142251; GFX8-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v102252; GFX8-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v112253; GFX8-SDAG-NEXT:    v_mul_lo_u32 v4, v4, v122254; GFX8-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v82255; GFX8-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v62256; GFX8-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v72257; GFX8-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v52258; GFX8-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v42259; GFX8-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v32260; GFX8-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v22261; GFX8-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v12262; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]2263;2264; GFX8-GISEL-LABEL: test_vector_reduce_mul_v16i32:2265; GFX8-GISEL:       ; %bb.0: ; %entry2266; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2267; GFX8-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v82268; GFX8-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v92269; GFX8-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v102270; GFX8-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v112271; GFX8-GISEL-NEXT:    v_mul_lo_u32 v4, v4, v122272; GFX8-GISEL-NEXT:    v_mul_lo_u32 v5, v5, v132273; GFX8-GISEL-NEXT:    v_mul_lo_u32 v6, v6, v142274; GFX8-GISEL-NEXT:    v_mul_lo_u32 v7, v7, v152275; GFX8-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v42276; GFX8-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v52277; GFX8-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v62278; GFX8-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v72279; GFX8-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v22280; GFX8-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v32281; GFX8-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v12282; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]2283;2284; GFX9-SDAG-LABEL: test_vector_reduce_mul_v16i32:2285; GFX9-SDAG:       ; %bb.0: ; %entry2286; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2287; GFX9-SDAG-NEXT:    v_mul_lo_u32 v5, v5, v132288; GFX9-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v92289; GFX9-SDAG-NEXT:    v_mul_lo_u32 v7, v7, v152290; GFX9-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v112291; GFX9-SDAG-NEXT:    v_mul_lo_u32 v4, v4, v122292; GFX9-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v82293; GFX9-SDAG-NEXT:    v_mul_lo_u32 v6, v6, v142294; GFX9-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v102295; GFX9-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v62296; GFX9-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v42297; GFX9-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v72298; GFX9-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v52299; GFX9-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v32300; GFX9-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v22301; GFX9-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v12302; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]2303;2304; GFX9-GISEL-LABEL: test_vector_reduce_mul_v16i32:2305; GFX9-GISEL:       ; %bb.0: ; %entry2306; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2307; GFX9-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v82308; GFX9-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v92309; GFX9-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v102310; GFX9-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v112311; GFX9-GISEL-NEXT:    v_mul_lo_u32 v4, v4, v122312; GFX9-GISEL-NEXT:    v_mul_lo_u32 v5, v5, v132313; GFX9-GISEL-NEXT:    v_mul_lo_u32 v6, v6, v142314; GFX9-GISEL-NEXT:    v_mul_lo_u32 v7, v7, v152315; GFX9-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v42316; GFX9-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v52317; GFX9-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v62318; GFX9-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v72319; GFX9-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v22320; GFX9-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v32321; GFX9-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v12322; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]2323;2324; GFX10-SDAG-LABEL: test_vector_reduce_mul_v16i32:2325; GFX10-SDAG:       ; %bb.0: ; %entry2326; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2327; GFX10-SDAG-NEXT:    v_mul_lo_u32 v5, v5, v132328; GFX10-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v92329; GFX10-SDAG-NEXT:    v_mul_lo_u32 v7, v7, v152330; GFX10-SDAG-NEXT:    v_mul_lo_u32 v6, v6, v142331; GFX10-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v102332; GFX10-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v112333; GFX10-SDAG-NEXT:    v_mul_lo_u32 v4, v4, v122334; GFX10-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v82335; GFX10-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v52336; GFX10-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v62337; GFX10-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v72338; GFX10-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v42339; GFX10-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v32340; GFX10-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v22341; GFX10-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v12342; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]2343;2344; GFX10-GISEL-LABEL: test_vector_reduce_mul_v16i32:2345; GFX10-GISEL:       ; %bb.0: ; %entry2346; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2347; GFX10-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v82348; GFX10-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v92349; GFX10-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v102350; GFX10-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v112351; GFX10-GISEL-NEXT:    v_mul_lo_u32 v4, v4, v122352; GFX10-GISEL-NEXT:    v_mul_lo_u32 v5, v5, v132353; GFX10-GISEL-NEXT:    v_mul_lo_u32 v6, v6, v142354; GFX10-GISEL-NEXT:    v_mul_lo_u32 v7, v7, v152355; GFX10-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v42356; GFX10-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v52357; GFX10-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v62358; GFX10-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v72359; GFX10-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v22360; GFX10-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v32361; GFX10-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v12362; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]2363;2364; GFX11-SDAG-LABEL: test_vector_reduce_mul_v16i32:2365; GFX11-SDAG:       ; %bb.0: ; %entry2366; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2367; GFX11-SDAG-NEXT:    v_mul_lo_u32 v5, v5, v132368; GFX11-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v92369; GFX11-SDAG-NEXT:    v_mul_lo_u32 v7, v7, v152370; GFX11-SDAG-NEXT:    v_mul_lo_u32 v6, v6, v142371; GFX11-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v102372; GFX11-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v112373; GFX11-SDAG-NEXT:    v_mul_lo_u32 v4, v4, v122374; GFX11-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v82375; GFX11-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v52376; GFX11-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v62377; GFX11-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v72378; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)2379; GFX11-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v42380; GFX11-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v32381; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2382; GFX11-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v22383; GFX11-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v12384; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]2385;2386; GFX11-GISEL-LABEL: test_vector_reduce_mul_v16i32:2387; GFX11-GISEL:       ; %bb.0: ; %entry2388; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2389; GFX11-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v82390; GFX11-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v92391; GFX11-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v102392; GFX11-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v112393; GFX11-GISEL-NEXT:    v_mul_lo_u32 v4, v4, v122394; GFX11-GISEL-NEXT:    v_mul_lo_u32 v5, v5, v132395; GFX11-GISEL-NEXT:    v_mul_lo_u32 v6, v6, v142396; GFX11-GISEL-NEXT:    v_mul_lo_u32 v7, v7, v152397; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)2398; GFX11-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v42399; GFX11-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v52400; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)2401; GFX11-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v62402; GFX11-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v72403; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2404; GFX11-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v22405; GFX11-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v32406; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2407; GFX11-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v12408; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]2409;2410; GFX12-SDAG-LABEL: test_vector_reduce_mul_v16i32:2411; GFX12-SDAG:       ; %bb.0: ; %entry2412; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x02413; GFX12-SDAG-NEXT:    s_wait_expcnt 0x02414; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x02415; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x02416; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x02417; GFX12-SDAG-NEXT:    v_mul_lo_u32 v5, v5, v132418; GFX12-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v92419; GFX12-SDAG-NEXT:    v_mul_lo_u32 v7, v7, v152420; GFX12-SDAG-NEXT:    v_mul_lo_u32 v6, v6, v142421; GFX12-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v102422; GFX12-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v112423; GFX12-SDAG-NEXT:    v_mul_lo_u32 v4, v4, v122424; GFX12-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v82425; GFX12-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v52426; GFX12-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v62427; GFX12-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v72428; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)2429; GFX12-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v42430; GFX12-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v32431; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2432; GFX12-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v22433; GFX12-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v12434; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]2435;2436; GFX12-GISEL-LABEL: test_vector_reduce_mul_v16i32:2437; GFX12-GISEL:       ; %bb.0: ; %entry2438; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x02439; GFX12-GISEL-NEXT:    s_wait_expcnt 0x02440; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x02441; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x02442; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x02443; GFX12-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v82444; GFX12-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v92445; GFX12-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v102446; GFX12-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v112447; GFX12-GISEL-NEXT:    v_mul_lo_u32 v4, v4, v122448; GFX12-GISEL-NEXT:    v_mul_lo_u32 v5, v5, v132449; GFX12-GISEL-NEXT:    v_mul_lo_u32 v6, v6, v142450; GFX12-GISEL-NEXT:    v_mul_lo_u32 v7, v7, v152451; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)2452; GFX12-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v42453; GFX12-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v52454; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)2455; GFX12-GISEL-NEXT:    v_mul_lo_u32 v2, v2, v62456; GFX12-GISEL-NEXT:    v_mul_lo_u32 v3, v3, v72457; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2458; GFX12-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v22459; GFX12-GISEL-NEXT:    v_mul_lo_u32 v1, v1, v32460; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2461; GFX12-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v12462; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]2463entry:2464  %res = call i32 @llvm.vector.reduce.mul.v16i32(<16 x i32> %v)2465  ret i32 %res2466}2467 2468define i64 @test_vector_reduce_mul_v2i64(<2 x i64> %v) {2469; GFX7-SDAG-LABEL: test_vector_reduce_mul_v2i64:2470; GFX7-SDAG:       ; %bb.0: ; %entry2471; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2472; GFX7-SDAG-NEXT:    v_mov_b32_e32 v4, v12473; GFX7-SDAG-NEXT:    v_mul_lo_u32 v3, v0, v32474; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v0, v2, 02475; GFX7-SDAG-NEXT:    v_mul_lo_u32 v2, v4, v22476; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v32477; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v22478; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]2479;2480; GFX7-GISEL-LABEL: test_vector_reduce_mul_v2i64:2481; GFX7-GISEL:       ; %bb.0: ; %entry2482; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2483; GFX7-GISEL-NEXT:    v_mov_b32_e32 v4, v02484; GFX7-GISEL-NEXT:    v_mov_b32_e32 v5, v22485; GFX7-GISEL-NEXT:    v_mov_b32_e32 v6, v12486; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v4, v5, 02487; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[7:8], s[4:5], v4, v3, v[1:2]2488; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[1:2], s[4:5], v6, v5, v[7:8]2489; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]2490;2491; GFX8-SDAG-LABEL: test_vector_reduce_mul_v2i64:2492; GFX8-SDAG:       ; %bb.0: ; %entry2493; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2494; GFX8-SDAG-NEXT:    v_mov_b32_e32 v4, v12495; GFX8-SDAG-NEXT:    v_mul_lo_u32 v3, v0, v32496; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v0, v2, 02497; GFX8-SDAG-NEXT:    v_mul_lo_u32 v2, v4, v22498; GFX8-SDAG-NEXT:    v_add_u32_e32 v1, vcc, v1, v32499; GFX8-SDAG-NEXT:    v_add_u32_e32 v1, vcc, v1, v22500; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]2501;2502; GFX8-GISEL-LABEL: test_vector_reduce_mul_v2i64:2503; GFX8-GISEL:       ; %bb.0: ; %entry2504; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2505; GFX8-GISEL-NEXT:    v_mov_b32_e32 v4, v02506; GFX8-GISEL-NEXT:    v_mov_b32_e32 v5, v22507; GFX8-GISEL-NEXT:    v_mov_b32_e32 v6, v12508; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v4, v5, 02509; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[7:8], s[4:5], v4, v3, v[1:2]2510; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[1:2], s[4:5], v6, v5, v[7:8]2511; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]2512;2513; GFX9-SDAG-LABEL: test_vector_reduce_mul_v2i64:2514; GFX9-SDAG:       ; %bb.0: ; %entry2515; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2516; GFX9-SDAG-NEXT:    v_mul_lo_u32 v4, v1, v22517; GFX9-SDAG-NEXT:    v_mul_lo_u32 v3, v0, v32518; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v0, v2, 02519; GFX9-SDAG-NEXT:    v_add3_u32 v1, v1, v3, v42520; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]2521;2522; GFX9-GISEL-LABEL: test_vector_reduce_mul_v2i64:2523; GFX9-GISEL:       ; %bb.0: ; %entry2524; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2525; GFX9-GISEL-NEXT:    v_mov_b32_e32 v4, v02526; GFX9-GISEL-NEXT:    v_mov_b32_e32 v5, v12527; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[6:7], s[0:1], v4, v3, 02528; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v4, v2, 02529; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[0:1], v5, v2, v[6:7]2530; GFX9-GISEL-NEXT:    v_add_u32_e32 v1, v1, v82531; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]2532;2533; GFX10-SDAG-LABEL: test_vector_reduce_mul_v2i64:2534; GFX10-SDAG:       ; %bb.0: ; %entry2535; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2536; GFX10-SDAG-NEXT:    v_mul_lo_u32 v4, v1, v22537; GFX10-SDAG-NEXT:    v_mul_lo_u32 v3, v0, v32538; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s4, v0, v2, 02539; GFX10-SDAG-NEXT:    v_add3_u32 v1, v1, v3, v42540; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]2541;2542; GFX10-GISEL-LABEL: test_vector_reduce_mul_v2i64:2543; GFX10-GISEL:       ; %bb.0: ; %entry2544; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2545; GFX10-GISEL-NEXT:    v_mov_b32_e32 v4, v02546; GFX10-GISEL-NEXT:    v_mov_b32_e32 v5, v12547; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s4, v4, v2, 02548; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[3:4], s4, v4, v3, v[1:2]2549; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[1:2], s4, v5, v2, v[3:4]2550; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]2551;2552; GFX11-SDAG-LABEL: test_vector_reduce_mul_v2i64:2553; GFX11-SDAG:       ; %bb.0: ; %entry2554; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2555; GFX11-SDAG-NEXT:    v_mov_b32_e32 v4, v02556; GFX11-SDAG-NEXT:    v_mul_lo_u32 v5, v1, v22557; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)2558; GFX11-SDAG-NEXT:    v_mul_lo_u32 v3, v4, v32559; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[0:1], null, v4, v2, 02560; GFX11-SDAG-NEXT:    v_add3_u32 v1, v1, v3, v52561; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]2562;2563; GFX11-GISEL-LABEL: test_vector_reduce_mul_v2i64:2564; GFX11-GISEL:       ; %bb.0: ; %entry2565; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2566; GFX11-GISEL-NEXT:    v_dual_mov_b32 v4, v0 :: v_dual_mov_b32 v5, v22567; GFX11-GISEL-NEXT:    v_mov_b32_e32 v6, v12568; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2569; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[0:1], null, v4, v5, 02570; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[7:8], null, v4, v3, v[1:2]2571; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2572; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[1:2], null, v6, v5, v[7:8]2573; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]2574;2575; GFX12-SDAG-LABEL: test_vector_reduce_mul_v2i64:2576; GFX12-SDAG:       ; %bb.0: ; %entry2577; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x02578; GFX12-SDAG-NEXT:    s_wait_expcnt 0x02579; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x02580; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x02581; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x02582; GFX12-SDAG-NEXT:    v_mul_lo_u32 v4, v1, v22583; GFX12-SDAG-NEXT:    v_mul_lo_u32 v3, v0, v32584; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[0:1], null, v0, v2, 02585; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)2586; GFX12-SDAG-NEXT:    v_add3_u32 v1, v1, v3, v42587; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]2588;2589; GFX12-GISEL-LABEL: test_vector_reduce_mul_v2i64:2590; GFX12-GISEL:       ; %bb.0: ; %entry2591; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x02592; GFX12-GISEL-NEXT:    s_wait_expcnt 0x02593; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x02594; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x02595; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x02596; GFX12-GISEL-NEXT:    v_mul_hi_u32 v4, v0, v22597; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)2598; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[3:4], null, v0, v3, v[4:5]2599; GFX12-GISEL-NEXT:    v_mul_lo_u32 v0, v0, v22600; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[1:2], null, v1, v2, v[3:4]2601; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]2602entry:2603  %res = call i64 @llvm.vector.reduce.mul.v2i64(<2 x i64> %v)2604  ret i64 %res2605}2606 2607define i64 @test_vector_reduce_mul_v3i64(<3 x i64> %v) {2608; GFX7-SDAG-LABEL: test_vector_reduce_mul_v3i64:2609; GFX7-SDAG:       ; %bb.0: ; %entry2610; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2611; GFX7-SDAG-NEXT:    v_mul_lo_u32 v3, v0, v32612; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], v0, v2, 02613; GFX7-SDAG-NEXT:    v_mul_lo_u32 v2, v1, v22614; GFX7-SDAG-NEXT:    v_add_i32_e32 v3, vcc, v7, v32615; GFX7-SDAG-NEXT:    v_mul_lo_u32 v5, v6, v52616; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v6, v4, 02617; GFX7-SDAG-NEXT:    v_add_i32_e32 v2, vcc, v3, v22618; GFX7-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v42619; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v52620; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v22621; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]2622;2623; GFX7-GISEL-LABEL: test_vector_reduce_mul_v3i64:2624; GFX7-GISEL:       ; %bb.0: ; %entry2625; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2626; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[7:8], s[4:5], v0, v2, 02627; GFX7-GISEL-NEXT:    v_mov_b32_e32 v6, v12628; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[9:10], s[4:5], v0, v3, v[8:9]2629; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v7, v4, 02630; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[11:12], s[4:5], v6, v2, v[9:10]2631; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v7, v5, v[1:2]2632; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[1:2], s[4:5], v11, v4, v[8:9]2633; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]2634;2635; GFX8-SDAG-LABEL: test_vector_reduce_mul_v3i64:2636; GFX8-SDAG:       ; %bb.0: ; %entry2637; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2638; GFX8-SDAG-NEXT:    v_mul_lo_u32 v3, v0, v32639; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], v0, v2, 02640; GFX8-SDAG-NEXT:    v_mul_lo_u32 v2, v1, v22641; GFX8-SDAG-NEXT:    v_add_u32_e32 v3, vcc, v7, v32642; GFX8-SDAG-NEXT:    v_mul_lo_u32 v5, v6, v52643; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v6, v4, 02644; GFX8-SDAG-NEXT:    v_add_u32_e32 v2, vcc, v3, v22645; GFX8-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v42646; GFX8-SDAG-NEXT:    v_add_u32_e32 v1, vcc, v1, v52647; GFX8-SDAG-NEXT:    v_add_u32_e32 v1, vcc, v1, v22648; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]2649;2650; GFX8-GISEL-LABEL: test_vector_reduce_mul_v3i64:2651; GFX8-GISEL:       ; %bb.0: ; %entry2652; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2653; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[7:8], s[4:5], v0, v2, 02654; GFX8-GISEL-NEXT:    v_mov_b32_e32 v6, v12655; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[9:10], s[4:5], v0, v3, v[8:9]2656; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v7, v4, 02657; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[11:12], s[4:5], v6, v2, v[9:10]2658; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v7, v5, v[1:2]2659; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[1:2], s[4:5], v11, v4, v[8:9]2660; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]2661;2662; GFX9-SDAG-LABEL: test_vector_reduce_mul_v3i64:2663; GFX9-SDAG:       ; %bb.0: ; %entry2664; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2665; GFX9-SDAG-NEXT:    v_mul_lo_u32 v6, v1, v22666; GFX9-SDAG-NEXT:    v_mul_lo_u32 v3, v0, v32667; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v0, v2, 02668; GFX9-SDAG-NEXT:    v_add3_u32 v1, v1, v3, v62669; GFX9-SDAG-NEXT:    v_mul_lo_u32 v2, v1, v42670; GFX9-SDAG-NEXT:    v_mul_lo_u32 v3, v0, v52671; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v0, v4, 02672; GFX9-SDAG-NEXT:    v_add3_u32 v1, v1, v3, v22673; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]2674;2675; GFX9-GISEL-LABEL: test_vector_reduce_mul_v3i64:2676; GFX9-GISEL:       ; %bb.0: ; %entry2677; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2678; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[0:1], v0, v3, 02679; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[6:7], s[0:1], v0, v2, 02680; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[10:11], s[0:1], v1, v2, v[8:9]2681; GFX9-GISEL-NEXT:    v_add_u32_e32 v8, v7, v102682; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[2:3], s[0:1], v6, v5, 02683; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v6, v4, 02684; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[6:7], s[0:1], v8, v4, v[2:3]2685; GFX9-GISEL-NEXT:    v_add_u32_e32 v1, v1, v62686; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]2687;2688; GFX10-SDAG-LABEL: test_vector_reduce_mul_v3i64:2689; GFX10-SDAG:       ; %bb.0: ; %entry2690; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2691; GFX10-SDAG-NEXT:    v_mul_lo_u32 v6, v1, v22692; GFX10-SDAG-NEXT:    v_mul_lo_u32 v3, v0, v32693; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s4, v0, v2, 02694; GFX10-SDAG-NEXT:    v_add3_u32 v1, v1, v3, v62695; GFX10-SDAG-NEXT:    v_mul_lo_u32 v2, v0, v52696; GFX10-SDAG-NEXT:    v_mul_lo_u32 v3, v1, v42697; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s4, v0, v4, 02698; GFX10-SDAG-NEXT:    v_add3_u32 v1, v1, v2, v32699; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]2700;2701; GFX10-GISEL-LABEL: test_vector_reduce_mul_v3i64:2702; GFX10-GISEL:       ; %bb.0: ; %entry2703; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2704; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[7:8], s4, v0, v2, 02705; GFX10-GISEL-NEXT:    v_mov_b32_e32 v6, v12706; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s4, v0, v3, v[8:9]2707; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s4, v7, v4, 02708; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[2:3], s4, v6, v2, v[8:9]2709; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[5:6], s4, v7, v5, v[1:2]2710; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[1:2], s4, v2, v4, v[5:6]2711; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]2712;2713; GFX11-SDAG-LABEL: test_vector_reduce_mul_v3i64:2714; GFX11-SDAG:       ; %bb.0: ; %entry2715; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2716; GFX11-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v22717; GFX11-SDAG-NEXT:    v_mul_lo_u32 v3, v0, v32718; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[6:7], null, v0, v2, 02719; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)2720; GFX11-SDAG-NEXT:    v_add3_u32 v0, v7, v3, v12721; GFX11-SDAG-NEXT:    v_mul_lo_u32 v2, v6, v52722; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)2723; GFX11-SDAG-NEXT:    v_mul_lo_u32 v3, v0, v42724; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[0:1], null, v6, v4, 02725; GFX11-SDAG-NEXT:    v_add3_u32 v1, v1, v2, v32726; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]2727;2728; GFX11-GISEL-LABEL: test_vector_reduce_mul_v3i64:2729; GFX11-GISEL:       ; %bb.0: ; %entry2730; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2731; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[7:8], null, v0, v2, 02732; GFX11-GISEL-NEXT:    v_mov_b32_e32 v6, v12733; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_3)2734; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[9:10], null, v0, v3, v[8:9]2735; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[0:1], null, v7, v4, 02736; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2737; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[10:11], null, v6, v2, v[9:10]2738; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[8:9], null, v7, v5, v[1:2]2739; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2740; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[1:2], null, v10, v4, v[8:9]2741; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]2742;2743; GFX12-SDAG-LABEL: test_vector_reduce_mul_v3i64:2744; GFX12-SDAG:       ; %bb.0: ; %entry2745; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x02746; GFX12-SDAG-NEXT:    s_wait_expcnt 0x02747; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x02748; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x02749; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x02750; GFX12-SDAG-NEXT:    v_mul_lo_u32 v6, v1, v22751; GFX12-SDAG-NEXT:    v_mul_lo_u32 v3, v0, v32752; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[0:1], null, v0, v2, 02753; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)2754; GFX12-SDAG-NEXT:    v_add3_u32 v1, v1, v3, v62755; GFX12-SDAG-NEXT:    v_mul_lo_u32 v2, v0, v52756; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)2757; GFX12-SDAG-NEXT:    v_mul_lo_u32 v3, v1, v42758; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[0:1], null, v0, v4, 02759; GFX12-SDAG-NEXT:    v_add3_u32 v1, v1, v2, v32760; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]2761;2762; GFX12-GISEL-LABEL: test_vector_reduce_mul_v3i64:2763; GFX12-GISEL:       ; %bb.0: ; %entry2764; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x02765; GFX12-GISEL-NEXT:    s_wait_expcnt 0x02766; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x02767; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x02768; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x02769; GFX12-GISEL-NEXT:    v_mul_hi_u32 v6, v0, v22770; GFX12-GISEL-NEXT:    v_mul_lo_u32 v8, v0, v22771; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2772; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[6:7], null, v0, v3, v[6:7]2773; GFX12-GISEL-NEXT:    v_mul_hi_u32 v0, v8, v42774; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2775; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[1:2], null, v1, v2, v[6:7]2776; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[2:3], null, v8, v5, v[0:1]2777; GFX12-GISEL-NEXT:    v_mul_lo_u32 v0, v8, v42778; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2)2779; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[1:2], null, v1, v4, v[2:3]2780; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]2781entry:2782  %res = call i64 @llvm.vector.reduce.mul.v3i64(<3 x i64> %v)2783  ret i64 %res2784}2785 2786define i64 @test_vector_reduce_mul_v4i64(<4 x i64> %v) {2787; GFX7-SDAG-LABEL: test_vector_reduce_mul_v4i64:2788; GFX7-SDAG:       ; %bb.0: ; %entry2789; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2790; GFX7-SDAG-NEXT:    v_mul_lo_u32 v5, v0, v52791; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v0, v4, 02792; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v2, v72793; GFX7-SDAG-NEXT:    v_add_i32_e32 v5, vcc, v9, v52794; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[9:10], s[4:5], v2, v6, 02795; GFX7-SDAG-NEXT:    v_mul_lo_u32 v2, v1, v42796; GFX7-SDAG-NEXT:    v_mul_lo_u32 v1, v3, v62797; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v10, v02798; GFX7-SDAG-NEXT:    v_add_i32_e32 v2, vcc, v5, v22799; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v12800; GFX7-SDAG-NEXT:    v_mul_lo_u32 v3, v8, v02801; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v8, v9, 02802; GFX7-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v92803; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v32804; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v22805; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]2806;2807; GFX7-GISEL-LABEL: test_vector_reduce_mul_v4i64:2808; GFX7-GISEL:       ; %bb.0: ; %entry2809; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2810; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[9:10], s[4:5], v2, v6, 02811; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[11:12], s[4:5], v0, v4, 02812; GFX7-GISEL-NEXT:    v_mov_b32_e32 v8, v12813; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], v2, v7, v[10:11]2814; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[15:16], s[4:5], v0, v5, v[12:13]2815; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[17:18], s[4:5], v3, v6, v[13:14]2816; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v11, v9, 02817; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[5:6], s[4:5], v8, v4, v[15:16]2818; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[3:4], s[4:5], v11, v17, v[1:2]2819; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[1:2], s[4:5], v5, v9, v[3:4]2820; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]2821;2822; GFX8-SDAG-LABEL: test_vector_reduce_mul_v4i64:2823; GFX8-SDAG:       ; %bb.0: ; %entry2824; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2825; GFX8-SDAG-NEXT:    v_mul_lo_u32 v5, v0, v52826; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v0, v4, 02827; GFX8-SDAG-NEXT:    v_mul_lo_u32 v0, v2, v72828; GFX8-SDAG-NEXT:    v_add_u32_e32 v5, vcc, v9, v52829; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[9:10], s[4:5], v2, v6, 02830; GFX8-SDAG-NEXT:    v_mul_lo_u32 v2, v1, v42831; GFX8-SDAG-NEXT:    v_mul_lo_u32 v1, v3, v62832; GFX8-SDAG-NEXT:    v_add_u32_e32 v0, vcc, v10, v02833; GFX8-SDAG-NEXT:    v_add_u32_e32 v2, vcc, v5, v22834; GFX8-SDAG-NEXT:    v_add_u32_e32 v0, vcc, v0, v12835; GFX8-SDAG-NEXT:    v_mul_lo_u32 v3, v8, v02836; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v8, v9, 02837; GFX8-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v92838; GFX8-SDAG-NEXT:    v_add_u32_e32 v1, vcc, v1, v32839; GFX8-SDAG-NEXT:    v_add_u32_e32 v1, vcc, v1, v22840; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]2841;2842; GFX8-GISEL-LABEL: test_vector_reduce_mul_v4i64:2843; GFX8-GISEL:       ; %bb.0: ; %entry2844; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2845; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[9:10], s[4:5], v2, v6, 02846; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[11:12], s[4:5], v0, v4, 02847; GFX8-GISEL-NEXT:    v_mov_b32_e32 v8, v12848; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], v2, v7, v[10:11]2849; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[15:16], s[4:5], v0, v5, v[12:13]2850; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[17:18], s[4:5], v3, v6, v[13:14]2851; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v11, v9, 02852; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[5:6], s[4:5], v8, v4, v[15:16]2853; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[3:4], s[4:5], v11, v17, v[1:2]2854; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[1:2], s[4:5], v5, v9, v[3:4]2855; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]2856;2857; GFX9-SDAG-LABEL: test_vector_reduce_mul_v4i64:2858; GFX9-SDAG:       ; %bb.0: ; %entry2859; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2860; GFX9-SDAG-NEXT:    v_mul_lo_u32 v8, v3, v62861; GFX9-SDAG-NEXT:    v_mul_lo_u32 v7, v2, v72862; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[2:3], s[0:1], v2, v6, 02863; GFX9-SDAG-NEXT:    v_mul_lo_u32 v6, v1, v42864; GFX9-SDAG-NEXT:    v_mul_lo_u32 v5, v0, v52865; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v0, v4, 02866; GFX9-SDAG-NEXT:    v_add3_u32 v3, v3, v7, v82867; GFX9-SDAG-NEXT:    v_add3_u32 v1, v1, v5, v62868; GFX9-SDAG-NEXT:    v_mul_lo_u32 v4, v1, v22869; GFX9-SDAG-NEXT:    v_mul_lo_u32 v3, v0, v32870; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v0, v2, 02871; GFX9-SDAG-NEXT:    v_add3_u32 v1, v1, v3, v42872; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]2873;2874; GFX9-GISEL-LABEL: test_vector_reduce_mul_v4i64:2875; GFX9-GISEL:       ; %bb.0: ; %entry2876; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2877; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[10:11], s[0:1], v0, v5, 02878; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[0:1], v0, v4, 02879; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[12:13], s[0:1], v1, v4, v[10:11]2880; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v2, v7, 02881; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[4:5], s[0:1], v2, v6, 02882; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[10:11], s[0:1], v3, v6, v[0:1]2883; GFX9-GISEL-NEXT:    v_add_u32_e32 v5, v5, v102884; GFX9-GISEL-NEXT:    v_add_u32_e32 v9, v9, v122885; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[2:3], s[0:1], v8, v5, 02886; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v8, v4, 02887; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[6:7], s[0:1], v9, v4, v[2:3]2888; GFX9-GISEL-NEXT:    v_add_u32_e32 v1, v1, v62889; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]2890;2891; GFX10-SDAG-LABEL: test_vector_reduce_mul_v4i64:2892; GFX10-SDAG:       ; %bb.0: ; %entry2893; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2894; GFX10-SDAG-NEXT:    v_mul_lo_u32 v8, v3, v62895; GFX10-SDAG-NEXT:    v_mul_lo_u32 v7, v2, v72896; GFX10-SDAG-NEXT:    v_mul_lo_u32 v9, v1, v42897; GFX10-SDAG-NEXT:    v_mul_lo_u32 v5, v0, v52898; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s4, v0, v4, 02899; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[2:3], s4, v2, v6, 02900; GFX10-SDAG-NEXT:    v_add3_u32 v1, v1, v5, v92901; GFX10-SDAG-NEXT:    v_add3_u32 v3, v3, v7, v82902; GFX10-SDAG-NEXT:    v_mul_lo_u32 v4, v1, v22903; GFX10-SDAG-NEXT:    v_mul_lo_u32 v3, v0, v32904; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s4, v0, v2, 02905; GFX10-SDAG-NEXT:    v_add3_u32 v1, v1, v3, v42906; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]2907;2908; GFX10-GISEL-LABEL: test_vector_reduce_mul_v4i64:2909; GFX10-GISEL:       ; %bb.0: ; %entry2910; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2911; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[9:10], s4, v2, v6, 02912; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[11:12], s4, v0, v4, 02913; GFX10-GISEL-NEXT:    v_mov_b32_e32 v8, v12914; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[1:2], s4, v2, v7, v[10:11]2915; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[12:13], s4, v0, v5, v[12:13]2916; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[2:3], s4, v3, v6, v[1:2]2917; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s4, v11, v9, 02918; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[3:4], s4, v8, v4, v[12:13]2919; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[1:2], s4, v11, v2, v[1:2]2920; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[1:2], s4, v3, v9, v[1:2]2921; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]2922;2923; GFX11-SDAG-LABEL: test_vector_reduce_mul_v4i64:2924; GFX11-SDAG:       ; %bb.0: ; %entry2925; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2926; GFX11-SDAG-NEXT:    v_mul_lo_u32 v9, v3, v62927; GFX11-SDAG-NEXT:    v_mul_lo_u32 v10, v2, v72928; GFX11-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v42929; GFX11-SDAG-NEXT:    v_mul_lo_u32 v5, v0, v52930; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[7:8], null, v0, v4, 02931; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[3:4], null, v2, v6, 02932; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2933; GFX11-SDAG-NEXT:    v_add3_u32 v0, v8, v5, v12934; GFX11-SDAG-NEXT:    v_add3_u32 v1, v4, v10, v92935; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2936; GFX11-SDAG-NEXT:    v_mul_lo_u32 v2, v0, v32937; GFX11-SDAG-NEXT:    v_mul_lo_u32 v4, v7, v12938; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[0:1], null, v7, v3, 02939; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)2940; GFX11-SDAG-NEXT:    v_add3_u32 v1, v1, v4, v22941; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]2942;2943; GFX11-GISEL-LABEL: test_vector_reduce_mul_v4i64:2944; GFX11-GISEL:       ; %bb.0: ; %entry2945; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2946; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[9:10], null, v2, v6, 02947; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[11:12], null, v0, v4, 02948; GFX11-GISEL-NEXT:    v_mov_b32_e32 v8, v12949; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2950; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[13:14], null, v2, v7, v[10:11]2951; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[14:15], null, v0, v5, v[12:13]2952; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[0:1], null, v11, v9, 02953; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2954; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[15:16], null, v3, v6, v[13:14]2955; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[5:6], null, v8, v4, v[14:15]2956; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)2957; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[3:4], null, v11, v15, v[1:2]2958; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[1:2], null, v5, v9, v[3:4]2959; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]2960;2961; GFX12-SDAG-LABEL: test_vector_reduce_mul_v4i64:2962; GFX12-SDAG:       ; %bb.0: ; %entry2963; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x02964; GFX12-SDAG-NEXT:    s_wait_expcnt 0x02965; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x02966; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x02967; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x02968; GFX12-SDAG-NEXT:    v_mul_lo_u32 v8, v3, v62969; GFX12-SDAG-NEXT:    v_mul_lo_u32 v7, v2, v72970; GFX12-SDAG-NEXT:    v_mul_lo_u32 v9, v1, v42971; GFX12-SDAG-NEXT:    v_mul_lo_u32 v5, v0, v52972; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[0:1], null, v0, v4, 02973; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[2:3], null, v2, v6, 02974; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2975; GFX12-SDAG-NEXT:    v_add3_u32 v1, v1, v5, v92976; GFX12-SDAG-NEXT:    v_add3_u32 v3, v3, v7, v82977; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2978; GFX12-SDAG-NEXT:    v_mul_lo_u32 v4, v1, v22979; GFX12-SDAG-NEXT:    v_mul_lo_u32 v3, v0, v32980; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[0:1], null, v0, v2, 02981; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)2982; GFX12-SDAG-NEXT:    v_add3_u32 v1, v1, v3, v42983; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]2984;2985; GFX12-GISEL-LABEL: test_vector_reduce_mul_v4i64:2986; GFX12-GISEL:       ; %bb.0: ; %entry2987; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x02988; GFX12-GISEL-NEXT:    s_wait_expcnt 0x02989; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x02990; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x02991; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x02992; GFX12-GISEL-NEXT:    v_mul_hi_u32 v8, v2, v62993; GFX12-GISEL-NEXT:    v_mul_hi_u32 v9, v0, v42994; GFX12-GISEL-NEXT:    v_mul_lo_u32 v10, v0, v42995; GFX12-GISEL-NEXT:    v_mul_lo_u32 v11, v2, v62996; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)2997; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[7:8], null, v2, v7, v[8:9]2998; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[8:9], null, v0, v5, v[9:10]2999; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)3000; GFX12-GISEL-NEXT:    v_mul_hi_u32 v0, v10, v113001; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[2:3], null, v3, v6, v[7:8]3002; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)3003; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[3:4], null, v1, v4, v[8:9]3004; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[1:2], null, v10, v2, v[0:1]3005; GFX12-GISEL-NEXT:    v_mul_lo_u32 v0, v10, v113006; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2)3007; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[1:2], null, v3, v11, v[1:2]3008; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]3009entry:3010  %res = call i64 @llvm.vector.reduce.mul.v4i64(<4 x i64> %v)3011  ret i64 %res3012}3013 3014define i64 @test_vector_reduce_mul_v8i64(<8 x i64> %v) {3015; GFX7-SDAG-LABEL: test_vector_reduce_mul_v8i64:3016; GFX7-SDAG:       ; %bb.0: ; %entry3017; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3018; GFX7-SDAG-NEXT:    v_mul_lo_u32 v11, v2, v113019; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[16:17], s[4:5], v2, v10, 03020; GFX7-SDAG-NEXT:    v_mul_lo_u32 v10, v3, v103021; GFX7-SDAG-NEXT:    v_mul_lo_u32 v15, v6, v153022; GFX7-SDAG-NEXT:    v_add_i32_e32 v11, vcc, v17, v113023; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v6, v14, 03024; GFX7-SDAG-NEXT:    v_add_i32_e32 v10, vcc, v11, v103025; GFX7-SDAG-NEXT:    v_mul_lo_u32 v11, v7, v143026; GFX7-SDAG-NEXT:    v_add_i32_e32 v3, vcc, v3, v153027; GFX7-SDAG-NEXT:    v_mul_lo_u32 v9, v0, v93028; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], v0, v8, 03029; GFX7-SDAG-NEXT:    v_add_i32_e32 v11, vcc, v3, v113030; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v4, v133031; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[3:4], s[4:5], v4, v12, 03032; GFX7-SDAG-NEXT:    v_mul_lo_u32 v8, v1, v83033; GFX7-SDAG-NEXT:    v_mul_lo_u32 v1, v5, v123034; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v4, v03035; GFX7-SDAG-NEXT:    v_add_i32_e32 v7, vcc, v7, v93036; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v13037; GFX7-SDAG-NEXT:    v_mul_lo_u32 v4, v6, v03038; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v6, v3, 03039; GFX7-SDAG-NEXT:    v_add_i32_e32 v6, vcc, v7, v83040; GFX7-SDAG-NEXT:    v_add_i32_e32 v7, vcc, v1, v43041; GFX7-SDAG-NEXT:    v_mul_lo_u32 v1, v16, v113042; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v16, v2, 03043; GFX7-SDAG-NEXT:    v_mul_lo_u32 v2, v10, v23044; GFX7-SDAG-NEXT:    v_mul_lo_u32 v3, v6, v33045; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v5, v13046; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v23047; GFX7-SDAG-NEXT:    v_mul_lo_u32 v2, v0, v13048; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v0, v4, 03049; GFX7-SDAG-NEXT:    v_add_i32_e32 v3, vcc, v7, v33050; GFX7-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v43051; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v23052; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v33053; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]3054;3055; GFX7-GISEL-LABEL: test_vector_reduce_mul_v8i64:3056; GFX7-GISEL:       ; %bb.0: ; %entry3057; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3058; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[16:17], s[4:5], v4, v12, 03059; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[18:19], s[4:5], v4, v13, v[17:18]3060; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[20:21], s[4:5], v5, v12, v[18:19]3061; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v0, v8, 03062; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[12:13], s[4:5], v4, v16, 03063; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[17:18], s[4:5], v0, v9, v[5:6]3064; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[21:22], s[4:5], v4, v20, v[13:14]3065; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v6, v14, 03066; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[19:20], s[4:5], v6, v15, v[5:6]3067; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[5:6], s[4:5], v2, v10, 03068; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[23:24], s[4:5], v7, v14, v[19:20]3069; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], v2, v11, v[6:7]3070; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], v5, v4, 03071; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[19:20], s[4:5], v5, v23, v[7:8]3072; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[23:24], s[4:5], v3, v10, v[13:14]3073; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v1, v8, v[17:18]3074; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[7:8], s[4:5], v23, v4, v[19:20]3075; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v12, v6, 03076; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[3:4], s[4:5], v2, v16, v[21:22]3077; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v12, v7, v[1:2]3078; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[1:2], s[4:5], v3, v6, v[4:5]3079; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]3080;3081; GFX8-SDAG-LABEL: test_vector_reduce_mul_v8i64:3082; GFX8-SDAG:       ; %bb.0: ; %entry3083; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3084; GFX8-SDAG-NEXT:    v_mul_lo_u32 v11, v2, v113085; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[16:17], s[4:5], v2, v10, 03086; GFX8-SDAG-NEXT:    v_mul_lo_u32 v10, v3, v103087; GFX8-SDAG-NEXT:    v_mul_lo_u32 v15, v6, v153088; GFX8-SDAG-NEXT:    v_add_u32_e32 v11, vcc, v17, v113089; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v6, v14, 03090; GFX8-SDAG-NEXT:    v_add_u32_e32 v10, vcc, v11, v103091; GFX8-SDAG-NEXT:    v_mul_lo_u32 v11, v7, v143092; GFX8-SDAG-NEXT:    v_add_u32_e32 v3, vcc, v3, v153093; GFX8-SDAG-NEXT:    v_mul_lo_u32 v9, v0, v93094; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], v0, v8, 03095; GFX8-SDAG-NEXT:    v_add_u32_e32 v11, vcc, v3, v113096; GFX8-SDAG-NEXT:    v_mul_lo_u32 v0, v4, v133097; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[3:4], s[4:5], v4, v12, 03098; GFX8-SDAG-NEXT:    v_mul_lo_u32 v8, v1, v83099; GFX8-SDAG-NEXT:    v_mul_lo_u32 v1, v5, v123100; GFX8-SDAG-NEXT:    v_add_u32_e32 v0, vcc, v4, v03101; GFX8-SDAG-NEXT:    v_add_u32_e32 v7, vcc, v7, v93102; GFX8-SDAG-NEXT:    v_add_u32_e32 v0, vcc, v0, v13103; GFX8-SDAG-NEXT:    v_mul_lo_u32 v4, v6, v03104; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v6, v3, 03105; GFX8-SDAG-NEXT:    v_add_u32_e32 v6, vcc, v7, v83106; GFX8-SDAG-NEXT:    v_add_u32_e32 v7, vcc, v1, v43107; GFX8-SDAG-NEXT:    v_mul_lo_u32 v1, v16, v113108; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v16, v2, 03109; GFX8-SDAG-NEXT:    v_mul_lo_u32 v2, v10, v23110; GFX8-SDAG-NEXT:    v_mul_lo_u32 v3, v6, v33111; GFX8-SDAG-NEXT:    v_add_u32_e32 v1, vcc, v5, v13112; GFX8-SDAG-NEXT:    v_add_u32_e32 v1, vcc, v1, v23113; GFX8-SDAG-NEXT:    v_mul_lo_u32 v2, v0, v13114; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v0, v4, 03115; GFX8-SDAG-NEXT:    v_add_u32_e32 v3, vcc, v7, v33116; GFX8-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v43117; GFX8-SDAG-NEXT:    v_add_u32_e32 v1, vcc, v1, v23118; GFX8-SDAG-NEXT:    v_add_u32_e32 v1, vcc, v1, v33119; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]3120;3121; GFX8-GISEL-LABEL: test_vector_reduce_mul_v8i64:3122; GFX8-GISEL:       ; %bb.0: ; %entry3123; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3124; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[16:17], s[4:5], v4, v12, 03125; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[18:19], s[4:5], v4, v13, v[17:18]3126; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[20:21], s[4:5], v5, v12, v[18:19]3127; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v0, v8, 03128; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[12:13], s[4:5], v4, v16, 03129; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[17:18], s[4:5], v0, v9, v[5:6]3130; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[21:22], s[4:5], v4, v20, v[13:14]3131; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v6, v14, 03132; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[19:20], s[4:5], v6, v15, v[5:6]3133; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[5:6], s[4:5], v2, v10, 03134; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[23:24], s[4:5], v7, v14, v[19:20]3135; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], v2, v11, v[6:7]3136; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], v5, v4, 03137; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[19:20], s[4:5], v5, v23, v[7:8]3138; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[23:24], s[4:5], v3, v10, v[13:14]3139; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v1, v8, v[17:18]3140; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[7:8], s[4:5], v23, v4, v[19:20]3141; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v12, v6, 03142; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[3:4], s[4:5], v2, v16, v[21:22]3143; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v12, v7, v[1:2]3144; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[1:2], s[4:5], v3, v6, v[4:5]3145; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]3146;3147; GFX9-SDAG-LABEL: test_vector_reduce_mul_v8i64:3148; GFX9-SDAG:       ; %bb.0: ; %entry3149; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3150; GFX9-SDAG-NEXT:    v_mul_lo_u32 v16, v5, v123151; GFX9-SDAG-NEXT:    v_mul_lo_u32 v13, v4, v133152; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[4:5], s[0:1], v4, v12, 03153; GFX9-SDAG-NEXT:    v_mul_lo_u32 v12, v1, v83154; GFX9-SDAG-NEXT:    v_mul_lo_u32 v9, v0, v93155; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v0, v8, 03156; GFX9-SDAG-NEXT:    v_add3_u32 v1, v1, v9, v123157; GFX9-SDAG-NEXT:    v_mul_lo_u32 v8, v7, v143158; GFX9-SDAG-NEXT:    v_mul_lo_u32 v9, v6, v153159; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[6:7], s[0:1], v6, v14, 03160; GFX9-SDAG-NEXT:    v_add3_u32 v7, v7, v9, v83161; GFX9-SDAG-NEXT:    v_mul_lo_u32 v8, v3, v103162; GFX9-SDAG-NEXT:    v_mul_lo_u32 v9, v2, v113163; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[2:3], s[0:1], v2, v10, 03164; GFX9-SDAG-NEXT:    v_add3_u32 v5, v5, v13, v163165; GFX9-SDAG-NEXT:    v_add3_u32 v3, v3, v9, v83166; GFX9-SDAG-NEXT:    v_mul_lo_u32 v8, v3, v63167; GFX9-SDAG-NEXT:    v_mul_lo_u32 v7, v2, v73168; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[2:3], s[0:1], v2, v6, 03169; GFX9-SDAG-NEXT:    v_mul_lo_u32 v6, v1, v43170; GFX9-SDAG-NEXT:    v_mul_lo_u32 v5, v0, v53171; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v0, v4, 03172; GFX9-SDAG-NEXT:    v_add3_u32 v3, v3, v7, v83173; GFX9-SDAG-NEXT:    v_add3_u32 v1, v1, v5, v63174; GFX9-SDAG-NEXT:    v_mul_lo_u32 v4, v1, v23175; GFX9-SDAG-NEXT:    v_mul_lo_u32 v3, v0, v33176; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v0, v2, 03177; GFX9-SDAG-NEXT:    v_add3_u32 v1, v1, v3, v43178; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]3179;3180; GFX9-GISEL-LABEL: test_vector_reduce_mul_v8i64:3181; GFX9-GISEL:       ; %bb.0: ; %entry3182; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3183; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[18:19], s[0:1], v0, v9, 03184; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[16:17], s[0:1], v0, v8, 03185; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[20:21], s[0:1], v1, v8, v[18:19]3186; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[0:1], v2, v11, 03187; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[18:19], s[0:1], v3, v10, v[8:9]3188; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[0:1], v4, v13, 03189; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v2, v10, 03190; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[2:3], s[0:1], v4, v12, 03191; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[10:11], s[0:1], v5, v12, v[8:9]3192; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[0:1], v6, v15, 03193; GFX9-GISEL-NEXT:    v_add_u32_e32 v18, v1, v183194; GFX9-GISEL-NEXT:    v_add_u32_e32 v1, v3, v103195; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[4:5], s[0:1], v6, v14, 03196; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[10:11], s[0:1], v7, v14, v[8:9]3197; GFX9-GISEL-NEXT:    v_add_u32_e32 v17, v17, v203198; GFX9-GISEL-NEXT:    v_add_u32_e32 v5, v5, v103199; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[0:1], v16, v1, 03200; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[10:11], s[0:1], v17, v2, v[8:9]3201; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[0:1], v0, v5, 03202; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[6:7], s[0:1], v16, v2, 03203; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[2:3], s[0:1], v0, v4, 03204; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v18, v4, v[8:9]3205; GFX9-GISEL-NEXT:    v_add_u32_e32 v3, v3, v03206; GFX9-GISEL-NEXT:    v_add_u32_e32 v10, v7, v103207; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[4:5], s[0:1], v6, v3, 03208; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v6, v2, 03209; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[6:7], s[0:1], v10, v2, v[4:5]3210; GFX9-GISEL-NEXT:    v_add_u32_e32 v1, v1, v63211; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]3212;3213; GFX10-SDAG-LABEL: test_vector_reduce_mul_v8i64:3214; GFX10-SDAG:       ; %bb.0: ; %entry3215; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3216; GFX10-SDAG-NEXT:    v_mul_lo_u32 v16, v5, v123217; GFX10-SDAG-NEXT:    v_mul_lo_u32 v13, v4, v133218; GFX10-SDAG-NEXT:    v_mul_lo_u32 v17, v1, v83219; GFX10-SDAG-NEXT:    v_mul_lo_u32 v9, v0, v93220; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s4, v0, v8, 03221; GFX10-SDAG-NEXT:    v_mul_lo_u32 v18, v7, v143222; GFX10-SDAG-NEXT:    v_mul_lo_u32 v15, v6, v153223; GFX10-SDAG-NEXT:    v_mul_lo_u32 v19, v3, v103224; GFX10-SDAG-NEXT:    v_mul_lo_u32 v11, v2, v113225; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[2:3], s4, v2, v10, 03226; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[5:6], s4, v6, v14, 03227; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[7:8], s4, v4, v12, 03228; GFX10-SDAG-NEXT:    v_add3_u32 v1, v1, v9, v173229; GFX10-SDAG-NEXT:    v_add3_u32 v3, v3, v11, v193230; GFX10-SDAG-NEXT:    v_add3_u32 v4, v6, v15, v183231; GFX10-SDAG-NEXT:    v_add3_u32 v6, v8, v13, v163232; GFX10-SDAG-NEXT:    v_mul_lo_u32 v8, v3, v53233; GFX10-SDAG-NEXT:    v_mul_lo_u32 v9, v1, v73234; GFX10-SDAG-NEXT:    v_mul_lo_u32 v4, v2, v43235; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[2:3], s4, v2, v5, 03236; GFX10-SDAG-NEXT:    v_mul_lo_u32 v6, v0, v63237; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s4, v0, v7, 03238; GFX10-SDAG-NEXT:    v_add3_u32 v3, v3, v4, v83239; GFX10-SDAG-NEXT:    v_add3_u32 v1, v1, v6, v93240; GFX10-SDAG-NEXT:    v_mul_lo_u32 v3, v0, v33241; GFX10-SDAG-NEXT:    v_mul_lo_u32 v4, v1, v23242; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s4, v0, v2, 03243; GFX10-SDAG-NEXT:    v_add3_u32 v1, v1, v3, v43244; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]3245;3246; GFX10-GISEL-LABEL: test_vector_reduce_mul_v8i64:3247; GFX10-GISEL:       ; %bb.0: ; %entry3248; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3249; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[16:17], s4, v6, v14, 03250; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[18:19], s4, v0, v8, 03251; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[20:21], s4, v2, v10, 03252; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[22:23], s4, v4, v12, 03253; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[24:25], s4, v6, v15, v[17:18]3254; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[25:26], s4, v0, v9, v[19:20]3255; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[26:27], s4, v2, v11, v[21:22]3256; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[27:28], s4, v4, v13, v[23:24]3257; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[13:14], s4, v7, v14, v[24:25]3258; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[6:7], s4, v20, v16, 03259; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[9:10], s4, v3, v10, v[26:27]3260; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[4:5], s4, v5, v12, v[27:28]3261; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[2:3], s4, v18, v22, 03262; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[10:11], s4, v20, v13, v[7:8]3263; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[7:8], s4, v1, v8, v[25:26]3264; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[3:4], s4, v18, v4, v[3:4]3265; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[4:5], s4, v9, v16, v[10:11]3266; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s4, v2, v6, 03267; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[7:8], s4, v7, v22, v[3:4]3268; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[1:2], s4, v2, v4, v[1:2]3269; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[1:2], s4, v7, v6, v[1:2]3270; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]3271;3272; GFX11-SDAG-LABEL: test_vector_reduce_mul_v8i64:3273; GFX11-SDAG:       ; %bb.0: ; %entry3274; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3275; GFX11-SDAG-NEXT:    v_mul_lo_u32 v18, v5, v123276; GFX11-SDAG-NEXT:    v_mul_lo_u32 v13, v4, v133277; GFX11-SDAG-NEXT:    v_mul_lo_u32 v19, v1, v83278; GFX11-SDAG-NEXT:    v_mul_lo_u32 v9, v0, v93279; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[16:17], null, v0, v8, 03280; GFX11-SDAG-NEXT:    v_mul_lo_u32 v7, v7, v143281; GFX11-SDAG-NEXT:    v_mul_lo_u32 v8, v6, v153282; GFX11-SDAG-NEXT:    v_mul_lo_u32 v15, v3, v103283; GFX11-SDAG-NEXT:    v_mul_lo_u32 v11, v2, v113284; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[0:1], null, v2, v10, 03285; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[2:3], null, v6, v14, 03286; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[5:6], null, v4, v12, 03287; GFX11-SDAG-NEXT:    v_add3_u32 v4, v17, v9, v193288; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)3289; GFX11-SDAG-NEXT:    v_add3_u32 v1, v1, v11, v153290; GFX11-SDAG-NEXT:    v_add3_u32 v3, v3, v8, v73291; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)3292; GFX11-SDAG-NEXT:    v_add3_u32 v6, v6, v13, v183293; GFX11-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v23294; GFX11-SDAG-NEXT:    v_mul_lo_u32 v8, v4, v53295; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_3) | instid1(VALU_DEP_2)3296; GFX11-SDAG-NEXT:    v_mul_lo_u32 v7, v0, v33297; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[3:4], null, v16, v5, 03298; GFX11-SDAG-NEXT:    v_mul_lo_u32 v9, v16, v63299; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[5:6], null, v0, v2, 03300; GFX11-SDAG-NEXT:    v_add3_u32 v0, v4, v9, v83301; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)3302; GFX11-SDAG-NEXT:    v_add3_u32 v1, v6, v7, v13303; GFX11-SDAG-NEXT:    v_mul_lo_u32 v2, v0, v53304; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)3305; GFX11-SDAG-NEXT:    v_mul_lo_u32 v4, v3, v13306; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[0:1], null, v3, v5, 03307; GFX11-SDAG-NEXT:    v_add3_u32 v1, v1, v4, v23308; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]3309;3310; GFX11-GISEL-LABEL: test_vector_reduce_mul_v8i64:3311; GFX11-GISEL:       ; %bb.0: ; %entry3312; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3313; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[16:17], null, v6, v14, 03314; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[18:19], null, v0, v8, 03315; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[20:21], null, v2, v10, 03316; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[22:23], null, v4, v12, 03317; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)3318; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[24:25], null, v6, v15, v[17:18]3319; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[25:26], null, v0, v9, v[19:20]3320; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)3321; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[26:27], null, v2, v11, v[21:22]3322; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[27:28], null, v4, v13, v[23:24]3323; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)3324; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[28:29], null, v7, v14, v[24:25]3325; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[6:7], null, v20, v16, 03326; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[13:14], null, v3, v10, v[26:27]3327; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)3328; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[9:10], null, v5, v12, v[27:28]3329; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[2:3], null, v18, v22, 03330; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[4:5], null, v20, v28, v[7:8]3331; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[10:11], null, v1, v8, v[25:26]3332; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)3333; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[0:1], null, v2, v6, 03334; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[7:8], null, v18, v9, v[3:4]3335; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)3336; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[8:9], null, v13, v16, v[4:5]3337; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[3:4], null, v10, v22, v[7:8]3338; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)3339; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[4:5], null, v2, v8, v[1:2]3340; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[1:2], null, v3, v6, v[4:5]3341; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]3342;3343; GFX12-SDAG-LABEL: test_vector_reduce_mul_v8i64:3344; GFX12-SDAG:       ; %bb.0: ; %entry3345; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x03346; GFX12-SDAG-NEXT:    s_wait_expcnt 0x03347; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x03348; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x03349; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x03350; GFX12-SDAG-NEXT:    v_mul_lo_u32 v16, v5, v123351; GFX12-SDAG-NEXT:    v_mul_lo_u32 v13, v4, v133352; GFX12-SDAG-NEXT:    v_mul_lo_u32 v17, v1, v83353; GFX12-SDAG-NEXT:    v_mul_lo_u32 v9, v0, v93354; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[0:1], null, v0, v8, 03355; GFX12-SDAG-NEXT:    v_mul_lo_u32 v18, v7, v143356; GFX12-SDAG-NEXT:    v_mul_lo_u32 v15, v6, v153357; GFX12-SDAG-NEXT:    v_mul_lo_u32 v19, v3, v103358; GFX12-SDAG-NEXT:    v_mul_lo_u32 v11, v2, v113359; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[2:3], null, v2, v10, 03360; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[5:6], null, v6, v14, 03361; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[7:8], null, v4, v12, 03362; GFX12-SDAG-NEXT:    v_add3_u32 v1, v1, v9, v173363; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)3364; GFX12-SDAG-NEXT:    v_add3_u32 v3, v3, v11, v193365; GFX12-SDAG-NEXT:    v_add3_u32 v4, v6, v15, v183366; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)3367; GFX12-SDAG-NEXT:    v_add3_u32 v6, v8, v13, v163368; GFX12-SDAG-NEXT:    v_mul_lo_u32 v8, v3, v53369; GFX12-SDAG-NEXT:    v_mul_lo_u32 v9, v1, v73370; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_3) | instid1(VALU_DEP_3)3371; GFX12-SDAG-NEXT:    v_mul_lo_u32 v4, v2, v43372; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[2:3], null, v2, v5, 03373; GFX12-SDAG-NEXT:    v_mul_lo_u32 v6, v0, v63374; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[0:1], null, v0, v7, 03375; GFX12-SDAG-NEXT:    v_add3_u32 v3, v3, v4, v83376; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)3377; GFX12-SDAG-NEXT:    v_add3_u32 v1, v1, v6, v93378; GFX12-SDAG-NEXT:    v_mul_lo_u32 v3, v0, v33379; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)3380; GFX12-SDAG-NEXT:    v_mul_lo_u32 v4, v1, v23381; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[0:1], null, v0, v2, 03382; GFX12-SDAG-NEXT:    v_add3_u32 v1, v1, v3, v43383; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]3384;3385; GFX12-GISEL-LABEL: test_vector_reduce_mul_v8i64:3386; GFX12-GISEL:       ; %bb.0: ; %entry3387; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x03388; GFX12-GISEL-NEXT:    s_wait_expcnt 0x03389; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x03390; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x03391; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x03392; GFX12-GISEL-NEXT:    v_mul_hi_u32 v16, v0, v83393; GFX12-GISEL-NEXT:    v_mul_hi_u32 v17, v6, v143394; GFX12-GISEL-NEXT:    v_mul_lo_u32 v21, v0, v83395; GFX12-GISEL-NEXT:    v_mul_lo_u32 v22, v2, v103396; GFX12-GISEL-NEXT:    v_mul_lo_u32 v23, v6, v143397; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_2) | instid1(VALU_DEP_3)3398; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[18:19], null, v0, v9, v[16:17]3399; GFX12-GISEL-NEXT:    v_mul_hi_u32 v9, v2, v103400; GFX12-GISEL-NEXT:    v_mul_hi_u32 v0, v4, v123401; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[15:16], null, v6, v15, v[17:18]3402; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)3403; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[16:17], null, v2, v11, v[9:10]3404; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[19:20], null, v4, v13, v[0:1]3405; GFX12-GISEL-NEXT:    v_mul_lo_u32 v9, v4, v123406; GFX12-GISEL-NEXT:    v_mul_hi_u32 v0, v22, v233407; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4)3408; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[6:7], null, v7, v14, v[15:16]3409; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[2:3], null, v3, v10, v[16:17]3410; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[3:4], null, v5, v12, v[19:20]3411; GFX12-GISEL-NEXT:    v_mul_hi_u32 v4, v21, v93412; GFX12-GISEL-NEXT:    v_mul_lo_u32 v7, v21, v93413; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[5:6], null, v22, v6, v[0:1]3414; GFX12-GISEL-NEXT:    v_mul_lo_u32 v6, v22, v233415; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[0:1], null, v1, v8, v[18:19]3416; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)3417; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[3:4], null, v21, v3, v[4:5]3418; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[1:2], null, v2, v23, v[5:6]3419; GFX12-GISEL-NEXT:    v_mul_hi_u32 v2, v7, v63420; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)3421; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[3:4], null, v0, v9, v[3:4]3422; GFX12-GISEL-NEXT:    v_mul_lo_u32 v0, v7, v63423; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[1:2], null, v7, v1, v[2:3]3424; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)3425; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[1:2], null, v3, v6, v[1:2]3426; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]3427entry:3428  %res = call i64 @llvm.vector.reduce.mul.v8i64(<8 x i64> %v)3429  ret i64 %res3430}3431 3432define i64 @test_vector_reduce_mul_v16i64(<16 x i64> %v) {3433; GFX7-SDAG-LABEL: test_vector_reduce_mul_v16i64:3434; GFX7-SDAG:       ; %bb.0: ; %entry3435; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3436; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s323437; GFX7-SDAG-NEXT:    v_mul_lo_u32 v19, v2, v193438; GFX7-SDAG-NEXT:    v_mul_lo_u32 v32, v3, v183439; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v2, v18, 03440; GFX7-SDAG-NEXT:    v_mul_lo_u32 v27, v10, v273441; GFX7-SDAG-NEXT:    v_mul_lo_u32 v33, v11, v263442; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[10:11], s[4:5], v10, v26, 03443; GFX7-SDAG-NEXT:    v_add_i32_e32 v3, vcc, v3, v193444; GFX7-SDAG-NEXT:    v_mul_lo_u32 v15, v15, v303445; GFX7-SDAG-NEXT:    v_add_i32_e32 v32, vcc, v3, v323446; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[18:19], s[4:5], v14, v30, 03447; GFX7-SDAG-NEXT:    v_mul_lo_u32 v30, v4, v213448; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[3:4], s[4:5], v4, v20, 03449; GFX7-SDAG-NEXT:    v_mul_lo_u32 v5, v5, v203450; GFX7-SDAG-NEXT:    v_mul_lo_u32 v29, v12, v293451; GFX7-SDAG-NEXT:    v_mul_lo_u32 v34, v13, v283452; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[12:13], s[4:5], v12, v28, 03453; GFX7-SDAG-NEXT:    v_add_i32_e32 v11, vcc, v11, v273454; GFX7-SDAG-NEXT:    v_add_i32_e32 v11, vcc, v11, v333455; GFX7-SDAG-NEXT:    v_add_i32_e32 v4, vcc, v4, v303456; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[20:21], s[4:5], v2, v10, 03457; GFX7-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v113458; GFX7-SDAG-NEXT:    v_add_i32_e32 v11, vcc, v13, v293459; GFX7-SDAG-NEXT:    v_add_i32_e32 v13, vcc, v4, v53460; GFX7-SDAG-NEXT:    v_mul_lo_u32 v23, v6, v233461; GFX7-SDAG-NEXT:    v_mul_lo_u32 v26, v7, v223462; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], v6, v22, 03463; GFX7-SDAG-NEXT:    v_mul_lo_u32 v17, v0, v173464; GFX7-SDAG-NEXT:    v_mul_lo_u32 v10, v32, v103465; GFX7-SDAG-NEXT:    v_add_i32_e32 v7, vcc, v7, v233466; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[22:23], s[4:5], v6, v18, 03467; GFX7-SDAG-NEXT:    v_add_i32_e32 v7, vcc, v7, v263468; GFX7-SDAG-NEXT:    v_add_i32_e32 v2, vcc, v21, v23469; GFX7-SDAG-NEXT:    v_mul_lo_u32 v7, v7, v183470; GFX7-SDAG-NEXT:    v_add_i32_e32 v11, vcc, v11, v343471; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0)3472; GFX7-SDAG-NEXT:    v_mul_lo_u32 v4, v14, v313473; GFX7-SDAG-NEXT:    v_mul_lo_u32 v14, v1, v163474; GFX7-SDAG-NEXT:    v_add_i32_e32 v4, vcc, v19, v43475; GFX7-SDAG-NEXT:    v_add_i32_e32 v4, vcc, v4, v153476; GFX7-SDAG-NEXT:    v_mul_lo_u32 v6, v6, v43477; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v0, v16, 03478; GFX7-SDAG-NEXT:    v_mul_lo_u32 v15, v8, v253479; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v8, v24, 03480; GFX7-SDAG-NEXT:    v_mul_lo_u32 v8, v9, v243481; GFX7-SDAG-NEXT:    v_add_i32_e32 v5, vcc, v5, v173482; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v153483; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v83484; GFX7-SDAG-NEXT:    v_add_i32_e32 v8, vcc, v2, v103485; GFX7-SDAG-NEXT:    v_mul_lo_u32 v9, v4, v13486; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[1:2], s[4:5], v4, v0, 03487; GFX7-SDAG-NEXT:    v_add_i32_e32 v6, vcc, v23, v63488; GFX7-SDAG-NEXT:    v_add_i32_e32 v5, vcc, v5, v143489; GFX7-SDAG-NEXT:    v_add_i32_e32 v4, vcc, v6, v73490; GFX7-SDAG-NEXT:    v_add_i32_e32 v6, vcc, v2, v93491; GFX7-SDAG-NEXT:    v_mul_lo_u32 v7, v3, v113492; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v3, v12, 03493; GFX7-SDAG-NEXT:    v_mul_lo_u32 v5, v5, v03494; GFX7-SDAG-NEXT:    v_mul_lo_u32 v0, v13, v123495; GFX7-SDAG-NEXT:    v_add_i32_e32 v3, vcc, v3, v73496; GFX7-SDAG-NEXT:    v_add_i32_e32 v5, vcc, v6, v53497; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v3, v03498; GFX7-SDAG-NEXT:    v_mul_lo_u32 v3, v1, v03499; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v1, v2, 03500; GFX7-SDAG-NEXT:    v_mul_lo_u32 v2, v5, v23501; GFX7-SDAG-NEXT:    v_mul_lo_u32 v5, v8, v223502; GFX7-SDAG-NEXT:    v_add_i32_e32 v6, vcc, v1, v33503; GFX7-SDAG-NEXT:    v_mul_lo_u32 v1, v20, v43504; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[3:4], s[4:5], v20, v22, 03505; GFX7-SDAG-NEXT:    v_add_i32_e32 v2, vcc, v6, v23506; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v4, v13507; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v53508; GFX7-SDAG-NEXT:    v_mul_lo_u32 v4, v0, v13509; GFX7-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v0, v3, 03510; GFX7-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v33511; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v43512; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v23513; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]3514;3515; GFX7-GISEL-LABEL: test_vector_reduce_mul_v16i64:3516; GFX7-GISEL:       ; %bb.0: ; %entry3517; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3518; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[31:32], s[4:5], v8, v24, 03519; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[33:34], s[4:5], v8, v25, v[32:33]3520; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[35:36], s[4:5], v9, v24, v[33:34]3521; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v0, v16, 03522; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[32:33], s[4:5], v0, v17, v[9:10]3523; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[24:25], s[4:5], v8, v31, 03524; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[36:37], s[4:5], v8, v35, v[25:26]3525; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v1, v16, v[32:33]3526; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v10, v26, 03527; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[16:17], s[4:5], v8, v31, v[36:37]3528; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v10, v27, v[1:2]3529; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[31:32], s[4:5], v11, v26, v[8:9]3530; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v2, v18, 03531; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[10:11], s[4:5], v2, v19, v[9:10]3532; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[1:2], s[4:5], v8, v0, 03533; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[25:26], s[4:5], v8, v31, v[2:3]3534; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v3, v18, v[10:11]3535; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v12, v28, 03536; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[17:18], s[4:5], v8, v0, v[25:26]3537; GFX7-GISEL-NEXT:    buffer_load_dword v0, off, s[0:3], s323538; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[10:11], s[4:5], v12, v29, v[3:4]3539; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v4, v20, 03540; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[18:19], s[4:5], v13, v28, v[10:11]3541; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[10:11], s[4:5], v8, v2, 03542; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[25:26], s[4:5], v4, v21, v[9:10]3543; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[3:4], s[4:5], v14, v30, 03544; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[27:28], s[4:5], v8, v18, v[11:12]3545; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0)3546; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v14, v0, v[4:5]3547; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], v15, v30, v[8:9]3548; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v6, v22, 03549; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[14:15], s[4:5], v6, v23, v[9:10]3550; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[11:12], s[4:5], v8, v3, 03551; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[18:19], s[4:5], v8, v13, v[12:13]3552; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v5, v20, v[25:26]3553; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v7, v22, v[14:15]3554; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[12:13], s[4:5], v8, v2, v[27:28]3555; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[7:8], s[4:5], v4, v3, v[18:19]3556; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[3:4], s[4:5], v1, v11, 03557; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[5:6], s[4:5], v24, v10, 03558; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v1, v7, v[4:5]3559; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], v24, v12, v[6:7]3560; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], v17, v11, v[8:9]3561; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v5, v3, 03562; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[7:8], s[4:5], v16, v10, v[13:14]3563; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v5, v6, v[1:2]3564; GFX7-GISEL-NEXT:    v_mad_u64_u32 v[1:2], s[4:5], v7, v3, v[8:9]3565; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]3566;3567; GFX8-SDAG-LABEL: test_vector_reduce_mul_v16i64:3568; GFX8-SDAG:       ; %bb.0: ; %entry3569; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3570; GFX8-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s323571; GFX8-SDAG-NEXT:    v_mul_lo_u32 v19, v2, v193572; GFX8-SDAG-NEXT:    v_mul_lo_u32 v32, v3, v183573; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v2, v18, 03574; GFX8-SDAG-NEXT:    v_mul_lo_u32 v27, v10, v273575; GFX8-SDAG-NEXT:    v_mul_lo_u32 v33, v11, v263576; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[10:11], s[4:5], v10, v26, 03577; GFX8-SDAG-NEXT:    v_add_u32_e32 v3, vcc, v3, v193578; GFX8-SDAG-NEXT:    v_mul_lo_u32 v15, v15, v303579; GFX8-SDAG-NEXT:    v_add_u32_e32 v32, vcc, v3, v323580; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[18:19], s[4:5], v14, v30, 03581; GFX8-SDAG-NEXT:    v_mul_lo_u32 v30, v4, v213582; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[3:4], s[4:5], v4, v20, 03583; GFX8-SDAG-NEXT:    v_mul_lo_u32 v5, v5, v203584; GFX8-SDAG-NEXT:    v_mul_lo_u32 v29, v12, v293585; GFX8-SDAG-NEXT:    v_mul_lo_u32 v34, v13, v283586; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[12:13], s[4:5], v12, v28, 03587; GFX8-SDAG-NEXT:    v_add_u32_e32 v11, vcc, v11, v273588; GFX8-SDAG-NEXT:    v_add_u32_e32 v11, vcc, v11, v333589; GFX8-SDAG-NEXT:    v_add_u32_e32 v4, vcc, v4, v303590; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[20:21], s[4:5], v2, v10, 03591; GFX8-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v113592; GFX8-SDAG-NEXT:    v_add_u32_e32 v11, vcc, v13, v293593; GFX8-SDAG-NEXT:    v_add_u32_e32 v13, vcc, v4, v53594; GFX8-SDAG-NEXT:    v_mul_lo_u32 v23, v6, v233595; GFX8-SDAG-NEXT:    v_mul_lo_u32 v26, v7, v223596; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], v6, v22, 03597; GFX8-SDAG-NEXT:    v_mul_lo_u32 v17, v0, v173598; GFX8-SDAG-NEXT:    v_mul_lo_u32 v10, v32, v103599; GFX8-SDAG-NEXT:    v_add_u32_e32 v7, vcc, v7, v233600; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[22:23], s[4:5], v6, v18, 03601; GFX8-SDAG-NEXT:    v_add_u32_e32 v7, vcc, v7, v263602; GFX8-SDAG-NEXT:    v_add_u32_e32 v2, vcc, v21, v23603; GFX8-SDAG-NEXT:    v_mul_lo_u32 v7, v7, v183604; GFX8-SDAG-NEXT:    v_add_u32_e32 v11, vcc, v11, v343605; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0)3606; GFX8-SDAG-NEXT:    v_mul_lo_u32 v4, v14, v313607; GFX8-SDAG-NEXT:    v_mul_lo_u32 v14, v1, v163608; GFX8-SDAG-NEXT:    v_add_u32_e32 v4, vcc, v19, v43609; GFX8-SDAG-NEXT:    v_add_u32_e32 v4, vcc, v4, v153610; GFX8-SDAG-NEXT:    v_mul_lo_u32 v6, v6, v43611; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v0, v16, 03612; GFX8-SDAG-NEXT:    v_mul_lo_u32 v15, v8, v253613; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v8, v24, 03614; GFX8-SDAG-NEXT:    v_mul_lo_u32 v8, v9, v243615; GFX8-SDAG-NEXT:    v_add_u32_e32 v5, vcc, v5, v173616; GFX8-SDAG-NEXT:    v_add_u32_e32 v1, vcc, v1, v153617; GFX8-SDAG-NEXT:    v_add_u32_e32 v1, vcc, v1, v83618; GFX8-SDAG-NEXT:    v_add_u32_e32 v8, vcc, v2, v103619; GFX8-SDAG-NEXT:    v_mul_lo_u32 v9, v4, v13620; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[1:2], s[4:5], v4, v0, 03621; GFX8-SDAG-NEXT:    v_add_u32_e32 v6, vcc, v23, v63622; GFX8-SDAG-NEXT:    v_add_u32_e32 v5, vcc, v5, v143623; GFX8-SDAG-NEXT:    v_add_u32_e32 v4, vcc, v6, v73624; GFX8-SDAG-NEXT:    v_add_u32_e32 v6, vcc, v2, v93625; GFX8-SDAG-NEXT:    v_mul_lo_u32 v7, v3, v113626; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v3, v12, 03627; GFX8-SDAG-NEXT:    v_mul_lo_u32 v5, v5, v03628; GFX8-SDAG-NEXT:    v_mul_lo_u32 v0, v13, v123629; GFX8-SDAG-NEXT:    v_add_u32_e32 v3, vcc, v3, v73630; GFX8-SDAG-NEXT:    v_add_u32_e32 v5, vcc, v6, v53631; GFX8-SDAG-NEXT:    v_add_u32_e32 v0, vcc, v3, v03632; GFX8-SDAG-NEXT:    v_mul_lo_u32 v3, v1, v03633; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v1, v2, 03634; GFX8-SDAG-NEXT:    v_mul_lo_u32 v2, v5, v23635; GFX8-SDAG-NEXT:    v_mul_lo_u32 v5, v8, v223636; GFX8-SDAG-NEXT:    v_add_u32_e32 v6, vcc, v1, v33637; GFX8-SDAG-NEXT:    v_mul_lo_u32 v1, v20, v43638; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[3:4], s[4:5], v20, v22, 03639; GFX8-SDAG-NEXT:    v_add_u32_e32 v2, vcc, v6, v23640; GFX8-SDAG-NEXT:    v_add_u32_e32 v1, vcc, v4, v13641; GFX8-SDAG-NEXT:    v_add_u32_e32 v1, vcc, v1, v53642; GFX8-SDAG-NEXT:    v_mul_lo_u32 v4, v0, v13643; GFX8-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v0, v3, 03644; GFX8-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v33645; GFX8-SDAG-NEXT:    v_add_u32_e32 v1, vcc, v1, v43646; GFX8-SDAG-NEXT:    v_add_u32_e32 v1, vcc, v1, v23647; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]3648;3649; GFX8-GISEL-LABEL: test_vector_reduce_mul_v16i64:3650; GFX8-GISEL:       ; %bb.0: ; %entry3651; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3652; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[31:32], s[4:5], v8, v24, 03653; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[33:34], s[4:5], v8, v25, v[32:33]3654; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[35:36], s[4:5], v9, v24, v[33:34]3655; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v0, v16, 03656; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[32:33], s[4:5], v0, v17, v[9:10]3657; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[24:25], s[4:5], v8, v31, 03658; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[36:37], s[4:5], v8, v35, v[25:26]3659; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v1, v16, v[32:33]3660; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v10, v26, 03661; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[16:17], s[4:5], v8, v31, v[36:37]3662; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v10, v27, v[1:2]3663; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[31:32], s[4:5], v11, v26, v[8:9]3664; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v2, v18, 03665; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[10:11], s[4:5], v2, v19, v[9:10]3666; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[1:2], s[4:5], v8, v0, 03667; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[25:26], s[4:5], v8, v31, v[2:3]3668; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v3, v18, v[10:11]3669; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v12, v28, 03670; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[17:18], s[4:5], v8, v0, v[25:26]3671; GFX8-GISEL-NEXT:    buffer_load_dword v0, off, s[0:3], s323672; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[10:11], s[4:5], v12, v29, v[3:4]3673; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v4, v20, 03674; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[18:19], s[4:5], v13, v28, v[10:11]3675; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[10:11], s[4:5], v8, v2, 03676; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[25:26], s[4:5], v4, v21, v[9:10]3677; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[3:4], s[4:5], v14, v30, 03678; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[27:28], s[4:5], v8, v18, v[11:12]3679; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0)3680; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v14, v0, v[4:5]3681; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], v15, v30, v[8:9]3682; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v6, v22, 03683; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[14:15], s[4:5], v6, v23, v[9:10]3684; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[11:12], s[4:5], v8, v3, 03685; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[18:19], s[4:5], v8, v13, v[12:13]3686; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v5, v20, v[25:26]3687; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v7, v22, v[14:15]3688; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[12:13], s[4:5], v8, v2, v[27:28]3689; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[7:8], s[4:5], v4, v3, v[18:19]3690; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[3:4], s[4:5], v1, v11, 03691; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[5:6], s[4:5], v24, v10, 03692; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v1, v7, v[4:5]3693; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], v24, v12, v[6:7]3694; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], v17, v11, v[8:9]3695; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v5, v3, 03696; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[7:8], s[4:5], v16, v10, v[13:14]3697; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v5, v6, v[1:2]3698; GFX8-GISEL-NEXT:    v_mad_u64_u32 v[1:2], s[4:5], v7, v3, v[8:9]3699; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]3700;3701; GFX9-SDAG-LABEL: test_vector_reduce_mul_v16i64:3702; GFX9-SDAG:       ; %bb.0: ; %entry3703; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3704; GFX9-SDAG-NEXT:    scratch_load_dword v31, off, s323705; GFX9-SDAG-NEXT:    v_mul_lo_u32 v32, v11, v263706; GFX9-SDAG-NEXT:    v_mul_lo_u32 v27, v10, v273707; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[10:11], s[0:1], v10, v26, 03708; GFX9-SDAG-NEXT:    v_mul_lo_u32 v26, v3, v183709; GFX9-SDAG-NEXT:    v_mul_lo_u32 v33, v2, v193710; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[2:3], s[0:1], v2, v18, 03711; GFX9-SDAG-NEXT:    v_mul_lo_u32 v15, v15, v303712; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[18:19], s[0:1], v14, v30, 03713; GFX9-SDAG-NEXT:    v_mul_lo_u32 v30, v7, v223714; GFX9-SDAG-NEXT:    v_mul_lo_u32 v23, v6, v233715; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[6:7], s[0:1], v6, v22, 03716; GFX9-SDAG-NEXT:    v_mul_lo_u32 v22, v9, v243717; GFX9-SDAG-NEXT:    v_mul_lo_u32 v25, v8, v253718; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[8:9], s[0:1], v8, v24, 03719; GFX9-SDAG-NEXT:    v_mul_lo_u32 v24, v1, v163720; GFX9-SDAG-NEXT:    v_mul_lo_u32 v17, v0, v173721; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v0, v16, 03722; GFX9-SDAG-NEXT:    v_mul_lo_u32 v16, v13, v283723; GFX9-SDAG-NEXT:    v_mul_lo_u32 v29, v12, v293724; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[12:13], s[0:1], v12, v28, 03725; GFX9-SDAG-NEXT:    v_mul_lo_u32 v28, v5, v203726; GFX9-SDAG-NEXT:    v_mul_lo_u32 v21, v4, v213727; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[4:5], s[0:1], v4, v20, 03728; GFX9-SDAG-NEXT:    v_add3_u32 v9, v9, v25, v223729; GFX9-SDAG-NEXT:    v_add3_u32 v1, v1, v17, v243730; GFX9-SDAG-NEXT:    v_add3_u32 v13, v13, v29, v163731; GFX9-SDAG-NEXT:    v_add3_u32 v5, v5, v21, v283732; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[16:17], s[0:1], v4, v12, 03733; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[20:21], s[0:1], v0, v8, 03734; GFX9-SDAG-NEXT:    v_mul_lo_u32 v5, v5, v123735; GFX9-SDAG-NEXT:    v_mul_lo_u32 v4, v4, v133736; GFX9-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v83737; GFX9-SDAG-NEXT:    v_mul_lo_u32 v0, v0, v93738; GFX9-SDAG-NEXT:    v_add3_u32 v4, v17, v4, v53739; GFX9-SDAG-NEXT:    v_add3_u32 v5, v21, v0, v13740; GFX9-SDAG-NEXT:    v_add3_u32 v7, v7, v23, v303741; GFX9-SDAG-NEXT:    v_add3_u32 v11, v11, v27, v323742; GFX9-SDAG-NEXT:    v_add3_u32 v3, v3, v33, v263743; GFX9-SDAG-NEXT:    v_mul_lo_u32 v7, v7, v183744; GFX9-SDAG-NEXT:    v_mul_lo_u32 v5, v5, v163745; GFX9-SDAG-NEXT:    v_mul_lo_u32 v4, v20, v43746; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0)3747; GFX9-SDAG-NEXT:    v_mul_lo_u32 v0, v14, v313748; GFX9-SDAG-NEXT:    v_add3_u32 v0, v19, v0, v153749; GFX9-SDAG-NEXT:    v_mul_lo_u32 v8, v6, v03750; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v6, v18, 03751; GFX9-SDAG-NEXT:    v_add3_u32 v1, v1, v8, v73752; GFX9-SDAG-NEXT:    v_mul_lo_u32 v6, v3, v103753; GFX9-SDAG-NEXT:    v_mul_lo_u32 v7, v2, v113754; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[2:3], s[0:1], v2, v10, 03755; GFX9-SDAG-NEXT:    v_add3_u32 v3, v3, v7, v63756; GFX9-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v03757; GFX9-SDAG-NEXT:    v_mul_lo_u32 v6, v2, v13758; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v2, v0, 03759; GFX9-SDAG-NEXT:    v_add3_u32 v1, v1, v6, v33760; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[2:3], s[0:1], v20, v16, 03761; GFX9-SDAG-NEXT:    v_add3_u32 v3, v3, v4, v53762; GFX9-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v03763; GFX9-SDAG-NEXT:    v_mul_lo_u32 v4, v2, v13764; GFX9-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v2, v0, 03765; GFX9-SDAG-NEXT:    v_add3_u32 v1, v1, v4, v33766; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]3767;3768; GFX9-GISEL-LABEL: test_vector_reduce_mul_v16i64:3769; GFX9-GISEL:       ; %bb.0: ; %entry3770; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3771; GFX9-GISEL-NEXT:    scratch_load_dword v31, off, s323772; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[34:35], s[0:1], v0, v17, 03773; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[32:33], s[0:1], v0, v16, 03774; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[36:37], s[0:1], v1, v16, v[34:35]3775; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[16:17], s[0:1], v2, v19, 03776; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[34:35], s[0:1], v3, v18, v[16:17]3777; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[16:17], s[0:1], v4, v21, 03778; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v2, v18, 03779; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[2:3], s[0:1], v4, v20, 03780; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[18:19], s[0:1], v5, v20, v[16:17]3781; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[16:17], s[0:1], v6, v23, 03782; GFX9-GISEL-NEXT:    v_add_u32_e32 v20, v3, v183783; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[4:5], s[0:1], v6, v22, 03784; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[18:19], s[0:1], v7, v22, v[16:17]3785; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[16:17], s[0:1], v8, v25, 03786; GFX9-GISEL-NEXT:    v_add_u32_e32 v21, v5, v183787; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[6:7], s[0:1], v8, v24, 03788; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[18:19], s[0:1], v9, v24, v[16:17]3789; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[16:17], s[0:1], v10, v27, 03790; GFX9-GISEL-NEXT:    v_add_u32_e32 v34, v1, v343791; GFX9-GISEL-NEXT:    v_add_u32_e32 v1, v7, v183792; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[0:1], v10, v26, 03793; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[18:19], s[0:1], v11, v26, v[16:17]3794; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[16:17], s[0:1], v12, v29, 03795; GFX9-GISEL-NEXT:    v_add_u32_e32 v3, v9, v183796; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[10:11], s[0:1], v12, v28, 03797; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[18:19], s[0:1], v13, v28, v[16:17]3798; GFX9-GISEL-NEXT:    v_add_u32_e32 v33, v33, v363799; GFX9-GISEL-NEXT:    v_add_u32_e32 v5, v11, v183800; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[12:13], s[0:1], v14, v30, 03801; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0)3802; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[16:17], s[0:1], v14, v31, 03803; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[18:19], s[0:1], v15, v30, v[16:17]3804; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[16:17], s[0:1], v32, v1, 03805; GFX9-GISEL-NEXT:    v_add_u32_e32 v11, v13, v183806; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[18:19], s[0:1], v33, v6, v[16:17]3807; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[16:17], s[0:1], v0, v3, 03808; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[14:15], s[0:1], v32, v6, 03809; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[6:7], s[0:1], v0, v8, 03810; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v34, v8, v[16:17]3811; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[0:1], v2, v5, 03812; GFX9-GISEL-NEXT:    v_add_u32_e32 v13, v15, v183813; GFX9-GISEL-NEXT:    v_add_u32_e32 v15, v7, v03814; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v2, v10, 03815; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[2:3], s[0:1], v20, v10, v[8:9]3816; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[0:1], v4, v11, 03817; GFX9-GISEL-NEXT:    v_add_u32_e32 v1, v1, v23818; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[2:3], s[0:1], v4, v12, 03819; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[4:5], s[0:1], v21, v12, v[8:9]3820; GFX9-GISEL-NEXT:    v_add_u32_e32 v3, v3, v43821; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[0:1], v14, v1, 03822; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[4:5], s[0:1], v14, v0, 03823; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[10:11], s[0:1], v13, v0, v[8:9]3824; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v6, v3, 03825; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[0:1], v6, v2, 03826; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[6:7], s[0:1], v15, v2, v[0:1]3827; GFX9-GISEL-NEXT:    v_add_u32_e32 v10, v5, v103828; GFX9-GISEL-NEXT:    v_add_u32_e32 v5, v9, v63829; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[2:3], s[0:1], v4, v5, 03830; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], v4, v8, 03831; GFX9-GISEL-NEXT:    v_mad_u64_u32 v[4:5], s[0:1], v10, v8, v[2:3]3832; GFX9-GISEL-NEXT:    v_add_u32_e32 v1, v1, v43833; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]3834;3835; GFX10-SDAG-LABEL: test_vector_reduce_mul_v16i64:3836; GFX10-SDAG:       ; %bb.0: ; %entry3837; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3838; GFX10-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s323839; GFX10-SDAG-NEXT:    v_mul_lo_u32 v32, v11, v263840; GFX10-SDAG-NEXT:    v_mul_lo_u32 v27, v10, v273841; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[10:11], s4, v10, v26, 03842; GFX10-SDAG-NEXT:    v_mul_lo_u32 v26, v3, v183843; GFX10-SDAG-NEXT:    v_mul_lo_u32 v19, v2, v193844; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[2:3], s4, v2, v18, 03845; GFX10-SDAG-NEXT:    v_mul_lo_u32 v18, v7, v223846; GFX10-SDAG-NEXT:    v_mul_lo_u32 v23, v6, v233847; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[6:7], s4, v6, v22, 03848; GFX10-SDAG-NEXT:    v_mul_lo_u32 v22, v9, v243849; GFX10-SDAG-NEXT:    v_mul_lo_u32 v25, v8, v253850; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[8:9], s4, v8, v24, 03851; GFX10-SDAG-NEXT:    v_mul_lo_u32 v24, v1, v163852; GFX10-SDAG-NEXT:    v_mul_lo_u32 v17, v0, v173853; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s4, v0, v16, 03854; GFX10-SDAG-NEXT:    v_mul_lo_u32 v33, v15, v303855; GFX10-SDAG-NEXT:    v_mul_lo_u32 v34, v13, v283856; GFX10-SDAG-NEXT:    v_mul_lo_u32 v29, v12, v293857; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[12:13], s4, v12, v28, 03858; GFX10-SDAG-NEXT:    v_mul_lo_u32 v28, v5, v203859; GFX10-SDAG-NEXT:    v_mul_lo_u32 v21, v4, v213860; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[4:5], s4, v4, v20, 03861; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[15:16], s4, v14, v30, 03862; GFX10-SDAG-NEXT:    v_add3_u32 v1, v1, v17, v243863; GFX10-SDAG-NEXT:    v_add3_u32 v11, v11, v27, v323864; GFX10-SDAG-NEXT:    v_add3_u32 v3, v3, v19, v263865; GFX10-SDAG-NEXT:    v_add3_u32 v7, v7, v23, v183866; GFX10-SDAG-NEXT:    v_add3_u32 v9, v9, v25, v223867; GFX10-SDAG-NEXT:    v_add3_u32 v23, v13, v29, v343868; GFX10-SDAG-NEXT:    v_add3_u32 v5, v5, v21, v283869; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[19:20], s4, v0, v8, 03870; GFX10-SDAG-NEXT:    v_mul_lo_u32 v8, v1, v83871; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[17:18], s4, v4, v12, 03872; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[21:22], s4, v2, v10, 03873; GFX10-SDAG-NEXT:    v_mul_lo_u32 v5, v5, v123874; GFX10-SDAG-NEXT:    v_mul_lo_u32 v4, v4, v233875; GFX10-SDAG-NEXT:    v_mul_lo_u32 v9, v0, v93876; GFX10-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v103877; GFX10-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v113878; GFX10-SDAG-NEXT:    v_mul_lo_u32 v7, v7, v153879; GFX10-SDAG-NEXT:    v_add3_u32 v4, v18, v4, v53880; GFX10-SDAG-NEXT:    v_add3_u32 v8, v20, v9, v83881; GFX10-SDAG-NEXT:    v_add3_u32 v5, v22, v2, v33882; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[2:3], s4, v19, v17, 03883; GFX10-SDAG-NEXT:    v_mul_lo_u32 v4, v19, v43884; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0)3885; GFX10-SDAG-NEXT:    v_mul_lo_u32 v24, v14, v313886; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[13:14], s4, v6, v15, 03887; GFX10-SDAG-NEXT:    v_add3_u32 v1, v16, v24, v333888; GFX10-SDAG-NEXT:    v_mul_lo_u32 v5, v5, v133889; GFX10-SDAG-NEXT:    v_mul_lo_u32 v6, v6, v13890; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s4, v21, v13, 03891; GFX10-SDAG-NEXT:    v_add3_u32 v6, v14, v6, v73892; GFX10-SDAG-NEXT:    v_mul_lo_u32 v7, v8, v173893; GFX10-SDAG-NEXT:    v_mul_lo_u32 v6, v21, v63894; GFX10-SDAG-NEXT:    v_add3_u32 v3, v3, v4, v73895; GFX10-SDAG-NEXT:    v_add3_u32 v1, v1, v6, v53896; GFX10-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v03897; GFX10-SDAG-NEXT:    v_mul_lo_u32 v4, v2, v13898; GFX10-SDAG-NEXT:    v_mad_u64_u32 v[0:1], s4, v2, v0, 03899; GFX10-SDAG-NEXT:    v_add3_u32 v1, v1, v4, v33900; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]3901;3902; GFX10-GISEL-LABEL: test_vector_reduce_mul_v16i64:3903; GFX10-GISEL:       ; %bb.0: ; %entry3904; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3905; GFX10-GISEL-NEXT:    buffer_load_dword v35, off, s[0:3], s323906; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[31:32], s4, v14, v30, 03907; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[33:34], s4, v6, v22, 03908; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0)3909; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[36:37], s4, v14, v35, v[32:33]3910; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[37:38], s4, v6, v23, v[34:35]3911; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[34:35], s4, v33, v31, 03912; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[38:39], s4, v15, v30, v[36:37]3913; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[14:15], s4, v0, v16, 03914; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[36:37], s4, v7, v22, v[37:38]3915; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[6:7], s4, v2, v18, 03916; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[22:23], s4, v4, v20, 03917; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[32:33], s4, v33, v38, v[35:36]3918; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[37:38], s4, v0, v17, v[15:16]3919; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[38:39], s4, v2, v19, v[7:8]3920; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[35:36], s4, v36, v31, v[32:33]3921; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[30:31], s4, v8, v24, 03922; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[32:33], s4, v10, v26, 03923; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[15:16], s4, v1, v16, v[37:38]3924; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[16:17], s4, v3, v18, v[38:39]3925; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s4, v12, v28, 03926; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[2:3], s4, v4, v21, v[23:24]3927; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[3:4], s4, v8, v25, v[31:32]3928; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[7:8], s4, v10, v27, v[33:34]3929; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[17:18], s4, v12, v29, v[1:2]3930; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[18:19], s4, v5, v20, v[2:3]3931; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[19:20], s4, v9, v24, v[3:4]3932; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[9:10], s4, v11, v26, v[7:8]3933; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[3:4], s4, v6, v32, 03934; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[10:11], s4, v13, v28, v[17:18]3935; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[7:8], s4, v22, v0, 03936; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[1:2], s4, v14, v30, 03937; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[11:12], s4, v6, v9, v[4:5]3938; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[12:13], s4, v22, v10, v[8:9]3939; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[8:9], s4, v3, v34, 03940; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[13:14], s4, v14, v19, v[2:3]3941; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[4:5], s4, v1, v7, 03942; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[10:11], s4, v16, v32, v[11:12]3943; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[11:12], s4, v18, v0, v[12:13]3944; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[12:13], s4, v15, v30, v[13:14]3945; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[2:3], s4, v3, v35, v[9:10]3946; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[5:6], s4, v1, v11, v[5:6]3947; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[0:1], s4, v4, v8, 03948; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[2:3], s4, v10, v34, v[2:3]3949; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[5:6], s4, v12, v7, v[5:6]3950; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[1:2], s4, v4, v2, v[1:2]3951; GFX10-GISEL-NEXT:    v_mad_u64_u32 v[1:2], s4, v5, v8, v[1:2]3952; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]3953;3954; GFX11-SDAG-LABEL: test_vector_reduce_mul_v16i64:3955; GFX11-SDAG:       ; %bb.0: ; %entry3956; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3957; GFX11-SDAG-NEXT:    scratch_load_b32 v33, off, s323958; GFX11-SDAG-NEXT:    v_mul_lo_u32 v34, v11, v263959; GFX11-SDAG-NEXT:    v_mul_lo_u32 v27, v10, v273960; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[31:32], null, v10, v26, 03961; GFX11-SDAG-NEXT:    v_mul_lo_u32 v26, v3, v183962; GFX11-SDAG-NEXT:    v_mul_lo_u32 v19, v2, v193963; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[10:11], null, v2, v18, 03964; GFX11-SDAG-NEXT:    v_mul_lo_u32 v35, v15, v303965; GFX11-SDAG-NEXT:    v_mul_lo_u32 v15, v7, v223966; GFX11-SDAG-NEXT:    v_mul_lo_u32 v18, v6, v233967; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[2:3], null, v6, v22, 03968; GFX11-SDAG-NEXT:    v_mul_lo_u32 v22, v9, v243969; GFX11-SDAG-NEXT:    v_mul_lo_u32 v23, v8, v253970; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[6:7], null, v8, v24, 03971; GFX11-SDAG-NEXT:    v_mul_lo_u32 v24, v1, v163972; GFX11-SDAG-NEXT:    v_mul_lo_u32 v17, v0, v173973; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[8:9], null, v0, v16, 03974; GFX11-SDAG-NEXT:    v_mul_lo_u32 v16, v13, v283975; GFX11-SDAG-NEXT:    v_mul_lo_u32 v25, v12, v293976; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[0:1], null, v12, v28, 03977; GFX11-SDAG-NEXT:    v_mul_lo_u32 v28, v5, v203978; GFX11-SDAG-NEXT:    v_mul_lo_u32 v21, v4, v213979; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[12:13], null, v4, v20, 03980; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[4:5], null, v14, v30, 03981; GFX11-SDAG-NEXT:    v_add3_u32 v7, v7, v23, v223982; GFX11-SDAG-NEXT:    v_add3_u32 v27, v32, v27, v343983; GFX11-SDAG-NEXT:    v_add3_u32 v11, v11, v19, v263984; GFX11-SDAG-NEXT:    v_add3_u32 v3, v3, v18, v153985; GFX11-SDAG-NEXT:    v_add3_u32 v9, v9, v17, v243986; GFX11-SDAG-NEXT:    v_add3_u32 v1, v1, v25, v163987; GFX11-SDAG-NEXT:    v_add3_u32 v21, v13, v21, v283988; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[15:16], null, v12, v0, 03989; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[17:18], null, v8, v6, 03990; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[19:20], null, v10, v31, 03991; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4)3992; GFX11-SDAG-NEXT:    v_mul_lo_u32 v0, v21, v03993; GFX11-SDAG-NEXT:    v_mul_lo_u32 v1, v12, v13994; GFX11-SDAG-NEXT:    v_mul_lo_u32 v6, v9, v63995; GFX11-SDAG-NEXT:    v_mul_lo_u32 v7, v8, v73996; GFX11-SDAG-NEXT:    v_mul_lo_u32 v8, v11, v313997; GFX11-SDAG-NEXT:    v_mul_lo_u32 v9, v10, v273998; GFX11-SDAG-NEXT:    v_add3_u32 v0, v16, v1, v03999; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)4000; GFX11-SDAG-NEXT:    v_add3_u32 v6, v18, v7, v64001; GFX11-SDAG-NEXT:    v_add3_u32 v1, v20, v9, v84002; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)4003; GFX11-SDAG-NEXT:    v_mul_lo_u32 v0, v17, v04004; GFX11-SDAG-NEXT:    v_mul_lo_u32 v6, v6, v154005; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0)4006; GFX11-SDAG-NEXT:    v_mul_lo_u32 v22, v14, v334007; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[13:14], null, v2, v4, 04008; GFX11-SDAG-NEXT:    v_mul_lo_u32 v4, v3, v44009; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)4010; GFX11-SDAG-NEXT:    v_add3_u32 v5, v5, v22, v354011; GFX11-SDAG-NEXT:    v_mul_lo_u32 v1, v1, v134012; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)4013; GFX11-SDAG-NEXT:    v_mul_lo_u32 v5, v2, v54014; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[2:3], null, v19, v13, 04015; GFX11-SDAG-NEXT:    v_add3_u32 v7, v14, v5, v44016; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[4:5], null, v17, v15, 04017; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)4018; GFX11-SDAG-NEXT:    v_mul_lo_u32 v7, v19, v74019; GFX11-SDAG-NEXT:    v_add3_u32 v0, v5, v0, v64020; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)4021; GFX11-SDAG-NEXT:    v_add3_u32 v1, v3, v7, v14022; GFX11-SDAG-NEXT:    v_mul_lo_u32 v3, v0, v24023; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)4024; GFX11-SDAG-NEXT:    v_mul_lo_u32 v5, v4, v14025; GFX11-SDAG-NEXT:    v_mad_u64_u32 v[0:1], null, v4, v2, 04026; GFX11-SDAG-NEXT:    v_add3_u32 v1, v1, v5, v34027; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]4028;4029; GFX11-GISEL-LABEL: test_vector_reduce_mul_v16i64:4030; GFX11-GISEL:       ; %bb.0: ; %entry4031; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4032; GFX11-GISEL-NEXT:    scratch_load_b32 v55, off, s324033; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[33:34], null, v2, v18, 04034; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[35:36], null, v4, v20, 04035; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[31:32], null, v0, v16, 04036; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[37:38], null, v6, v22, 04037; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[50:51], null, v10, v26, 04038; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)4039; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[82:83], null, v2, v19, v[34:35]4040; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[70:71], null, v0, v17, v[32:33]4041; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4)4042; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[83:84], null, v4, v21, v[36:37]4043; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[52:53], null, v12, v28, 04044; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[64:65], null, v14, v30, 04045; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[66:67], null, v33, v50, 04046; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[48:49], null, v8, v24, 04047; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[84:85], null, v6, v23, v[38:39]4048; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[96:97], null, v1, v16, v[70:71]4049; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[0:1], null, v3, v18, v[82:83]4050; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[85:86], null, v10, v27, v[51:52]4051; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[86:87], null, v12, v29, v[53:54]4052; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[38:39], null, v8, v25, v[49:50]4053; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[80:81], null, v37, v64, 04054; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[16:17], null, v5, v20, v[83:84]4055; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[68:69], null, v35, v52, 04056; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[17:18], null, v7, v22, v[84:85]4057; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[6:7], null, v9, v24, v[38:39]4058; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[7:8], null, v13, v28, v[86:87]4059; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[53:54], null, v31, v48, 04060; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0)4061; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[1:2], null, v14, v55, v[65:66]4062; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_4)4063; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[4:5], null, v15, v30, v[1:2]4064; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[1:2], null, v11, v26, v[85:86]4065; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[2:3], null, v53, v68, 04066; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)4067; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[8:9], null, v37, v4, v[81:82]4068; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[9:10], null, v33, v1, v[67:68]4069; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[10:11], null, v35, v7, v[69:70]4070; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[4:5], null, v66, v80, 04071; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)4072; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[11:12], null, v17, v64, v[8:9]4073; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[7:8], null, v31, v6, v[54:55]4074; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[12:13], null, v0, v50, v[9:10]4075; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)4076; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[8:9], null, v66, v11, v[5:6]4077; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[0:1], null, v16, v52, v[10:11]4078; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[5:6], null, v96, v48, v[7:8]4079; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_4)4080; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[6:7], null, v53, v0, v[3:4]4081; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[9:10], null, v12, v80, v[8:9]4082; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[0:1], null, v2, v4, 04083; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)4084; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[7:8], null, v5, v68, v[6:7]4085; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[5:6], null, v2, v9, v[1:2]4086; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)4087; GFX11-GISEL-NEXT:    v_mad_u64_u32 v[1:2], null, v7, v4, v[5:6]4088; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]4089;4090; GFX12-SDAG-LABEL: test_vector_reduce_mul_v16i64:4091; GFX12-SDAG:       ; %bb.0: ; %entry4092; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x04093; GFX12-SDAG-NEXT:    s_wait_expcnt 0x04094; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x04095; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x04096; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x04097; GFX12-SDAG-NEXT:    scratch_load_b32 v31, off, s324098; GFX12-SDAG-NEXT:    v_mul_lo_u32 v32, v11, v264099; GFX12-SDAG-NEXT:    v_mul_lo_u32 v27, v10, v274100; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[10:11], null, v10, v26, 04101; GFX12-SDAG-NEXT:    v_mul_lo_u32 v26, v3, v184102; GFX12-SDAG-NEXT:    v_mul_lo_u32 v19, v2, v194103; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[2:3], null, v2, v18, 04104; GFX12-SDAG-NEXT:    v_mul_lo_u32 v18, v7, v224105; GFX12-SDAG-NEXT:    v_mul_lo_u32 v23, v6, v234106; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[6:7], null, v6, v22, 04107; GFX12-SDAG-NEXT:    v_mul_lo_u32 v22, v9, v244108; GFX12-SDAG-NEXT:    v_mul_lo_u32 v25, v8, v254109; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[8:9], null, v8, v24, 04110; GFX12-SDAG-NEXT:    v_mul_lo_u32 v24, v1, v164111; GFX12-SDAG-NEXT:    v_mul_lo_u32 v17, v0, v174112; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[0:1], null, v0, v16, 04113; GFX12-SDAG-NEXT:    v_mul_lo_u32 v33, v15, v304114; GFX12-SDAG-NEXT:    v_mul_lo_u32 v34, v13, v284115; GFX12-SDAG-NEXT:    v_mul_lo_u32 v29, v12, v294116; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[12:13], null, v12, v28, 04117; GFX12-SDAG-NEXT:    v_mul_lo_u32 v28, v5, v204118; GFX12-SDAG-NEXT:    v_mul_lo_u32 v21, v4, v214119; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[4:5], null, v4, v20, 04120; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[15:16], null, v14, v30, 04121; GFX12-SDAG-NEXT:    v_add3_u32 v1, v1, v17, v244122; GFX12-SDAG-NEXT:    v_add3_u32 v11, v11, v27, v324123; GFX12-SDAG-NEXT:    v_add3_u32 v3, v3, v19, v264124; GFX12-SDAG-NEXT:    v_add3_u32 v7, v7, v23, v184125; GFX12-SDAG-NEXT:    v_add3_u32 v9, v9, v25, v224126; GFX12-SDAG-NEXT:    v_add3_u32 v23, v13, v29, v344127; GFX12-SDAG-NEXT:    v_add3_u32 v5, v5, v21, v284128; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[19:20], null, v0, v8, 04129; GFX12-SDAG-NEXT:    v_mul_lo_u32 v8, v1, v84130; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[17:18], null, v4, v12, 04131; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[21:22], null, v2, v10, 04132; GFX12-SDAG-NEXT:    v_mul_lo_u32 v5, v5, v124133; GFX12-SDAG-NEXT:    v_mul_lo_u32 v4, v4, v234134; GFX12-SDAG-NEXT:    v_mul_lo_u32 v9, v0, v94135; GFX12-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v104136; GFX12-SDAG-NEXT:    v_mul_lo_u32 v2, v2, v114137; GFX12-SDAG-NEXT:    v_mul_lo_u32 v7, v7, v154138; GFX12-SDAG-NEXT:    v_add3_u32 v4, v18, v4, v54139; GFX12-SDAG-NEXT:    v_add3_u32 v8, v20, v9, v84140; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_4)4141; GFX12-SDAG-NEXT:    v_add3_u32 v5, v22, v2, v34142; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[2:3], null, v19, v17, 04143; GFX12-SDAG-NEXT:    v_mul_lo_u32 v4, v19, v44144; GFX12-SDAG-NEXT:    s_wait_loadcnt 0x04145; GFX12-SDAG-NEXT:    v_mul_lo_u32 v24, v14, v314146; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[13:14], null, v6, v15, 04147; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)4148; GFX12-SDAG-NEXT:    v_add3_u32 v1, v16, v24, v334149; GFX12-SDAG-NEXT:    v_mul_lo_u32 v5, v5, v134150; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)4151; GFX12-SDAG-NEXT:    v_mul_lo_u32 v6, v6, v14152; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[0:1], null, v21, v13, 04153; GFX12-SDAG-NEXT:    v_add3_u32 v6, v14, v6, v74154; GFX12-SDAG-NEXT:    v_mul_lo_u32 v7, v8, v174155; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)4156; GFX12-SDAG-NEXT:    v_mul_lo_u32 v6, v21, v64157; GFX12-SDAG-NEXT:    v_add3_u32 v3, v3, v4, v74158; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)4159; GFX12-SDAG-NEXT:    v_add3_u32 v1, v1, v6, v54160; GFX12-SDAG-NEXT:    v_mul_lo_u32 v3, v3, v04161; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)4162; GFX12-SDAG-NEXT:    v_mul_lo_u32 v4, v2, v14163; GFX12-SDAG-NEXT:    v_mad_co_u64_u32 v[0:1], null, v2, v0, 04164; GFX12-SDAG-NEXT:    v_add3_u32 v1, v1, v4, v34165; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]4166;4167; GFX12-GISEL-LABEL: test_vector_reduce_mul_v16i64:4168; GFX12-GISEL:       ; %bb.0: ; %entry4169; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x04170; GFX12-GISEL-NEXT:    s_wait_expcnt 0x04171; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x04172; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x04173; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x04174; GFX12-GISEL-NEXT:    scratch_load_b32 v39, off, s324175; GFX12-GISEL-NEXT:    v_mul_hi_u32 v31, v0, v164176; GFX12-GISEL-NEXT:    v_mul_hi_u32 v32, v2, v184177; GFX12-GISEL-NEXT:    v_mul_hi_u32 v33, v4, v204178; GFX12-GISEL-NEXT:    v_mul_hi_u32 v34, v6, v224179; GFX12-GISEL-NEXT:    v_mul_hi_u32 v35, v8, v244180; GFX12-GISEL-NEXT:    v_mul_hi_u32 v36, v10, v264181; GFX12-GISEL-NEXT:    v_mul_hi_u32 v37, v12, v284182; GFX12-GISEL-NEXT:    v_mul_hi_u32 v38, v14, v304183; GFX12-GISEL-NEXT:    v_mul_lo_u32 v51, v2, v184184; GFX12-GISEL-NEXT:    v_mul_lo_u32 v53, v6, v224185; GFX12-GISEL-NEXT:    v_mul_lo_u32 v55, v10, v264186; GFX12-GISEL-NEXT:    v_mul_lo_u32 v65, v14, v304187; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[48:49], null, v0, v17, v[31:32]4188; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[31:32], null, v2, v19, v[32:33]4189; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[32:33], null, v4, v21, v[33:34]4190; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[33:34], null, v6, v23, v[34:35]4191; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[34:35], null, v8, v25, v[35:36]4192; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[35:36], null, v10, v27, v[36:37]4193; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[36:37], null, v12, v29, v[37:38]4194; GFX12-GISEL-NEXT:    v_mul_lo_u32 v50, v0, v164195; GFX12-GISEL-NEXT:    v_mul_lo_u32 v52, v4, v204196; GFX12-GISEL-NEXT:    v_mul_lo_u32 v54, v8, v244197; GFX12-GISEL-NEXT:    v_mul_lo_u32 v64, v12, v284198; GFX12-GISEL-NEXT:    v_mul_lo_u32 v23, v51, v554199; GFX12-GISEL-NEXT:    v_mul_lo_u32 v27, v53, v654200; GFX12-GISEL-NEXT:    v_mul_hi_u32 v6, v53, v654201; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[7:8], null, v7, v22, v[33:34]4202; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[16:17], null, v1, v16, v[48:49]4203; GFX12-GISEL-NEXT:    v_mul_lo_u32 v21, v50, v544204; GFX12-GISEL-NEXT:    v_mul_lo_u32 v25, v52, v644205; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[8:9], null, v9, v24, v[34:35]4206; GFX12-GISEL-NEXT:    v_mul_hi_u32 v2, v51, v554207; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[17:18], null, v3, v18, v[31:32]4208; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[9:10], null, v11, v26, v[35:36]4209; GFX12-GISEL-NEXT:    v_mul_hi_u32 v3, v23, v274210; GFX12-GISEL-NEXT:    v_mul_hi_u32 v4, v52, v644211; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[18:19], null, v5, v20, v[32:33]4212; GFX12-GISEL-NEXT:    v_mul_hi_u32 v0, v50, v544213; GFX12-GISEL-NEXT:    v_mul_hi_u32 v1, v21, v254214; GFX12-GISEL-NEXT:    s_wait_loadcnt 0x04215; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[37:38], null, v14, v39, v[38:39]4216; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_4)4217; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[14:15], null, v15, v30, v[37:38]4218; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[10:11], null, v13, v28, v[36:37]4219; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[11:12], null, v51, v9, v[2:3]4220; GFX12-GISEL-NEXT:    v_mul_lo_u32 v13, v21, v254221; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[5:6], null, v53, v14, v[6:7]4222; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)4223; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[9:10], null, v52, v10, v[4:5]4224; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[4:5], null, v7, v65, v[5:6]4225; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[5:6], null, v50, v8, v[0:1]4226; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[6:7], null, v17, v55, v[11:12]4227; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)4228; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[7:8], null, v18, v64, v[9:10]4229; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[2:3], null, v23, v4, v[3:4]4230; GFX12-GISEL-NEXT:    v_mul_lo_u32 v8, v23, v274231; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)4232; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[3:4], null, v16, v54, v[5:6]4233; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[0:1], null, v21, v7, v[1:2]4234; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_4)4235; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[1:2], null, v6, v27, v[2:3]4236; GFX12-GISEL-NEXT:    v_mul_hi_u32 v2, v13, v84237; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)4238; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[3:4], null, v3, v25, v[0:1]4239; GFX12-GISEL-NEXT:    v_mul_lo_u32 v0, v13, v84240; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[1:2], null, v13, v1, v[2:3]4241; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)4242; GFX12-GISEL-NEXT:    v_mad_co_u64_u32 v[1:2], null, v3, v8, v[1:2]4243; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]4244entry:4245  %res = call i64 @llvm.vector.reduce.mul.v16i64(<16 x i64> %v)4246  ret i64 %res4247}4248 4249declare i8 @llvm.vector.reduce.mul.v2i8(<2 x i8>)4250declare i8 @llvm.vector.reduce.mul.v3i8(<3 x i8>)4251declare i8 @llvm.vector.reduce.mul.v4i8(<4 x i8>)4252declare i8 @llvm.vector.reduce.mul.v8i8(<8 x i8>)4253declare i8 @llvm.vector.reduce.mul.v16i8(<16 x i8>)4254 4255declare i16 @llvm.vector.reduce.mul.v2i16(<2 x i16>)4256declare i16 @llvm.vector.reduce.mul.v3i16(<3 x i16>)4257declare i16 @llvm.vector.reduce.mul.v4i16(<4 x i16>)4258declare i16 @llvm.vector.reduce.mul.v8i16(<8 x i16>)4259declare i16 @llvm.vector.reduce.mul.v16i16(<16 x i16>)4260 4261declare i32 @llvm.vector.reduce.mul.v2i32(<2 x i32>)4262declare i32 @llvm.vector.reduce.mul.v3i32(<3 x i32>)4263declare i32 @llvm.vector.reduce.mul.v4i32(<4 x i32>)4264declare i32 @llvm.vector.reduce.mul.v8i32(<8 x i32>)4265declare i32 @llvm.vector.reduce.mul.v16i32(<16 x i32>)4266 4267declare i64 @llvm.vector.reduce.mul.v2i64(<2 x i64>)4268declare i64 @llvm.vector.reduce.mul.v3i64(<3 x i64>)4269declare i64 @llvm.vector.reduce.mul.v4i64(<4 x i64>)4270declare i64 @llvm.vector.reduce.mul.v8i64(<8 x i64>)4271declare i64 @llvm.vector.reduce.mul.v16i64(<16 x i64>)4272;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:4273; GFX11-GISEL-FAKE16: {{.*}}4274; GFX12-GISEL-FAKE16: {{.*}}4275