brintos

brintos / llvm-project-archived public Read only

0
0
Text · 167.5 KiB · 4f4e211 Raw
3458 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_add_v2i8(<2 x i8> %v) {21; GFX7-LABEL: test_vector_reduce_add_v2i8:22; GFX7:       ; %bb.0: ; %entry23; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)24; GFX7-NEXT:    v_add_i32_e32 v0, vcc, v0, v125; GFX7-NEXT:    s_setpc_b64 s[30:31]26;27; GFX8-LABEL: test_vector_reduce_add_v2i8:28; GFX8:       ; %bb.0: ; %entry29; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)30; GFX8-NEXT:    v_add_u16_e32 v0, v0, v131; GFX8-NEXT:    s_setpc_b64 s[30:31]32;33; GFX9-LABEL: test_vector_reduce_add_v2i8:34; GFX9:       ; %bb.0: ; %entry35; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)36; GFX9-NEXT:    v_add_u16_e32 v0, v0, v137; GFX9-NEXT:    s_setpc_b64 s[30:31]38;39; GFX10-LABEL: test_vector_reduce_add_v2i8:40; GFX10:       ; %bb.0: ; %entry41; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)42; GFX10-NEXT:    v_add_nc_u16 v0, v0, v143; GFX10-NEXT:    s_setpc_b64 s[30:31]44;45; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_add_v2i8:46; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry47; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)48; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v1.l49; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]50;51; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_add_v2i8:52; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry53; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)54; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v155; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]56;57; GFX11-GISEL-LABEL: test_vector_reduce_add_v2i8:58; GFX11-GISEL:       ; %bb.0: ; %entry59; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)60; GFX11-GISEL-NEXT:    v_add_nc_u16 v0, v0, v161; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]62;63; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_add_v2i8:64; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry65; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x066; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x067; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x068; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x069; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x070; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v1.l71; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]72;73; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_add_v2i8:74; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry75; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x076; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x077; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x078; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x079; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x080; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v181; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]82;83; GFX12-GISEL-LABEL: test_vector_reduce_add_v2i8:84; GFX12-GISEL:       ; %bb.0: ; %entry85; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x086; GFX12-GISEL-NEXT:    s_wait_expcnt 0x087; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x088; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x089; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x090; GFX12-GISEL-NEXT:    v_add_nc_u16 v0, v0, v191; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]92entry:93  %res = call i8 @llvm.vector.reduce.add.v2i8(<2 x i8> %v)94  ret i8 %res95}96 97define i8 @test_vector_reduce_add_v3i8(<3 x i8> %v) {98; GFX7-SDAG-LABEL: test_vector_reduce_add_v3i8:99; GFX7-SDAG:       ; %bb.0: ; %entry100; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)101; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v2102; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v1103; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]104;105; GFX7-GISEL-LABEL: test_vector_reduce_add_v3i8:106; GFX7-GISEL:       ; %bb.0: ; %entry107; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)108; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v1109; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v2110; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]111;112; GFX8-SDAG-LABEL: test_vector_reduce_add_v3i8:113; GFX8-SDAG:       ; %bb.0: ; %entry114; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)115; GFX8-SDAG-NEXT:    v_add_u16_e32 v0, v0, v2116; GFX8-SDAG-NEXT:    v_add_u16_e32 v0, v0, v1117; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]118;119; GFX8-GISEL-LABEL: test_vector_reduce_add_v3i8:120; GFX8-GISEL:       ; %bb.0: ; %entry121; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)122; GFX8-GISEL-NEXT:    v_add_u16_e32 v0, v0, v1123; GFX8-GISEL-NEXT:    v_add_u16_e32 v0, v0, v2124; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]125;126; GFX9-SDAG-LABEL: test_vector_reduce_add_v3i8:127; GFX9-SDAG:       ; %bb.0: ; %entry128; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)129; GFX9-SDAG-NEXT:    v_add_u16_e32 v0, v0, v2130; GFX9-SDAG-NEXT:    v_add_u16_e32 v0, v0, v1131; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]132;133; GFX9-GISEL-LABEL: test_vector_reduce_add_v3i8:134; GFX9-GISEL:       ; %bb.0: ; %entry135; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)136; GFX9-GISEL-NEXT:    v_add_u16_e32 v0, v0, v1137; GFX9-GISEL-NEXT:    v_add_u16_e32 v0, v0, v2138; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]139;140; GFX10-SDAG-LABEL: test_vector_reduce_add_v3i8:141; GFX10-SDAG:       ; %bb.0: ; %entry142; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)143; GFX10-SDAG-NEXT:    v_add_nc_u16 v0, v0, v2144; GFX10-SDAG-NEXT:    v_add_nc_u16 v0, v0, v1145; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]146;147; GFX10-GISEL-LABEL: test_vector_reduce_add_v3i8:148; GFX10-GISEL:       ; %bb.0: ; %entry149; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)150; GFX10-GISEL-NEXT:    v_add_nc_u16 v0, v0, v1151; GFX10-GISEL-NEXT:    v_add_nc_u16 v0, v0, v2152; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]153;154; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_add_v3i8:155; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry156; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)157; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v2.l158; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)159; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v1.l160; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]161;162; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_add_v3i8:163; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry164; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)165; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v2166; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)167; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v1168; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]169;170; GFX11-GISEL-LABEL: test_vector_reduce_add_v3i8:171; GFX11-GISEL:       ; %bb.0: ; %entry172; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)173; GFX11-GISEL-NEXT:    v_add_nc_u16 v0, v0, v1174; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)175; GFX11-GISEL-NEXT:    v_add_nc_u16 v0, v0, v2176; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]177;178; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_add_v3i8:179; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry180; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0181; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x0182; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x0183; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x0184; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x0185; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v2.l186; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)187; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v1.l188; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]189;190; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_add_v3i8:191; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry192; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0193; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x0194; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x0195; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x0196; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x0197; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v2198; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)199; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v1200; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]201;202; GFX12-GISEL-LABEL: test_vector_reduce_add_v3i8:203; GFX12-GISEL:       ; %bb.0: ; %entry204; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0205; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0206; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0207; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0208; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0209; GFX12-GISEL-NEXT:    v_add_nc_u16 v0, v0, v1210; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)211; GFX12-GISEL-NEXT:    v_add_nc_u16 v0, v0, v2212; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]213entry:214  %res = call i8 @llvm.vector.reduce.add.v3i8(<3 x i8> %v)215  ret i8 %res216}217 218define i8 @test_vector_reduce_add_v4i8(<4 x i8> %v) {219; GFX7-SDAG-LABEL: test_vector_reduce_add_v4i8:220; GFX7-SDAG:       ; %bb.0: ; %entry221; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)222; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v3223; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v2224; GFX7-SDAG-NEXT:    v_lshlrev_b32_e32 v1, 8, v1225; GFX7-SDAG-NEXT:    v_and_b32_e32 v0, 0xff, v0226; GFX7-SDAG-NEXT:    v_or_b32_e32 v0, v0, v1227; GFX7-SDAG-NEXT:    v_and_b32_e32 v1, 0xffff, v0228; GFX7-SDAG-NEXT:    v_bfe_u32 v0, v0, 8, 8229; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v1, v0230; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]231;232; GFX7-GISEL-LABEL: test_vector_reduce_add_v4i8:233; GFX7-GISEL:       ; %bb.0: ; %entry234; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)235; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v2236; GFX7-GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v3237; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v1238; GFX7-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8239; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]240;241; GFX8-SDAG-LABEL: test_vector_reduce_add_v4i8:242; GFX8-SDAG:       ; %bb.0: ; %entry243; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)244; GFX8-SDAG-NEXT:    v_add_u16_sdwa v1, v1, v3 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD245; GFX8-SDAG-NEXT:    v_add_u16_e32 v0, v0, v2246; GFX8-SDAG-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD247; GFX8-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 8, v1248; GFX8-SDAG-NEXT:    v_add_u16_e32 v0, v0, v1249; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]250;251; GFX8-GISEL-LABEL: test_vector_reduce_add_v4i8:252; GFX8-GISEL:       ; %bb.0: ; %entry253; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)254; GFX8-GISEL-NEXT:    v_add_u16_e32 v0, v0, v2255; GFX8-GISEL-NEXT:    v_add_u16_e32 v1, v1, v3256; GFX8-GISEL-NEXT:    v_add_u16_e32 v0, v0, v1257; GFX8-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8258; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]259;260; GFX9-SDAG-LABEL: test_vector_reduce_add_v4i8:261; GFX9-SDAG:       ; %bb.0: ; %entry262; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)263; GFX9-SDAG-NEXT:    v_add_u16_sdwa v1, v1, v3 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD264; GFX9-SDAG-NEXT:    v_add_u16_e32 v0, v0, v2265; GFX9-SDAG-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD266; GFX9-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 8, v1267; GFX9-SDAG-NEXT:    v_add_u16_e32 v0, v0, v1268; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]269;270; GFX9-GISEL-LABEL: test_vector_reduce_add_v4i8:271; GFX9-GISEL:       ; %bb.0: ; %entry272; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)273; GFX9-GISEL-NEXT:    v_add_u16_e32 v0, v0, v2274; GFX9-GISEL-NEXT:    v_add_u16_e32 v1, v1, v3275; GFX9-GISEL-NEXT:    v_add_u16_e32 v0, v0, v1276; GFX9-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8277; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]278;279; GFX10-SDAG-LABEL: test_vector_reduce_add_v4i8:280; GFX10-SDAG:       ; %bb.0: ; %entry281; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)282; GFX10-SDAG-NEXT:    v_add_nc_u16 v1, v1, v3283; GFX10-SDAG-NEXT:    v_add_nc_u16 v0, v0, v2284; GFX10-SDAG-NEXT:    v_mov_b32_e32 v2, 8285; GFX10-SDAG-NEXT:    v_lshlrev_b16 v1, 8, v1286; GFX10-SDAG-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD287; GFX10-SDAG-NEXT:    v_lshrrev_b32_sdwa v1, v2, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0288; GFX10-SDAG-NEXT:    v_add_nc_u16 v0, v0, v1289; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]290;291; GFX10-GISEL-LABEL: test_vector_reduce_add_v4i8:292; GFX10-GISEL:       ; %bb.0: ; %entry293; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)294; GFX10-GISEL-NEXT:    v_add_nc_u16 v0, v0, v2295; GFX10-GISEL-NEXT:    v_add_nc_u16 v1, v1, v3296; GFX10-GISEL-NEXT:    v_add_nc_u16 v0, v0, v1297; GFX10-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8298; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]299;300; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_add_v4i8:301; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry302; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)303; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.h, v1.l, v3.l304; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v2.l305; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.h, 0306; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)307; GFX11-SDAG-TRUE16-NEXT:    v_lshlrev_b16 v1.l, 8, v0.h308; GFX11-SDAG-TRUE16-NEXT:    v_and_b16 v0.l, 0xff, v0.l309; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_4)310; GFX11-SDAG-TRUE16-NEXT:    v_or_b16 v0.l, v0.l, v1.l311; GFX11-SDAG-TRUE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v1312; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)313; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v1.l314; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]315;316; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_add_v4i8:317; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry318; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)319; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v1, v1, v3320; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v2321; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)322; GFX11-SDAG-FAKE16-NEXT:    v_lshlrev_b16 v1, 8, v1323; GFX11-SDAG-FAKE16-NEXT:    v_and_b32_e32 v0, 0xff, v0324; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)325; GFX11-SDAG-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v1326; GFX11-SDAG-FAKE16-NEXT:    v_or_b32_e32 v0, v0, v1327; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)328; GFX11-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v2329; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v1330; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]331;332; GFX11-GISEL-LABEL: test_vector_reduce_add_v4i8:333; GFX11-GISEL:       ; %bb.0: ; %entry334; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)335; GFX11-GISEL-NEXT:    v_add_nc_u16 v0, v0, v2336; GFX11-GISEL-NEXT:    v_add_nc_u16 v1, v1, v3337; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)338; GFX11-GISEL-NEXT:    v_add_nc_u16 v0, v0, v1339; GFX11-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8340; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]341;342; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_add_v4i8:343; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry344; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0345; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x0346; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x0347; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x0348; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x0349; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.h, v1.l, v3.l350; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v2.l351; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.h, 0352; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)353; GFX12-SDAG-TRUE16-NEXT:    v_lshlrev_b16 v1.l, 8, v0.h354; GFX12-SDAG-TRUE16-NEXT:    v_and_b16 v0.l, 0xff, v0.l355; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_4)356; GFX12-SDAG-TRUE16-NEXT:    v_or_b16 v0.l, v0.l, v1.l357; GFX12-SDAG-TRUE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v1358; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)359; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v1.l360; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]361;362; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_add_v4i8:363; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry364; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0365; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x0366; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x0367; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x0368; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x0369; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v1, v1, v3370; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v2371; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)372; GFX12-SDAG-FAKE16-NEXT:    v_lshlrev_b16 v1, 8, v1373; GFX12-SDAG-FAKE16-NEXT:    v_and_b32_e32 v0, 0xff, v0374; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)375; GFX12-SDAG-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v1376; GFX12-SDAG-FAKE16-NEXT:    v_or_b32_e32 v0, v0, v1377; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)378; GFX12-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v2379; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v1380; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]381;382; GFX12-GISEL-LABEL: test_vector_reduce_add_v4i8:383; GFX12-GISEL:       ; %bb.0: ; %entry384; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0385; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0386; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0387; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0388; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0389; GFX12-GISEL-NEXT:    v_add_nc_u16 v0, v0, v2390; GFX12-GISEL-NEXT:    v_add_nc_u16 v1, v1, v3391; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)392; GFX12-GISEL-NEXT:    v_add_nc_u16 v0, v0, v1393; GFX12-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8394; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]395entry:396  %res = call i8 @llvm.vector.reduce.add.v4i8(<4 x i8> %v)397  ret i8 %res398}399 400define i8 @test_vector_reduce_add_v8i8(<8 x i8> %v) {401; GFX7-SDAG-LABEL: test_vector_reduce_add_v8i8:402; GFX7-SDAG:       ; %bb.0: ; %entry403; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)404; GFX7-SDAG-NEXT:    v_add_i32_e32 v2, vcc, v2, v6405; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v4406; GFX7-SDAG-NEXT:    v_add_i32_e32 v3, vcc, v3, v7407; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v5408; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v3409; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v2410; GFX7-SDAG-NEXT:    v_lshlrev_b32_e32 v1, 8, v1411; GFX7-SDAG-NEXT:    v_and_b32_e32 v0, 0xff, v0412; GFX7-SDAG-NEXT:    v_or_b32_e32 v0, v0, v1413; GFX7-SDAG-NEXT:    v_and_b32_e32 v1, 0xffff, v0414; GFX7-SDAG-NEXT:    v_bfe_u32 v0, v0, 8, 8415; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v1, v0416; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]417;418; GFX7-GISEL-LABEL: test_vector_reduce_add_v8i8:419; GFX7-GISEL:       ; %bb.0: ; %entry420; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)421; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v4422; GFX7-GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v5423; GFX7-GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v6424; GFX7-GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v7425; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v2426; GFX7-GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v3427; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v1428; GFX7-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8429; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]430;431; GFX8-SDAG-LABEL: test_vector_reduce_add_v8i8:432; GFX8-SDAG:       ; %bb.0: ; %entry433; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)434; GFX8-SDAG-NEXT:    v_add_u16_e32 v2, v2, v6435; GFX8-SDAG-NEXT:    v_add_u16_e32 v0, v0, v4436; GFX8-SDAG-NEXT:    v_add_u16_e32 v3, v3, v7437; GFX8-SDAG-NEXT:    v_add_u16_e32 v1, v1, v5438; GFX8-SDAG-NEXT:    v_add_u16_sdwa v1, v1, v3 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD439; GFX8-SDAG-NEXT:    v_add_u16_e32 v0, v0, v2440; GFX8-SDAG-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD441; GFX8-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 8, v1442; GFX8-SDAG-NEXT:    v_add_u16_e32 v0, v0, v1443; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]444;445; GFX8-GISEL-LABEL: test_vector_reduce_add_v8i8:446; GFX8-GISEL:       ; %bb.0: ; %entry447; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)448; GFX8-GISEL-NEXT:    v_add_u16_e32 v0, v0, v4449; GFX8-GISEL-NEXT:    v_add_u16_e32 v1, v1, v5450; GFX8-GISEL-NEXT:    v_add_u16_e32 v2, v2, v6451; GFX8-GISEL-NEXT:    v_add_u16_e32 v3, v3, v7452; GFX8-GISEL-NEXT:    v_add_u16_e32 v0, v0, v2453; GFX8-GISEL-NEXT:    v_add_u16_e32 v1, v1, v3454; GFX8-GISEL-NEXT:    v_add_u16_e32 v0, v0, v1455; GFX8-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8456; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]457;458; GFX9-SDAG-LABEL: test_vector_reduce_add_v8i8:459; GFX9-SDAG:       ; %bb.0: ; %entry460; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)461; GFX9-SDAG-NEXT:    v_add_u16_e32 v2, v2, v6462; GFX9-SDAG-NEXT:    v_add_u16_e32 v0, v0, v4463; GFX9-SDAG-NEXT:    v_add_u16_e32 v3, v3, v7464; GFX9-SDAG-NEXT:    v_add_u16_e32 v1, v1, v5465; GFX9-SDAG-NEXT:    v_add_u16_sdwa v1, v1, v3 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD466; GFX9-SDAG-NEXT:    v_add_u16_e32 v0, v0, v2467; GFX9-SDAG-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD468; GFX9-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 8, v1469; GFX9-SDAG-NEXT:    v_add_u16_e32 v0, v0, v1470; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]471;472; GFX9-GISEL-LABEL: test_vector_reduce_add_v8i8:473; GFX9-GISEL:       ; %bb.0: ; %entry474; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)475; GFX9-GISEL-NEXT:    v_add_u16_e32 v0, v0, v4476; GFX9-GISEL-NEXT:    v_add_u16_e32 v1, v1, v5477; GFX9-GISEL-NEXT:    v_add_u16_e32 v2, v2, v6478; GFX9-GISEL-NEXT:    v_add_u16_e32 v3, v3, v7479; GFX9-GISEL-NEXT:    v_add_u16_e32 v0, v0, v2480; GFX9-GISEL-NEXT:    v_add_u16_e32 v1, v1, v3481; GFX9-GISEL-NEXT:    v_add_u16_e32 v0, v0, v1482; GFX9-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8483; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]484;485; GFX10-SDAG-LABEL: test_vector_reduce_add_v8i8:486; GFX10-SDAG:       ; %bb.0: ; %entry487; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)488; GFX10-SDAG-NEXT:    v_add_nc_u16 v3, v3, v7489; GFX10-SDAG-NEXT:    v_add_nc_u16 v1, v1, v5490; GFX10-SDAG-NEXT:    v_add_nc_u16 v2, v2, v6491; GFX10-SDAG-NEXT:    v_add_nc_u16 v0, v0, v4492; GFX10-SDAG-NEXT:    v_add_nc_u16 v1, v1, v3493; GFX10-SDAG-NEXT:    v_add_nc_u16 v0, v0, v2494; GFX10-SDAG-NEXT:    v_mov_b32_e32 v2, 8495; GFX10-SDAG-NEXT:    v_lshlrev_b16 v1, 8, v1496; GFX10-SDAG-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD497; GFX10-SDAG-NEXT:    v_lshrrev_b32_sdwa v1, v2, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0498; GFX10-SDAG-NEXT:    v_add_nc_u16 v0, v0, v1499; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]500;501; GFX10-GISEL-LABEL: test_vector_reduce_add_v8i8:502; GFX10-GISEL:       ; %bb.0: ; %entry503; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)504; GFX10-GISEL-NEXT:    v_add_nc_u16 v0, v0, v4505; GFX10-GISEL-NEXT:    v_add_nc_u16 v1, v1, v5506; GFX10-GISEL-NEXT:    v_add_nc_u16 v2, v2, v6507; GFX10-GISEL-NEXT:    v_add_nc_u16 v3, v3, v7508; GFX10-GISEL-NEXT:    v_add_nc_u16 v0, v0, v2509; GFX10-GISEL-NEXT:    v_add_nc_u16 v1, v1, v3510; GFX10-GISEL-NEXT:    v_add_nc_u16 v0, v0, v1511; GFX10-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8512; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]513;514; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_add_v8i8:515; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry516; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)517; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.h, v2.l, v6.l518; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v1.h, v3.l, v7.l519; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v1.l, v1.l, v5.l520; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v4.l521; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)522; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v1.l, v1.l, v1.h523; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v0.h524; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.h, 0525; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)526; GFX11-SDAG-TRUE16-NEXT:    v_lshlrev_b16 v1.l, 8, v1.l527; GFX11-SDAG-TRUE16-NEXT:    v_and_b16 v0.l, 0xff, v0.l528; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_4)529; GFX11-SDAG-TRUE16-NEXT:    v_or_b16 v0.l, v0.l, v1.l530; GFX11-SDAG-TRUE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v1531; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)532; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v1.l533; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]534;535; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_add_v8i8:536; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry537; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)538; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v3, v3, v7539; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v1, v1, v5540; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v2, v2, v6541; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v4542; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)543; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v1, v1, v3544; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v2545; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)546; GFX11-SDAG-FAKE16-NEXT:    v_lshlrev_b16 v1, 8, v1547; GFX11-SDAG-FAKE16-NEXT:    v_and_b32_e32 v0, 0xff, v0548; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)549; GFX11-SDAG-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v1550; GFX11-SDAG-FAKE16-NEXT:    v_or_b32_e32 v0, v0, v1551; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)552; GFX11-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v2553; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v1554; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]555;556; GFX11-GISEL-LABEL: test_vector_reduce_add_v8i8:557; GFX11-GISEL:       ; %bb.0: ; %entry558; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)559; GFX11-GISEL-NEXT:    v_add_nc_u16 v0, v0, v4560; GFX11-GISEL-NEXT:    v_add_nc_u16 v1, v1, v5561; GFX11-GISEL-NEXT:    v_add_nc_u16 v2, v2, v6562; GFX11-GISEL-NEXT:    v_add_nc_u16 v3, v3, v7563; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)564; GFX11-GISEL-NEXT:    v_add_nc_u16 v0, v0, v2565; GFX11-GISEL-NEXT:    v_add_nc_u16 v1, v1, v3566; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)567; GFX11-GISEL-NEXT:    v_add_nc_u16 v0, v0, v1568; GFX11-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8569; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]570;571; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_add_v8i8:572; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry573; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0574; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x0575; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x0576; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x0577; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x0578; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.h, v2.l, v6.l579; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v1.h, v3.l, v7.l580; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v1.l, v1.l, v5.l581; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v4.l582; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)583; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v1.l, v1.l, v1.h584; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v0.h585; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.h, 0586; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)587; GFX12-SDAG-TRUE16-NEXT:    v_lshlrev_b16 v1.l, 8, v1.l588; GFX12-SDAG-TRUE16-NEXT:    v_and_b16 v0.l, 0xff, v0.l589; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_4)590; GFX12-SDAG-TRUE16-NEXT:    v_or_b16 v0.l, v0.l, v1.l591; GFX12-SDAG-TRUE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v1592; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)593; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v1.l594; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]595;596; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_add_v8i8:597; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry598; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0599; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x0600; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x0601; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x0602; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x0603; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v3, v3, v7604; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v1, v1, v5605; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v2, v2, v6606; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v4607; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)608; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v1, v1, v3609; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v2610; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)611; GFX12-SDAG-FAKE16-NEXT:    v_lshlrev_b16 v1, 8, v1612; GFX12-SDAG-FAKE16-NEXT:    v_and_b32_e32 v0, 0xff, v0613; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)614; GFX12-SDAG-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v1615; GFX12-SDAG-FAKE16-NEXT:    v_or_b32_e32 v0, v0, v1616; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)617; GFX12-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v2618; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v1619; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]620;621; GFX12-GISEL-LABEL: test_vector_reduce_add_v8i8:622; GFX12-GISEL:       ; %bb.0: ; %entry623; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0624; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0625; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0626; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0627; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0628; GFX12-GISEL-NEXT:    v_add_nc_u16 v0, v0, v4629; GFX12-GISEL-NEXT:    v_add_nc_u16 v1, v1, v5630; GFX12-GISEL-NEXT:    v_add_nc_u16 v2, v2, v6631; GFX12-GISEL-NEXT:    v_add_nc_u16 v3, v3, v7632; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)633; GFX12-GISEL-NEXT:    v_add_nc_u16 v0, v0, v2634; GFX12-GISEL-NEXT:    v_add_nc_u16 v1, v1, v3635; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)636; GFX12-GISEL-NEXT:    v_add_nc_u16 v0, v0, v1637; GFX12-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8638; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]639entry:640  %res = call i8 @llvm.vector.reduce.add.v8i8(<8 x i8> %v)641  ret i8 %res642}643 644define i8 @test_vector_reduce_add_v16i8(<16 x i8> %v) {645; GFX7-SDAG-LABEL: test_vector_reduce_add_v16i8:646; GFX7-SDAG:       ; %bb.0: ; %entry647; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)648; GFX7-SDAG-NEXT:    v_add_i32_e32 v5, vcc, v5, v13649; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v9650; GFX7-SDAG-NEXT:    v_add_i32_e32 v7, vcc, v7, v15651; GFX7-SDAG-NEXT:    v_add_i32_e32 v3, vcc, v3, v11652; GFX7-SDAG-NEXT:    v_add_i32_e32 v4, vcc, v4, v12653; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v8654; GFX7-SDAG-NEXT:    v_add_i32_e32 v6, vcc, v6, v14655; GFX7-SDAG-NEXT:    v_add_i32_e32 v2, vcc, v2, v10656; GFX7-SDAG-NEXT:    v_add_i32_e32 v2, vcc, v2, v6657; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v4658; GFX7-SDAG-NEXT:    v_add_i32_e32 v3, vcc, v3, v7659; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v5660; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v3661; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v2662; GFX7-SDAG-NEXT:    v_lshlrev_b32_e32 v1, 8, v1663; GFX7-SDAG-NEXT:    v_and_b32_e32 v0, 0xff, v0664; GFX7-SDAG-NEXT:    v_or_b32_e32 v0, v0, v1665; GFX7-SDAG-NEXT:    v_and_b32_e32 v1, 0xffff, v0666; GFX7-SDAG-NEXT:    v_bfe_u32 v0, v0, 8, 8667; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v1, v0668; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]669;670; GFX7-GISEL-LABEL: test_vector_reduce_add_v16i8:671; GFX7-GISEL:       ; %bb.0: ; %entry672; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)673; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v8674; GFX7-GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v9675; GFX7-GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v10676; GFX7-GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v11677; GFX7-GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v12678; GFX7-GISEL-NEXT:    v_add_i32_e32 v5, vcc, v5, v13679; GFX7-GISEL-NEXT:    v_add_i32_e32 v6, vcc, v6, v14680; GFX7-GISEL-NEXT:    v_add_i32_e32 v7, vcc, v7, v15681; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v4682; GFX7-GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v5683; GFX7-GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v6684; GFX7-GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v7685; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v2686; GFX7-GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v3687; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v1688; GFX7-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8689; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]690;691; GFX8-SDAG-LABEL: test_vector_reduce_add_v16i8:692; GFX8-SDAG:       ; %bb.0: ; %entry693; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)694; GFX8-SDAG-NEXT:    v_add_u16_e32 v5, v5, v13695; GFX8-SDAG-NEXT:    v_add_u16_e32 v1, v1, v9696; GFX8-SDAG-NEXT:    v_add_u16_e32 v7, v7, v15697; GFX8-SDAG-NEXT:    v_add_u16_e32 v3, v3, v11698; GFX8-SDAG-NEXT:    v_add_u16_e32 v4, v4, v12699; GFX8-SDAG-NEXT:    v_add_u16_e32 v0, v0, v8700; GFX8-SDAG-NEXT:    v_add_u16_e32 v6, v6, v14701; GFX8-SDAG-NEXT:    v_add_u16_e32 v2, v2, v10702; GFX8-SDAG-NEXT:    v_add_u16_e32 v2, v2, v6703; GFX8-SDAG-NEXT:    v_add_u16_e32 v0, v0, v4704; GFX8-SDAG-NEXT:    v_add_u16_e32 v3, v3, v7705; GFX8-SDAG-NEXT:    v_add_u16_e32 v1, v1, v5706; GFX8-SDAG-NEXT:    v_add_u16_sdwa v1, v1, v3 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD707; GFX8-SDAG-NEXT:    v_add_u16_e32 v0, v0, v2708; GFX8-SDAG-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD709; GFX8-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 8, v1710; GFX8-SDAG-NEXT:    v_add_u16_e32 v0, v0, v1711; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]712;713; GFX8-GISEL-LABEL: test_vector_reduce_add_v16i8:714; GFX8-GISEL:       ; %bb.0: ; %entry715; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)716; GFX8-GISEL-NEXT:    v_add_u16_e32 v0, v0, v8717; GFX8-GISEL-NEXT:    v_add_u16_e32 v1, v1, v9718; GFX8-GISEL-NEXT:    v_add_u16_e32 v2, v2, v10719; GFX8-GISEL-NEXT:    v_add_u16_e32 v3, v3, v11720; GFX8-GISEL-NEXT:    v_add_u16_e32 v4, v4, v12721; GFX8-GISEL-NEXT:    v_add_u16_e32 v5, v5, v13722; GFX8-GISEL-NEXT:    v_add_u16_e32 v6, v6, v14723; GFX8-GISEL-NEXT:    v_add_u16_e32 v7, v7, v15724; GFX8-GISEL-NEXT:    v_add_u16_e32 v0, v0, v4725; GFX8-GISEL-NEXT:    v_add_u16_e32 v1, v1, v5726; GFX8-GISEL-NEXT:    v_add_u16_e32 v2, v2, v6727; GFX8-GISEL-NEXT:    v_add_u16_e32 v3, v3, v7728; GFX8-GISEL-NEXT:    v_add_u16_e32 v0, v0, v2729; GFX8-GISEL-NEXT:    v_add_u16_e32 v1, v1, v3730; GFX8-GISEL-NEXT:    v_add_u16_e32 v0, v0, v1731; GFX8-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8732; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]733;734; GFX9-SDAG-LABEL: test_vector_reduce_add_v16i8:735; GFX9-SDAG:       ; %bb.0: ; %entry736; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)737; GFX9-SDAG-NEXT:    v_add_u16_e32 v5, v5, v13738; GFX9-SDAG-NEXT:    v_add_u16_e32 v1, v1, v9739; GFX9-SDAG-NEXT:    v_add_u16_e32 v7, v7, v15740; GFX9-SDAG-NEXT:    v_add_u16_e32 v3, v3, v11741; GFX9-SDAG-NEXT:    v_add_u16_e32 v4, v4, v12742; GFX9-SDAG-NEXT:    v_add_u16_e32 v0, v0, v8743; GFX9-SDAG-NEXT:    v_add_u16_e32 v6, v6, v14744; GFX9-SDAG-NEXT:    v_add_u16_e32 v2, v2, v10745; GFX9-SDAG-NEXT:    v_add_u16_e32 v2, v2, v6746; GFX9-SDAG-NEXT:    v_add_u16_e32 v0, v0, v4747; GFX9-SDAG-NEXT:    v_add_u16_e32 v3, v3, v7748; GFX9-SDAG-NEXT:    v_add_u16_e32 v1, v1, v5749; GFX9-SDAG-NEXT:    v_add_u16_sdwa v1, v1, v3 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD750; GFX9-SDAG-NEXT:    v_add_u16_e32 v0, v0, v2751; GFX9-SDAG-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD752; GFX9-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 8, v1753; GFX9-SDAG-NEXT:    v_add_u16_e32 v0, v0, v1754; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]755;756; GFX9-GISEL-LABEL: test_vector_reduce_add_v16i8:757; GFX9-GISEL:       ; %bb.0: ; %entry758; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)759; GFX9-GISEL-NEXT:    v_add_u16_e32 v0, v0, v8760; GFX9-GISEL-NEXT:    v_add_u16_e32 v1, v1, v9761; GFX9-GISEL-NEXT:    v_add_u16_e32 v2, v2, v10762; GFX9-GISEL-NEXT:    v_add_u16_e32 v3, v3, v11763; GFX9-GISEL-NEXT:    v_add_u16_e32 v4, v4, v12764; GFX9-GISEL-NEXT:    v_add_u16_e32 v5, v5, v13765; GFX9-GISEL-NEXT:    v_add_u16_e32 v6, v6, v14766; GFX9-GISEL-NEXT:    v_add_u16_e32 v7, v7, v15767; GFX9-GISEL-NEXT:    v_add_u16_e32 v0, v0, v4768; GFX9-GISEL-NEXT:    v_add_u16_e32 v1, v1, v5769; GFX9-GISEL-NEXT:    v_add_u16_e32 v2, v2, v6770; GFX9-GISEL-NEXT:    v_add_u16_e32 v3, v3, v7771; GFX9-GISEL-NEXT:    v_add_u16_e32 v0, v0, v2772; GFX9-GISEL-NEXT:    v_add_u16_e32 v1, v1, v3773; GFX9-GISEL-NEXT:    v_add_u16_e32 v0, v0, v1774; GFX9-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8775; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]776;777; GFX10-SDAG-LABEL: test_vector_reduce_add_v16i8:778; GFX10-SDAG:       ; %bb.0: ; %entry779; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)780; GFX10-SDAG-NEXT:    v_add_nc_u16 v5, v5, v13781; GFX10-SDAG-NEXT:    v_add_nc_u16 v7, v7, v15782; GFX10-SDAG-NEXT:    v_add_nc_u16 v3, v3, v11783; GFX10-SDAG-NEXT:    v_add_nc_u16 v1, v1, v9784; GFX10-SDAG-NEXT:    v_add_nc_u16 v4, v4, v12785; GFX10-SDAG-NEXT:    v_add_nc_u16 v6, v6, v14786; GFX10-SDAG-NEXT:    v_add_nc_u16 v2, v2, v10787; GFX10-SDAG-NEXT:    v_add_nc_u16 v3, v3, v7788; GFX10-SDAG-NEXT:    v_add_nc_u16 v1, v1, v5789; GFX10-SDAG-NEXT:    v_add_nc_u16 v0, v0, v8790; GFX10-SDAG-NEXT:    v_add_nc_u16 v2, v2, v6791; GFX10-SDAG-NEXT:    v_add_nc_u16 v1, v1, v3792; GFX10-SDAG-NEXT:    v_add_nc_u16 v0, v0, v4793; GFX10-SDAG-NEXT:    v_lshlrev_b16 v1, 8, v1794; GFX10-SDAG-NEXT:    v_add_nc_u16 v0, v0, v2795; GFX10-SDAG-NEXT:    v_mov_b32_e32 v2, 8796; GFX10-SDAG-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD797; GFX10-SDAG-NEXT:    v_lshrrev_b32_sdwa v1, v2, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0798; GFX10-SDAG-NEXT:    v_add_nc_u16 v0, v0, v1799; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]800;801; GFX10-GISEL-LABEL: test_vector_reduce_add_v16i8:802; GFX10-GISEL:       ; %bb.0: ; %entry803; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)804; GFX10-GISEL-NEXT:    v_add_nc_u16 v0, v0, v8805; GFX10-GISEL-NEXT:    v_add_nc_u16 v1, v1, v9806; GFX10-GISEL-NEXT:    v_add_nc_u16 v2, v2, v10807; GFX10-GISEL-NEXT:    v_add_nc_u16 v3, v3, v11808; GFX10-GISEL-NEXT:    v_add_nc_u16 v4, v4, v12809; GFX10-GISEL-NEXT:    v_add_nc_u16 v5, v5, v13810; GFX10-GISEL-NEXT:    v_add_nc_u16 v6, v6, v14811; GFX10-GISEL-NEXT:    v_add_nc_u16 v7, v7, v15812; GFX10-GISEL-NEXT:    v_add_nc_u16 v0, v0, v4813; GFX10-GISEL-NEXT:    v_add_nc_u16 v1, v1, v5814; GFX10-GISEL-NEXT:    v_add_nc_u16 v2, v2, v6815; GFX10-GISEL-NEXT:    v_add_nc_u16 v3, v3, v7816; GFX10-GISEL-NEXT:    v_add_nc_u16 v0, v0, v2817; GFX10-GISEL-NEXT:    v_add_nc_u16 v1, v1, v3818; GFX10-GISEL-NEXT:    v_add_nc_u16 v0, v0, v1819; GFX10-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8820; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]821;822; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_add_v16i8:823; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry824; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)825; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v1.h, v5.l, v13.l826; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v1.l, v1.l, v9.l827; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v5.l, v7.l, v15.l828; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.h, v6.l, v14.l829; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v2.l, v2.l, v10.l830; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v2.h, v3.l, v11.l831; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v3.l, v4.l, v12.l832; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v8.l833; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v1.l, v1.l, v1.h834; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.h, v2.l, v0.h835; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v2.l, v2.h, v5.l836; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.h, 0837; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v3.l838; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)839; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v1.l, v1.l, v2.l840; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v0.h841; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)842; GFX11-SDAG-TRUE16-NEXT:    v_lshlrev_b16 v1.l, 8, v1.l843; GFX11-SDAG-TRUE16-NEXT:    v_and_b16 v0.l, 0xff, v0.l844; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)845; GFX11-SDAG-TRUE16-NEXT:    v_or_b16 v0.l, v0.l, v1.l846; GFX11-SDAG-TRUE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v1847; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v1.l848; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]849;850; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_add_v16i8:851; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry852; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)853; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v5, v5, v13854; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v1, v1, v9855; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v7, v7, v15856; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v3, v3, v11857; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v4, v4, v12858; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v8859; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v6, v6, v14860; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v2, v2, v10861; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v3, v3, v7862; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v1, v1, v5863; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v4864; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)865; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v2, v2, v6866; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v1, v1, v3867; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)868; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v2869; GFX11-SDAG-FAKE16-NEXT:    v_lshlrev_b16 v1, 8, v1870; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)871; GFX11-SDAG-FAKE16-NEXT:    v_and_b32_e32 v0, 0xff, v0872; GFX11-SDAG-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v1873; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)874; GFX11-SDAG-FAKE16-NEXT:    v_or_b32_e32 v0, v0, v1875; GFX11-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v2876; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)877; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v1878; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]879;880; GFX11-GISEL-LABEL: test_vector_reduce_add_v16i8:881; GFX11-GISEL:       ; %bb.0: ; %entry882; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)883; GFX11-GISEL-NEXT:    v_add_nc_u16 v0, v0, v8884; GFX11-GISEL-NEXT:    v_add_nc_u16 v1, v1, v9885; GFX11-GISEL-NEXT:    v_add_nc_u16 v2, v2, v10886; GFX11-GISEL-NEXT:    v_add_nc_u16 v3, v3, v11887; GFX11-GISEL-NEXT:    v_add_nc_u16 v4, v4, v12888; GFX11-GISEL-NEXT:    v_add_nc_u16 v5, v5, v13889; GFX11-GISEL-NEXT:    v_add_nc_u16 v6, v6, v14890; GFX11-GISEL-NEXT:    v_add_nc_u16 v7, v7, v15891; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)892; GFX11-GISEL-NEXT:    v_add_nc_u16 v0, v0, v4893; GFX11-GISEL-NEXT:    v_add_nc_u16 v1, v1, v5894; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)895; GFX11-GISEL-NEXT:    v_add_nc_u16 v2, v2, v6896; GFX11-GISEL-NEXT:    v_add_nc_u16 v3, v3, v7897; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)898; GFX11-GISEL-NEXT:    v_add_nc_u16 v0, v0, v2899; GFX11-GISEL-NEXT:    v_add_nc_u16 v1, v1, v3900; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)901; GFX11-GISEL-NEXT:    v_add_nc_u16 v0, v0, v1902; GFX11-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8903; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]904;905; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_add_v16i8:906; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry907; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0908; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x0909; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x0910; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x0911; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x0912; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v1.h, v5.l, v13.l913; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v1.l, v1.l, v9.l914; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v5.l, v7.l, v15.l915; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.h, v6.l, v14.l916; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v2.l, v2.l, v10.l917; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v2.h, v3.l, v11.l918; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v3.l, v4.l, v12.l919; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v8.l920; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v1.l, v1.l, v1.h921; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.h, v2.l, v0.h922; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v2.l, v2.h, v5.l923; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.h, 0924; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v3.l925; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)926; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v1.l, v1.l, v2.l927; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v0.h928; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)929; GFX12-SDAG-TRUE16-NEXT:    v_lshlrev_b16 v1.l, 8, v1.l930; GFX12-SDAG-TRUE16-NEXT:    v_and_b16 v0.l, 0xff, v0.l931; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)932; GFX12-SDAG-TRUE16-NEXT:    v_or_b16 v0.l, v0.l, v1.l933; GFX12-SDAG-TRUE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v1934; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v1.l935; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]936;937; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_add_v16i8:938; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry939; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0940; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x0941; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x0942; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x0943; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x0944; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v5, v5, v13945; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v1, v1, v9946; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v7, v7, v15947; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v3, v3, v11948; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v4, v4, v12949; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v8950; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v6, v6, v14951; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v2, v2, v10952; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v3, v3, v7953; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v1, v1, v5954; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v4955; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)956; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v2, v2, v6957; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v1, v1, v3958; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)959; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v2960; GFX12-SDAG-FAKE16-NEXT:    v_lshlrev_b16 v1, 8, v1961; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)962; GFX12-SDAG-FAKE16-NEXT:    v_and_b32_e32 v0, 0xff, v0963; GFX12-SDAG-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v1964; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)965; GFX12-SDAG-FAKE16-NEXT:    v_or_b32_e32 v0, v0, v1966; GFX12-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v2967; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)968; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v1969; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]970;971; GFX12-GISEL-LABEL: test_vector_reduce_add_v16i8:972; GFX12-GISEL:       ; %bb.0: ; %entry973; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0974; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0975; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0976; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0977; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0978; GFX12-GISEL-NEXT:    v_add_nc_u16 v0, v0, v8979; GFX12-GISEL-NEXT:    v_add_nc_u16 v1, v1, v9980; GFX12-GISEL-NEXT:    v_add_nc_u16 v2, v2, v10981; GFX12-GISEL-NEXT:    v_add_nc_u16 v3, v3, v11982; GFX12-GISEL-NEXT:    v_add_nc_u16 v4, v4, v12983; GFX12-GISEL-NEXT:    v_add_nc_u16 v5, v5, v13984; GFX12-GISEL-NEXT:    v_add_nc_u16 v6, v6, v14985; GFX12-GISEL-NEXT:    v_add_nc_u16 v7, v7, v15986; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)987; GFX12-GISEL-NEXT:    v_add_nc_u16 v0, v0, v4988; GFX12-GISEL-NEXT:    v_add_nc_u16 v1, v1, v5989; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)990; GFX12-GISEL-NEXT:    v_add_nc_u16 v2, v2, v6991; GFX12-GISEL-NEXT:    v_add_nc_u16 v3, v3, v7992; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)993; GFX12-GISEL-NEXT:    v_add_nc_u16 v0, v0, v2994; GFX12-GISEL-NEXT:    v_add_nc_u16 v1, v1, v3995; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)996; GFX12-GISEL-NEXT:    v_add_nc_u16 v0, v0, v1997; GFX12-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 8998; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]999entry:1000  %res = call i8 @llvm.vector.reduce.add.v16i8(<16 x i8> %v)1001  ret i8 %res1002}1003 1004define i16 @test_vector_reduce_add_v2i16(<2 x i16> %v) {1005; GFX7-SDAG-LABEL: test_vector_reduce_add_v2i16:1006; GFX7-SDAG:       ; %bb.0: ; %entry1007; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1008; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v11009; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]1010;1011; GFX7-GISEL-LABEL: test_vector_reduce_add_v2i16:1012; GFX7-GISEL:       ; %bb.0: ; %entry1013; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1014; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v11015; GFX7-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 161016; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]1017;1018; GFX8-SDAG-LABEL: test_vector_reduce_add_v2i16:1019; GFX8-SDAG:       ; %bb.0: ; %entry1020; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1021; GFX8-SDAG-NEXT:    v_add_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11022; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]1023;1024; GFX8-GISEL-LABEL: test_vector_reduce_add_v2i16:1025; GFX8-GISEL:       ; %bb.0: ; %entry1026; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1027; GFX8-GISEL-NEXT:    s_and_b32 s4, 0xffff, s41028; GFX8-GISEL-NEXT:    v_add_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11029; GFX8-GISEL-NEXT:    s_lshl_b32 s4, s4, 161030; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, s4, v01031; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]1032;1033; GFX9-SDAG-LABEL: test_vector_reduce_add_v2i16:1034; GFX9-SDAG:       ; %bb.0: ; %entry1035; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1036; GFX9-SDAG-NEXT:    v_add_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11037; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]1038;1039; GFX9-GISEL-LABEL: test_vector_reduce_add_v2i16:1040; GFX9-GISEL:       ; %bb.0: ; %entry1041; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1042; GFX9-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01043; GFX9-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11044; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]1045;1046; GFX10-SDAG-LABEL: test_vector_reduce_add_v2i16:1047; GFX10-SDAG:       ; %bb.0: ; %entry1048; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1049; GFX10-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 16, v01050; GFX10-SDAG-NEXT:    v_add_nc_u16 v0, v0, v11051; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]1052;1053; GFX10-GISEL-LABEL: test_vector_reduce_add_v2i16:1054; GFX10-GISEL:       ; %bb.0: ; %entry1055; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1056; GFX10-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01057; GFX10-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11058; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]1059;1060; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_add_v2i16:1061; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry1062; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1063; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v0.h1064; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1065;1066; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_add_v2i16:1067; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry1068; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1069; GFX11-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v01070; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1071; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v11072; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1073;1074; GFX11-GISEL-LABEL: test_vector_reduce_add_v2i16:1075; GFX11-GISEL:       ; %bb.0: ; %entry1076; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1077; GFX11-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01078; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1079; GFX11-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11080; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]1081;1082; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_add_v2i16:1083; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry1084; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x01085; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x01086; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x01087; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x01088; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x01089; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v0.h1090; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1091;1092; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_add_v2i16:1093; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry1094; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x01095; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x01096; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x01097; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x01098; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x01099; GFX12-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v01100; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1101; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v11102; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1103;1104; GFX12-GISEL-LABEL: test_vector_reduce_add_v2i16:1105; GFX12-GISEL:       ; %bb.0: ; %entry1106; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x01107; GFX12-GISEL-NEXT:    s_wait_expcnt 0x01108; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x01109; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x01110; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x01111; GFX12-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01112; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1113; GFX12-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11114; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]1115entry:1116  %res = call i16 @llvm.vector.reduce.add.v2i16(<2 x i16> %v)1117  ret i16 %res1118}1119 1120define i16 @test_vector_reduce_add_v3i16(<3 x i16> %v) {1121; GFX7-SDAG-LABEL: test_vector_reduce_add_v3i16:1122; GFX7-SDAG:       ; %bb.0: ; %entry1123; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1124; GFX7-SDAG-NEXT:    v_lshlrev_b32_e32 v3, 16, v11125; GFX7-SDAG-NEXT:    v_and_b32_e32 v0, 0xffff, v01126; GFX7-SDAG-NEXT:    v_or_b32_e32 v0, v0, v31127; GFX7-SDAG-NEXT:    v_and_b32_e32 v2, 0xffff, v21128; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v21129; GFX7-SDAG-NEXT:    v_and_b32_e32 v1, 0xffff, v11130; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v11131; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]1132;1133; GFX7-GISEL-LABEL: test_vector_reduce_add_v3i16:1134; GFX7-GISEL:       ; %bb.0: ; %entry1135; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1136; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v11137; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v21138; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]1139;1140; GFX8-LABEL: test_vector_reduce_add_v3i16:1141; GFX8:       ; %bb.0: ; %entry1142; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1143; GFX8-NEXT:    v_add_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11144; GFX8-NEXT:    v_add_u16_e32 v0, v0, v11145; GFX8-NEXT:    s_setpc_b64 s[30:31]1146;1147; GFX9-SDAG-LABEL: test_vector_reduce_add_v3i16:1148; GFX9-SDAG:       ; %bb.0: ; %entry1149; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1150; GFX9-SDAG-NEXT:    v_pk_add_u16 v1, v0, v11151; GFX9-SDAG-NEXT:    s_nop 01152; GFX9-SDAG-NEXT:    v_add_u16_sdwa v0, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11153; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]1154;1155; GFX9-GISEL-LABEL: test_vector_reduce_add_v3i16:1156; GFX9-GISEL:       ; %bb.0: ; %entry1157; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1158; GFX9-GISEL-NEXT:    v_add_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11159; GFX9-GISEL-NEXT:    v_add_u16_e32 v0, v0, v11160; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]1161;1162; GFX10-SDAG-LABEL: test_vector_reduce_add_v3i16:1163; GFX10-SDAG:       ; %bb.0: ; %entry1164; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1165; GFX10-SDAG-NEXT:    v_lshrrev_b32_e32 v2, 16, v01166; GFX10-SDAG-NEXT:    v_pk_add_u16 v0, v0, v11167; GFX10-SDAG-NEXT:    v_add_nc_u16 v0, v0, v21168; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]1169;1170; GFX10-GISEL-LABEL: test_vector_reduce_add_v3i16:1171; GFX10-GISEL:       ; %bb.0: ; %entry1172; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1173; GFX10-GISEL-NEXT:    v_lshrrev_b32_e32 v2, 16, v01174; GFX10-GISEL-NEXT:    v_add_nc_u16 v0, v0, v21175; GFX10-GISEL-NEXT:    v_add_nc_u16 v0, v0, v11176; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]1177;1178; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_add_v3i16:1179; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry1180; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1181; GFX11-SDAG-TRUE16-NEXT:    v_pk_add_u16 v1, v0, v11182; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1183; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v1.l, v0.h1184; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1185;1186; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_add_v3i16:1187; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry1188; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1189; GFX11-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v01190; GFX11-SDAG-FAKE16-NEXT:    v_pk_add_u16 v0, v0, v11191; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1192; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v21193; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1194;1195; GFX11-GISEL-LABEL: test_vector_reduce_add_v3i16:1196; GFX11-GISEL:       ; %bb.0: ; %entry1197; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1198; GFX11-GISEL-NEXT:    v_lshrrev_b32_e32 v2, 16, v01199; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1200; GFX11-GISEL-NEXT:    v_add_nc_u16 v0, v0, v21201; GFX11-GISEL-NEXT:    v_add_nc_u16 v0, v0, v11202; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]1203;1204; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_add_v3i16:1205; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry1206; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x01207; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x01208; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x01209; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x01210; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x01211; GFX12-SDAG-TRUE16-NEXT:    v_pk_add_u16 v1, v0, v11212; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1213; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v1.l, v0.h1214; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1215;1216; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_add_v3i16:1217; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry1218; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x01219; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x01220; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x01221; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x01222; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x01223; GFX12-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v01224; GFX12-SDAG-FAKE16-NEXT:    v_pk_add_u16 v0, v0, v11225; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1226; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v21227; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1228;1229; GFX12-GISEL-LABEL: test_vector_reduce_add_v3i16:1230; GFX12-GISEL:       ; %bb.0: ; %entry1231; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x01232; GFX12-GISEL-NEXT:    s_wait_expcnt 0x01233; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x01234; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x01235; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x01236; GFX12-GISEL-NEXT:    v_lshrrev_b32_e32 v2, 16, v01237; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1238; GFX12-GISEL-NEXT:    v_add_nc_u16 v0, v0, v21239; GFX12-GISEL-NEXT:    v_add_nc_u16 v0, v0, v11240; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]1241entry:1242  %res = call i16 @llvm.vector.reduce.add.v3i16(<3 x i16> %v)1243  ret i16 %res1244}1245 1246define i16 @test_vector_reduce_add_v4i16(<4 x i16> %v) {1247; GFX7-SDAG-LABEL: test_vector_reduce_add_v4i16:1248; GFX7-SDAG:       ; %bb.0: ; %entry1249; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1250; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v31251; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v21252; GFX7-SDAG-NEXT:    v_lshlrev_b32_e32 v3, 16, v11253; GFX7-SDAG-NEXT:    v_and_b32_e32 v0, 0xffff, v01254; GFX7-SDAG-NEXT:    v_or_b32_e32 v0, v0, v31255; GFX7-SDAG-NEXT:    v_and_b32_e32 v1, 0xffff, v11256; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v11257; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]1258;1259; GFX7-GISEL-LABEL: test_vector_reduce_add_v4i16:1260; GFX7-GISEL:       ; %bb.0: ; %entry1261; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1262; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v21263; GFX7-GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v31264; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v11265; GFX7-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 161266; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]1267;1268; GFX8-SDAG-LABEL: test_vector_reduce_add_v4i16:1269; GFX8-SDAG:       ; %bb.0: ; %entry1270; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1271; GFX8-SDAG-NEXT:    v_add_u16_sdwa v2, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11272; GFX8-SDAG-NEXT:    v_add_u16_e32 v0, v0, v11273; GFX8-SDAG-NEXT:    v_add_u16_e32 v0, v0, v21274; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]1275;1276; GFX8-GISEL-LABEL: test_vector_reduce_add_v4i16:1277; GFX8-GISEL:       ; %bb.0: ; %entry1278; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1279; GFX8-GISEL-NEXT:    v_add_u16_e32 v2, v0, v11280; GFX8-GISEL-NEXT:    v_add_u16_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11281; GFX8-GISEL-NEXT:    s_and_b32 s4, 0xffff, s41282; GFX8-GISEL-NEXT:    v_add_u16_e32 v0, v2, v01283; GFX8-GISEL-NEXT:    s_lshl_b32 s4, s4, 161284; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, s4, v01285; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]1286;1287; GFX9-SDAG-LABEL: test_vector_reduce_add_v4i16:1288; GFX9-SDAG:       ; %bb.0: ; %entry1289; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1290; GFX9-SDAG-NEXT:    v_pk_add_u16 v0, v0, v11291; GFX9-SDAG-NEXT:    s_nop 01292; GFX9-SDAG-NEXT:    v_add_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11293; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]1294;1295; GFX9-GISEL-LABEL: test_vector_reduce_add_v4i16:1296; GFX9-GISEL:       ; %bb.0: ; %entry1297; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1298; GFX9-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11299; GFX9-GISEL-NEXT:    s_nop 01300; GFX9-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01301; GFX9-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11302; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]1303;1304; GFX10-SDAG-LABEL: test_vector_reduce_add_v4i16:1305; GFX10-SDAG:       ; %bb.0: ; %entry1306; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1307; GFX10-SDAG-NEXT:    v_pk_add_u16 v0, v0, v11308; GFX10-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 16, v01309; GFX10-SDAG-NEXT:    v_add_nc_u16 v0, v0, v11310; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]1311;1312; GFX10-GISEL-LABEL: test_vector_reduce_add_v4i16:1313; GFX10-GISEL:       ; %bb.0: ; %entry1314; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1315; GFX10-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11316; GFX10-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01317; GFX10-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11318; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]1319;1320; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_add_v4i16:1321; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry1322; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1323; GFX11-SDAG-TRUE16-NEXT:    v_pk_add_u16 v0, v0, v11324; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1325; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v0.h1326; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1327;1328; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_add_v4i16:1329; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry1330; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1331; GFX11-SDAG-FAKE16-NEXT:    v_pk_add_u16 v0, v0, v11332; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1333; GFX11-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v01334; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v11335; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1336;1337; GFX11-GISEL-LABEL: test_vector_reduce_add_v4i16:1338; GFX11-GISEL:       ; %bb.0: ; %entry1339; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1340; GFX11-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11341; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1342; GFX11-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01343; GFX11-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11344; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]1345;1346; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_add_v4i16:1347; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry1348; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x01349; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x01350; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x01351; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x01352; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x01353; GFX12-SDAG-TRUE16-NEXT:    v_pk_add_u16 v0, v0, v11354; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1355; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v0.h1356; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1357;1358; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_add_v4i16:1359; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry1360; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x01361; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x01362; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x01363; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x01364; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x01365; GFX12-SDAG-FAKE16-NEXT:    v_pk_add_u16 v0, v0, v11366; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1367; GFX12-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v01368; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v11369; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1370;1371; GFX12-GISEL-LABEL: test_vector_reduce_add_v4i16:1372; GFX12-GISEL:       ; %bb.0: ; %entry1373; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x01374; GFX12-GISEL-NEXT:    s_wait_expcnt 0x01375; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x01376; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x01377; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x01378; GFX12-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11379; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1380; GFX12-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01381; GFX12-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11382; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]1383entry:1384  %res = call i16 @llvm.vector.reduce.add.v4i16(<4 x i16> %v)1385  ret i16 %res1386}1387 1388define i16 @test_vector_reduce_add_v8i16(<8 x i16> %v) {1389; GFX7-SDAG-LABEL: test_vector_reduce_add_v8i16:1390; GFX7-SDAG:       ; %bb.0: ; %entry1391; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1392; GFX7-SDAG-NEXT:    v_add_i32_e32 v2, vcc, v2, v61393; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v41394; GFX7-SDAG-NEXT:    v_add_i32_e32 v3, vcc, v3, v71395; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v51396; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v31397; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v21398; GFX7-SDAG-NEXT:    v_lshlrev_b32_e32 v3, 16, v11399; GFX7-SDAG-NEXT:    v_and_b32_e32 v0, 0xffff, v01400; GFX7-SDAG-NEXT:    v_or_b32_e32 v0, v0, v31401; GFX7-SDAG-NEXT:    v_and_b32_e32 v1, 0xffff, v11402; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v11403; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]1404;1405; GFX7-GISEL-LABEL: test_vector_reduce_add_v8i16:1406; GFX7-GISEL:       ; %bb.0: ; %entry1407; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1408; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v41409; GFX7-GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v51410; GFX7-GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v61411; GFX7-GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v71412; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v21413; GFX7-GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v31414; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v11415; GFX7-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 161416; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]1417;1418; GFX8-SDAG-LABEL: test_vector_reduce_add_v8i16:1419; GFX8-SDAG:       ; %bb.0: ; %entry1420; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1421; GFX8-SDAG-NEXT:    v_add_u16_sdwa v4, v1, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11422; GFX8-SDAG-NEXT:    v_add_u16_sdwa v5, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11423; GFX8-SDAG-NEXT:    v_add_u16_e32 v1, v1, v31424; GFX8-SDAG-NEXT:    v_add_u16_e32 v0, v0, v21425; GFX8-SDAG-NEXT:    v_add_u16_e32 v2, v5, v41426; GFX8-SDAG-NEXT:    v_add_u16_e32 v0, v0, v11427; GFX8-SDAG-NEXT:    v_add_u16_e32 v0, v0, v21428; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]1429;1430; GFX8-GISEL-LABEL: test_vector_reduce_add_v8i16:1431; GFX8-GISEL:       ; %bb.0: ; %entry1432; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1433; GFX8-GISEL-NEXT:    v_add_u16_e32 v4, v0, v21434; GFX8-GISEL-NEXT:    v_add_u16_sdwa v0, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11435; GFX8-GISEL-NEXT:    v_add_u16_e32 v2, v1, v31436; GFX8-GISEL-NEXT:    v_add_u16_sdwa v1, v1, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11437; GFX8-GISEL-NEXT:    v_add_u16_e32 v2, v4, v21438; GFX8-GISEL-NEXT:    v_add_u16_e32 v0, v0, v11439; GFX8-GISEL-NEXT:    s_and_b32 s4, 0xffff, s41440; GFX8-GISEL-NEXT:    v_add_u16_e32 v0, v2, v01441; GFX8-GISEL-NEXT:    s_lshl_b32 s4, s4, 161442; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, s4, v01443; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]1444;1445; GFX9-SDAG-LABEL: test_vector_reduce_add_v8i16:1446; GFX9-SDAG:       ; %bb.0: ; %entry1447; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1448; GFX9-SDAG-NEXT:    v_pk_add_u16 v1, v1, v31449; GFX9-SDAG-NEXT:    v_pk_add_u16 v0, v0, v21450; GFX9-SDAG-NEXT:    s_nop 01451; GFX9-SDAG-NEXT:    v_pk_add_u16 v0, v0, v11452; GFX9-SDAG-NEXT:    s_nop 01453; GFX9-SDAG-NEXT:    v_add_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11454; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]1455;1456; GFX9-GISEL-LABEL: test_vector_reduce_add_v8i16:1457; GFX9-GISEL:       ; %bb.0: ; %entry1458; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1459; GFX9-GISEL-NEXT:    v_pk_add_u16 v0, v0, v21460; GFX9-GISEL-NEXT:    v_pk_add_u16 v1, v1, v31461; GFX9-GISEL-NEXT:    s_nop 01462; GFX9-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11463; GFX9-GISEL-NEXT:    s_nop 01464; GFX9-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01465; GFX9-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11466; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]1467;1468; GFX10-SDAG-LABEL: test_vector_reduce_add_v8i16:1469; GFX10-SDAG:       ; %bb.0: ; %entry1470; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1471; GFX10-SDAG-NEXT:    v_pk_add_u16 v1, v1, v31472; GFX10-SDAG-NEXT:    v_pk_add_u16 v0, v0, v21473; GFX10-SDAG-NEXT:    v_pk_add_u16 v0, v0, v11474; GFX10-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 16, v01475; GFX10-SDAG-NEXT:    v_add_nc_u16 v0, v0, v11476; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]1477;1478; GFX10-GISEL-LABEL: test_vector_reduce_add_v8i16:1479; GFX10-GISEL:       ; %bb.0: ; %entry1480; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1481; GFX10-GISEL-NEXT:    v_pk_add_u16 v0, v0, v21482; GFX10-GISEL-NEXT:    v_pk_add_u16 v1, v1, v31483; GFX10-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11484; GFX10-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01485; GFX10-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11486; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]1487;1488; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_add_v8i16:1489; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry1490; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1491; GFX11-SDAG-TRUE16-NEXT:    v_pk_add_u16 v1, v1, v31492; GFX11-SDAG-TRUE16-NEXT:    v_pk_add_u16 v0, v0, v21493; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1494; GFX11-SDAG-TRUE16-NEXT:    v_pk_add_u16 v0, v0, v11495; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v0.h1496; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1497;1498; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_add_v8i16:1499; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry1500; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1501; GFX11-SDAG-FAKE16-NEXT:    v_pk_add_u16 v1, v1, v31502; GFX11-SDAG-FAKE16-NEXT:    v_pk_add_u16 v0, v0, v21503; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1504; GFX11-SDAG-FAKE16-NEXT:    v_pk_add_u16 v0, v0, v11505; GFX11-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v01506; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1507; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v11508; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1509;1510; GFX11-GISEL-LABEL: test_vector_reduce_add_v8i16:1511; GFX11-GISEL:       ; %bb.0: ; %entry1512; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1513; GFX11-GISEL-NEXT:    v_pk_add_u16 v0, v0, v21514; GFX11-GISEL-NEXT:    v_pk_add_u16 v1, v1, v31515; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1516; GFX11-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11517; GFX11-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01518; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1519; GFX11-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11520; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]1521;1522; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_add_v8i16:1523; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry1524; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x01525; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x01526; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x01527; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x01528; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x01529; GFX12-SDAG-TRUE16-NEXT:    v_pk_add_u16 v1, v1, v31530; GFX12-SDAG-TRUE16-NEXT:    v_pk_add_u16 v0, v0, v21531; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1532; GFX12-SDAG-TRUE16-NEXT:    v_pk_add_u16 v0, v0, v11533; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v0.h1534; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1535;1536; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_add_v8i16:1537; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry1538; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x01539; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x01540; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x01541; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x01542; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x01543; GFX12-SDAG-FAKE16-NEXT:    v_pk_add_u16 v1, v1, v31544; GFX12-SDAG-FAKE16-NEXT:    v_pk_add_u16 v0, v0, v21545; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1546; GFX12-SDAG-FAKE16-NEXT:    v_pk_add_u16 v0, v0, v11547; GFX12-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v01548; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1549; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v11550; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1551;1552; GFX12-GISEL-LABEL: test_vector_reduce_add_v8i16:1553; GFX12-GISEL:       ; %bb.0: ; %entry1554; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x01555; GFX12-GISEL-NEXT:    s_wait_expcnt 0x01556; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x01557; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x01558; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x01559; GFX12-GISEL-NEXT:    v_pk_add_u16 v0, v0, v21560; GFX12-GISEL-NEXT:    v_pk_add_u16 v1, v1, v31561; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1562; GFX12-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11563; GFX12-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01564; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1565; GFX12-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11566; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]1567entry:1568  %res = call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> %v)1569  ret i16 %res1570}1571 1572define i16 @test_vector_reduce_add_v16i16(<16 x i16> %v) {1573; GFX7-SDAG-LABEL: test_vector_reduce_add_v16i16:1574; GFX7-SDAG:       ; %bb.0: ; %entry1575; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1576; GFX7-SDAG-NEXT:    v_add_i32_e32 v5, vcc, v5, v131577; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v91578; GFX7-SDAG-NEXT:    v_add_i32_e32 v7, vcc, v7, v151579; GFX7-SDAG-NEXT:    v_add_i32_e32 v3, vcc, v3, v111580; GFX7-SDAG-NEXT:    v_add_i32_e32 v4, vcc, v4, v121581; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v81582; GFX7-SDAG-NEXT:    v_add_i32_e32 v6, vcc, v6, v141583; GFX7-SDAG-NEXT:    v_add_i32_e32 v2, vcc, v2, v101584; GFX7-SDAG-NEXT:    v_add_i32_e32 v2, vcc, v2, v61585; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v41586; GFX7-SDAG-NEXT:    v_add_i32_e32 v3, vcc, v3, v71587; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v51588; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v31589; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v21590; GFX7-SDAG-NEXT:    v_lshlrev_b32_e32 v3, 16, v11591; GFX7-SDAG-NEXT:    v_and_b32_e32 v0, 0xffff, v01592; GFX7-SDAG-NEXT:    v_or_b32_e32 v0, v0, v31593; GFX7-SDAG-NEXT:    v_and_b32_e32 v1, 0xffff, v11594; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v11595; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]1596;1597; GFX7-GISEL-LABEL: test_vector_reduce_add_v16i16:1598; GFX7-GISEL:       ; %bb.0: ; %entry1599; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1600; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v81601; GFX7-GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v91602; GFX7-GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v101603; GFX7-GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v111604; GFX7-GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v121605; GFX7-GISEL-NEXT:    v_add_i32_e32 v5, vcc, v5, v131606; GFX7-GISEL-NEXT:    v_add_i32_e32 v6, vcc, v6, v141607; GFX7-GISEL-NEXT:    v_add_i32_e32 v7, vcc, v7, v151608; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v41609; GFX7-GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v51610; GFX7-GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v61611; GFX7-GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v71612; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v21613; GFX7-GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v31614; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v11615; GFX7-GISEL-NEXT:    v_bfe_u32 v0, v0, 0, 161616; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]1617;1618; GFX8-SDAG-LABEL: test_vector_reduce_add_v16i16:1619; GFX8-SDAG:       ; %bb.0: ; %entry1620; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1621; GFX8-SDAG-NEXT:    v_add_u16_sdwa v8, v2, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11622; GFX8-SDAG-NEXT:    v_add_u16_sdwa v9, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11623; GFX8-SDAG-NEXT:    v_add_u16_sdwa v10, v3, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11624; GFX8-SDAG-NEXT:    v_add_u16_sdwa v11, v1, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11625; GFX8-SDAG-NEXT:    v_add_u16_e32 v2, v2, v61626; GFX8-SDAG-NEXT:    v_add_u16_e32 v0, v0, v41627; GFX8-SDAG-NEXT:    v_add_u16_e32 v3, v3, v71628; GFX8-SDAG-NEXT:    v_add_u16_e32 v1, v1, v51629; GFX8-SDAG-NEXT:    v_add_u16_e32 v4, v11, v101630; GFX8-SDAG-NEXT:    v_add_u16_e32 v5, v9, v81631; GFX8-SDAG-NEXT:    v_add_u16_e32 v1, v1, v31632; GFX8-SDAG-NEXT:    v_add_u16_e32 v0, v0, v21633; GFX8-SDAG-NEXT:    v_add_u16_e32 v2, v5, v41634; GFX8-SDAG-NEXT:    v_add_u16_e32 v0, v0, v11635; GFX8-SDAG-NEXT:    v_add_u16_e32 v0, v0, v21636; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]1637;1638; GFX8-GISEL-LABEL: test_vector_reduce_add_v16i16:1639; GFX8-GISEL:       ; %bb.0: ; %entry1640; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1641; GFX8-GISEL-NEXT:    v_add_u16_e32 v8, v0, v41642; GFX8-GISEL-NEXT:    v_add_u16_sdwa v0, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11643; GFX8-GISEL-NEXT:    v_add_u16_e32 v4, v1, v51644; GFX8-GISEL-NEXT:    v_add_u16_sdwa v1, v1, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11645; GFX8-GISEL-NEXT:    v_add_u16_e32 v5, v2, v61646; GFX8-GISEL-NEXT:    v_add_u16_sdwa v2, v2, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11647; GFX8-GISEL-NEXT:    v_add_u16_e32 v6, v3, v71648; GFX8-GISEL-NEXT:    v_add_u16_sdwa v3, v3, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11649; GFX8-GISEL-NEXT:    v_add_u16_e32 v5, v8, v51650; GFX8-GISEL-NEXT:    v_add_u16_e32 v0, v0, v21651; GFX8-GISEL-NEXT:    v_add_u16_e32 v2, v4, v61652; GFX8-GISEL-NEXT:    v_add_u16_e32 v1, v1, v31653; GFX8-GISEL-NEXT:    v_add_u16_e32 v2, v5, v21654; GFX8-GISEL-NEXT:    v_add_u16_e32 v0, v0, v11655; GFX8-GISEL-NEXT:    s_and_b32 s4, 0xffff, s41656; GFX8-GISEL-NEXT:    v_add_u16_e32 v0, v2, v01657; GFX8-GISEL-NEXT:    s_lshl_b32 s4, s4, 161658; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, s4, v01659; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]1660;1661; GFX9-SDAG-LABEL: test_vector_reduce_add_v16i16:1662; GFX9-SDAG:       ; %bb.0: ; %entry1663; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1664; GFX9-SDAG-NEXT:    v_pk_add_u16 v2, v2, v61665; GFX9-SDAG-NEXT:    v_pk_add_u16 v0, v0, v41666; GFX9-SDAG-NEXT:    v_pk_add_u16 v3, v3, v71667; GFX9-SDAG-NEXT:    v_pk_add_u16 v1, v1, v51668; GFX9-SDAG-NEXT:    v_pk_add_u16 v0, v0, v21669; GFX9-SDAG-NEXT:    v_pk_add_u16 v1, v1, v31670; GFX9-SDAG-NEXT:    s_nop 01671; GFX9-SDAG-NEXT:    v_pk_add_u16 v0, v0, v11672; GFX9-SDAG-NEXT:    s_nop 01673; GFX9-SDAG-NEXT:    v_add_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11674; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]1675;1676; GFX9-GISEL-LABEL: test_vector_reduce_add_v16i16:1677; GFX9-GISEL:       ; %bb.0: ; %entry1678; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1679; GFX9-GISEL-NEXT:    v_pk_add_u16 v0, v0, v41680; GFX9-GISEL-NEXT:    v_pk_add_u16 v1, v1, v51681; GFX9-GISEL-NEXT:    v_pk_add_u16 v2, v2, v61682; GFX9-GISEL-NEXT:    v_pk_add_u16 v3, v3, v71683; GFX9-GISEL-NEXT:    v_pk_add_u16 v0, v0, v21684; GFX9-GISEL-NEXT:    v_pk_add_u16 v1, v1, v31685; GFX9-GISEL-NEXT:    s_nop 01686; GFX9-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11687; GFX9-GISEL-NEXT:    s_nop 01688; GFX9-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01689; GFX9-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11690; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]1691;1692; GFX10-SDAG-LABEL: test_vector_reduce_add_v16i16:1693; GFX10-SDAG:       ; %bb.0: ; %entry1694; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1695; GFX10-SDAG-NEXT:    v_pk_add_u16 v2, v2, v61696; GFX10-SDAG-NEXT:    v_pk_add_u16 v3, v3, v71697; GFX10-SDAG-NEXT:    v_pk_add_u16 v1, v1, v51698; GFX10-SDAG-NEXT:    v_pk_add_u16 v0, v0, v41699; GFX10-SDAG-NEXT:    v_pk_add_u16 v1, v1, v31700; GFX10-SDAG-NEXT:    v_pk_add_u16 v0, v0, v21701; GFX10-SDAG-NEXT:    v_pk_add_u16 v0, v0, v11702; GFX10-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 16, v01703; GFX10-SDAG-NEXT:    v_add_nc_u16 v0, v0, v11704; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]1705;1706; GFX10-GISEL-LABEL: test_vector_reduce_add_v16i16:1707; GFX10-GISEL:       ; %bb.0: ; %entry1708; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1709; GFX10-GISEL-NEXT:    v_pk_add_u16 v0, v0, v41710; GFX10-GISEL-NEXT:    v_pk_add_u16 v1, v1, v51711; GFX10-GISEL-NEXT:    v_pk_add_u16 v2, v2, v61712; GFX10-GISEL-NEXT:    v_pk_add_u16 v3, v3, v71713; GFX10-GISEL-NEXT:    v_pk_add_u16 v0, v0, v21714; GFX10-GISEL-NEXT:    v_pk_add_u16 v1, v1, v31715; GFX10-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11716; GFX10-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01717; GFX10-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11718; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]1719;1720; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_add_v16i16:1721; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry1722; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1723; GFX11-SDAG-TRUE16-NEXT:    v_pk_add_u16 v2, v2, v61724; GFX11-SDAG-TRUE16-NEXT:    v_pk_add_u16 v3, v3, v71725; GFX11-SDAG-TRUE16-NEXT:    v_pk_add_u16 v1, v1, v51726; GFX11-SDAG-TRUE16-NEXT:    v_pk_add_u16 v0, v0, v41727; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1728; GFX11-SDAG-TRUE16-NEXT:    v_pk_add_u16 v1, v1, v31729; GFX11-SDAG-TRUE16-NEXT:    v_pk_add_u16 v0, v0, v21730; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1731; GFX11-SDAG-TRUE16-NEXT:    v_pk_add_u16 v0, v0, v11732; GFX11-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v0.h1733; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1734;1735; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_add_v16i16:1736; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry1737; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1738; GFX11-SDAG-FAKE16-NEXT:    v_pk_add_u16 v2, v2, v61739; GFX11-SDAG-FAKE16-NEXT:    v_pk_add_u16 v3, v3, v71740; GFX11-SDAG-FAKE16-NEXT:    v_pk_add_u16 v1, v1, v51741; GFX11-SDAG-FAKE16-NEXT:    v_pk_add_u16 v0, v0, v41742; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1743; GFX11-SDAG-FAKE16-NEXT:    v_pk_add_u16 v1, v1, v31744; GFX11-SDAG-FAKE16-NEXT:    v_pk_add_u16 v0, v0, v21745; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1746; GFX11-SDAG-FAKE16-NEXT:    v_pk_add_u16 v0, v0, v11747; GFX11-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v01748; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1749; GFX11-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v11750; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1751;1752; GFX11-GISEL-LABEL: test_vector_reduce_add_v16i16:1753; GFX11-GISEL:       ; %bb.0: ; %entry1754; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1755; GFX11-GISEL-NEXT:    v_pk_add_u16 v0, v0, v41756; GFX11-GISEL-NEXT:    v_pk_add_u16 v1, v1, v51757; GFX11-GISEL-NEXT:    v_pk_add_u16 v2, v2, v61758; GFX11-GISEL-NEXT:    v_pk_add_u16 v3, v3, v71759; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1760; GFX11-GISEL-NEXT:    v_pk_add_u16 v0, v0, v21761; GFX11-GISEL-NEXT:    v_pk_add_u16 v1, v1, v31762; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1763; GFX11-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11764; GFX11-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01765; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1766; GFX11-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11767; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]1768;1769; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_add_v16i16:1770; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry1771; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x01772; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x01773; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x01774; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x01775; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x01776; GFX12-SDAG-TRUE16-NEXT:    v_pk_add_u16 v2, v2, v61777; GFX12-SDAG-TRUE16-NEXT:    v_pk_add_u16 v3, v3, v71778; GFX12-SDAG-TRUE16-NEXT:    v_pk_add_u16 v1, v1, v51779; GFX12-SDAG-TRUE16-NEXT:    v_pk_add_u16 v0, v0, v41780; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1781; GFX12-SDAG-TRUE16-NEXT:    v_pk_add_u16 v1, v1, v31782; GFX12-SDAG-TRUE16-NEXT:    v_pk_add_u16 v0, v0, v21783; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1784; GFX12-SDAG-TRUE16-NEXT:    v_pk_add_u16 v0, v0, v11785; GFX12-SDAG-TRUE16-NEXT:    v_add_nc_u16 v0.l, v0.l, v0.h1786; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1787;1788; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_add_v16i16:1789; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry1790; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x01791; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x01792; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x01793; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x01794; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x01795; GFX12-SDAG-FAKE16-NEXT:    v_pk_add_u16 v2, v2, v61796; GFX12-SDAG-FAKE16-NEXT:    v_pk_add_u16 v3, v3, v71797; GFX12-SDAG-FAKE16-NEXT:    v_pk_add_u16 v1, v1, v51798; GFX12-SDAG-FAKE16-NEXT:    v_pk_add_u16 v0, v0, v41799; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1800; GFX12-SDAG-FAKE16-NEXT:    v_pk_add_u16 v1, v1, v31801; GFX12-SDAG-FAKE16-NEXT:    v_pk_add_u16 v0, v0, v21802; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1803; GFX12-SDAG-FAKE16-NEXT:    v_pk_add_u16 v0, v0, v11804; GFX12-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v01805; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1806; GFX12-SDAG-FAKE16-NEXT:    v_add_nc_u16 v0, v0, v11807; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1808;1809; GFX12-GISEL-LABEL: test_vector_reduce_add_v16i16:1810; GFX12-GISEL:       ; %bb.0: ; %entry1811; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x01812; GFX12-GISEL-NEXT:    s_wait_expcnt 0x01813; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x01814; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x01815; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x01816; GFX12-GISEL-NEXT:    v_pk_add_u16 v0, v0, v41817; GFX12-GISEL-NEXT:    v_pk_add_u16 v1, v1, v51818; GFX12-GISEL-NEXT:    v_pk_add_u16 v2, v2, v61819; GFX12-GISEL-NEXT:    v_pk_add_u16 v3, v3, v71820; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1821; GFX12-GISEL-NEXT:    v_pk_add_u16 v0, v0, v21822; GFX12-GISEL-NEXT:    v_pk_add_u16 v1, v1, v31823; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1824; GFX12-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11825; GFX12-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v01826; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1827; GFX12-GISEL-NEXT:    v_pk_add_u16 v0, v0, v11828; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]1829entry:1830  %res = call i16 @llvm.vector.reduce.add.v16i16(<16 x i16> %v)1831  ret i16 %res1832}1833 1834 1835define i32 @test_vector_reduce_add_v2i32(<2 x i32> %v) {1836; GFX7-LABEL: test_vector_reduce_add_v2i32:1837; GFX7:       ; %bb.0: ; %entry1838; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1839; GFX7-NEXT:    v_add_i32_e32 v0, vcc, v0, v11840; GFX7-NEXT:    s_setpc_b64 s[30:31]1841;1842; GFX8-LABEL: test_vector_reduce_add_v2i32:1843; GFX8:       ; %bb.0: ; %entry1844; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1845; GFX8-NEXT:    v_add_u32_e32 v0, vcc, v0, v11846; GFX8-NEXT:    s_setpc_b64 s[30:31]1847;1848; GFX9-LABEL: test_vector_reduce_add_v2i32:1849; GFX9:       ; %bb.0: ; %entry1850; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1851; GFX9-NEXT:    v_add_u32_e32 v0, v0, v11852; GFX9-NEXT:    s_setpc_b64 s[30:31]1853;1854; GFX10-LABEL: test_vector_reduce_add_v2i32:1855; GFX10:       ; %bb.0: ; %entry1856; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1857; GFX10-NEXT:    v_add_nc_u32_e32 v0, v0, v11858; GFX10-NEXT:    s_setpc_b64 s[30:31]1859;1860; GFX11-LABEL: test_vector_reduce_add_v2i32:1861; GFX11:       ; %bb.0: ; %entry1862; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1863; GFX11-NEXT:    v_add_nc_u32_e32 v0, v0, v11864; GFX11-NEXT:    s_setpc_b64 s[30:31]1865;1866; GFX12-LABEL: test_vector_reduce_add_v2i32:1867; GFX12:       ; %bb.0: ; %entry1868; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01869; GFX12-NEXT:    s_wait_expcnt 0x01870; GFX12-NEXT:    s_wait_samplecnt 0x01871; GFX12-NEXT:    s_wait_bvhcnt 0x01872; GFX12-NEXT:    s_wait_kmcnt 0x01873; GFX12-NEXT:    v_add_nc_u32_e32 v0, v0, v11874; GFX12-NEXT:    s_setpc_b64 s[30:31]1875entry:1876  %res = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %v)1877  ret i32 %res1878}1879 1880define i32 @test_vector_reduce_add_v3i32(<3 x i32> %v) {1881; GFX7-LABEL: test_vector_reduce_add_v3i32:1882; GFX7:       ; %bb.0: ; %entry1883; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1884; GFX7-NEXT:    v_add_i32_e32 v0, vcc, v0, v11885; GFX7-NEXT:    v_add_i32_e32 v0, vcc, v0, v21886; GFX7-NEXT:    s_setpc_b64 s[30:31]1887;1888; GFX8-LABEL: test_vector_reduce_add_v3i32:1889; GFX8:       ; %bb.0: ; %entry1890; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1891; GFX8-NEXT:    v_add_u32_e32 v0, vcc, v0, v11892; GFX8-NEXT:    v_add_u32_e32 v0, vcc, v0, v21893; GFX8-NEXT:    s_setpc_b64 s[30:31]1894;1895; GFX9-LABEL: test_vector_reduce_add_v3i32:1896; GFX9:       ; %bb.0: ; %entry1897; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1898; GFX9-NEXT:    v_add3_u32 v0, v0, v1, v21899; GFX9-NEXT:    s_setpc_b64 s[30:31]1900;1901; GFX10-LABEL: test_vector_reduce_add_v3i32:1902; GFX10:       ; %bb.0: ; %entry1903; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1904; GFX10-NEXT:    v_add3_u32 v0, v0, v1, v21905; GFX10-NEXT:    s_setpc_b64 s[30:31]1906;1907; GFX11-LABEL: test_vector_reduce_add_v3i32:1908; GFX11:       ; %bb.0: ; %entry1909; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1910; GFX11-NEXT:    v_add3_u32 v0, v0, v1, v21911; GFX11-NEXT:    s_setpc_b64 s[30:31]1912;1913; GFX12-LABEL: test_vector_reduce_add_v3i32:1914; GFX12:       ; %bb.0: ; %entry1915; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01916; GFX12-NEXT:    s_wait_expcnt 0x01917; GFX12-NEXT:    s_wait_samplecnt 0x01918; GFX12-NEXT:    s_wait_bvhcnt 0x01919; GFX12-NEXT:    s_wait_kmcnt 0x01920; GFX12-NEXT:    v_add3_u32 v0, v0, v1, v21921; GFX12-NEXT:    s_setpc_b64 s[30:31]1922entry:1923  %res = call i32 @llvm.vector.reduce.add.v3i32(<3 x i32> %v)1924  ret i32 %res1925}1926 1927define i32 @test_vector_reduce_add_v4i32(<4 x i32> %v) {1928; GFX7-SDAG-LABEL: test_vector_reduce_add_v4i32:1929; GFX7-SDAG:       ; %bb.0: ; %entry1930; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1931; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v31932; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v21933; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v11934; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]1935;1936; GFX7-GISEL-LABEL: test_vector_reduce_add_v4i32:1937; GFX7-GISEL:       ; %bb.0: ; %entry1938; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1939; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v21940; GFX7-GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v31941; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v11942; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]1943;1944; GFX8-SDAG-LABEL: test_vector_reduce_add_v4i32:1945; GFX8-SDAG:       ; %bb.0: ; %entry1946; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1947; GFX8-SDAG-NEXT:    v_add_u32_e32 v1, vcc, v1, v31948; GFX8-SDAG-NEXT:    v_add_u32_e32 v0, vcc, v0, v21949; GFX8-SDAG-NEXT:    v_add_u32_e32 v0, vcc, v0, v11950; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]1951;1952; GFX8-GISEL-LABEL: test_vector_reduce_add_v4i32:1953; GFX8-GISEL:       ; %bb.0: ; %entry1954; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1955; GFX8-GISEL-NEXT:    v_add_u32_e32 v0, vcc, v0, v21956; GFX8-GISEL-NEXT:    v_add_u32_e32 v1, vcc, v1, v31957; GFX8-GISEL-NEXT:    v_add_u32_e32 v0, vcc, v0, v11958; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]1959;1960; GFX9-LABEL: test_vector_reduce_add_v4i32:1961; GFX9:       ; %bb.0: ; %entry1962; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1963; GFX9-NEXT:    v_add_u32_e32 v1, v1, v31964; GFX9-NEXT:    v_add3_u32 v0, v0, v2, v11965; GFX9-NEXT:    s_setpc_b64 s[30:31]1966;1967; GFX10-LABEL: test_vector_reduce_add_v4i32:1968; GFX10:       ; %bb.0: ; %entry1969; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1970; GFX10-NEXT:    v_add_nc_u32_e32 v1, v1, v31971; GFX10-NEXT:    v_add3_u32 v0, v0, v2, v11972; GFX10-NEXT:    s_setpc_b64 s[30:31]1973;1974; GFX11-LABEL: test_vector_reduce_add_v4i32:1975; GFX11:       ; %bb.0: ; %entry1976; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1977; GFX11-NEXT:    v_add_nc_u32_e32 v1, v1, v31978; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1979; GFX11-NEXT:    v_add3_u32 v0, v0, v2, v11980; GFX11-NEXT:    s_setpc_b64 s[30:31]1981;1982; GFX12-LABEL: test_vector_reduce_add_v4i32:1983; GFX12:       ; %bb.0: ; %entry1984; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01985; GFX12-NEXT:    s_wait_expcnt 0x01986; GFX12-NEXT:    s_wait_samplecnt 0x01987; GFX12-NEXT:    s_wait_bvhcnt 0x01988; GFX12-NEXT:    s_wait_kmcnt 0x01989; GFX12-NEXT:    v_add_nc_u32_e32 v1, v1, v31990; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)1991; GFX12-NEXT:    v_add3_u32 v0, v0, v2, v11992; GFX12-NEXT:    s_setpc_b64 s[30:31]1993entry:1994  %res = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %v)1995  ret i32 %res1996}1997 1998define i32 @test_vector_reduce_add_v8i32(<8 x i32> %v) {1999; GFX7-SDAG-LABEL: test_vector_reduce_add_v8i32:2000; GFX7-SDAG:       ; %bb.0: ; %entry2001; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2002; GFX7-SDAG-NEXT:    v_add_i32_e32 v2, vcc, v2, v62003; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v42004; GFX7-SDAG-NEXT:    v_add_i32_e32 v3, vcc, v3, v72005; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v52006; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v32007; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v22008; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v12009; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]2010;2011; GFX7-GISEL-LABEL: test_vector_reduce_add_v8i32:2012; GFX7-GISEL:       ; %bb.0: ; %entry2013; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2014; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v42015; GFX7-GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v52016; GFX7-GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v62017; GFX7-GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v72018; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v22019; GFX7-GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v32020; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v12021; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]2022;2023; GFX8-SDAG-LABEL: test_vector_reduce_add_v8i32:2024; GFX8-SDAG:       ; %bb.0: ; %entry2025; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2026; GFX8-SDAG-NEXT:    v_add_u32_e32 v2, vcc, v2, v62027; GFX8-SDAG-NEXT:    v_add_u32_e32 v0, vcc, v0, v42028; GFX8-SDAG-NEXT:    v_add_u32_e32 v3, vcc, v3, v72029; GFX8-SDAG-NEXT:    v_add_u32_e32 v1, vcc, v1, v52030; GFX8-SDAG-NEXT:    v_add_u32_e32 v1, vcc, v1, v32031; GFX8-SDAG-NEXT:    v_add_u32_e32 v0, vcc, v0, v22032; GFX8-SDAG-NEXT:    v_add_u32_e32 v0, vcc, v0, v12033; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]2034;2035; GFX8-GISEL-LABEL: test_vector_reduce_add_v8i32:2036; GFX8-GISEL:       ; %bb.0: ; %entry2037; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2038; GFX8-GISEL-NEXT:    v_add_u32_e32 v0, vcc, v0, v42039; GFX8-GISEL-NEXT:    v_add_u32_e32 v1, vcc, v1, v52040; GFX8-GISEL-NEXT:    v_add_u32_e32 v2, vcc, v2, v62041; GFX8-GISEL-NEXT:    v_add_u32_e32 v3, vcc, v3, v72042; GFX8-GISEL-NEXT:    v_add_u32_e32 v0, vcc, v0, v22043; GFX8-GISEL-NEXT:    v_add_u32_e32 v1, vcc, v1, v32044; GFX8-GISEL-NEXT:    v_add_u32_e32 v0, vcc, v0, v12045; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]2046;2047; GFX9-SDAG-LABEL: test_vector_reduce_add_v8i32:2048; GFX9-SDAG:       ; %bb.0: ; %entry2049; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2050; GFX9-SDAG-NEXT:    v_add_u32_e32 v3, v3, v72051; GFX9-SDAG-NEXT:    v_add_u32_e32 v2, v2, v62052; GFX9-SDAG-NEXT:    v_add_u32_e32 v0, v0, v42053; GFX9-SDAG-NEXT:    v_add3_u32 v1, v1, v5, v32054; GFX9-SDAG-NEXT:    v_add3_u32 v0, v0, v2, v12055; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]2056;2057; GFX9-GISEL-LABEL: test_vector_reduce_add_v8i32:2058; GFX9-GISEL:       ; %bb.0: ; %entry2059; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2060; GFX9-GISEL-NEXT:    v_add_u32_e32 v3, v3, v72061; GFX9-GISEL-NEXT:    v_add_u32_e32 v0, v0, v42062; GFX9-GISEL-NEXT:    v_add_u32_e32 v2, v2, v62063; GFX9-GISEL-NEXT:    v_add3_u32 v1, v1, v5, v32064; GFX9-GISEL-NEXT:    v_add3_u32 v0, v0, v2, v12065; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]2066;2067; GFX10-SDAG-LABEL: test_vector_reduce_add_v8i32:2068; GFX10-SDAG:       ; %bb.0: ; %entry2069; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2070; GFX10-SDAG-NEXT:    v_add_nc_u32_e32 v3, v3, v72071; GFX10-SDAG-NEXT:    v_add_nc_u32_e32 v2, v2, v62072; GFX10-SDAG-NEXT:    v_add_nc_u32_e32 v0, v0, v42073; GFX10-SDAG-NEXT:    v_add3_u32 v1, v1, v5, v32074; GFX10-SDAG-NEXT:    v_add3_u32 v0, v0, v2, v12075; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]2076;2077; GFX10-GISEL-LABEL: test_vector_reduce_add_v8i32:2078; GFX10-GISEL:       ; %bb.0: ; %entry2079; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2080; GFX10-GISEL-NEXT:    v_add_nc_u32_e32 v3, v3, v72081; GFX10-GISEL-NEXT:    v_add_nc_u32_e32 v0, v0, v42082; GFX10-GISEL-NEXT:    v_add_nc_u32_e32 v2, v2, v62083; GFX10-GISEL-NEXT:    v_add3_u32 v1, v1, v5, v32084; GFX10-GISEL-NEXT:    v_add3_u32 v0, v0, v2, v12085; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]2086;2087; GFX11-SDAG-LABEL: test_vector_reduce_add_v8i32:2088; GFX11-SDAG:       ; %bb.0: ; %entry2089; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2090; GFX11-SDAG-NEXT:    v_add_nc_u32_e32 v3, v3, v72091; GFX11-SDAG-NEXT:    v_add_nc_u32_e32 v2, v2, v62092; GFX11-SDAG-NEXT:    v_add_nc_u32_e32 v0, v0, v42093; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)2094; GFX11-SDAG-NEXT:    v_add3_u32 v1, v1, v5, v32095; GFX11-SDAG-NEXT:    v_add3_u32 v0, v0, v2, v12096; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]2097;2098; GFX11-GISEL-LABEL: test_vector_reduce_add_v8i32:2099; GFX11-GISEL:       ; %bb.0: ; %entry2100; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2101; GFX11-GISEL-NEXT:    v_add_nc_u32_e32 v3, v3, v72102; GFX11-GISEL-NEXT:    v_add_nc_u32_e32 v0, v0, v42103; GFX11-GISEL-NEXT:    v_add_nc_u32_e32 v2, v2, v62104; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)2105; GFX11-GISEL-NEXT:    v_add3_u32 v1, v1, v5, v32106; GFX11-GISEL-NEXT:    v_add3_u32 v0, v0, v2, v12107; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]2108;2109; GFX12-SDAG-LABEL: test_vector_reduce_add_v8i32:2110; GFX12-SDAG:       ; %bb.0: ; %entry2111; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x02112; GFX12-SDAG-NEXT:    s_wait_expcnt 0x02113; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x02114; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x02115; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x02116; GFX12-SDAG-NEXT:    v_add_nc_u32_e32 v3, v3, v72117; GFX12-SDAG-NEXT:    v_add_nc_u32_e32 v2, v2, v62118; GFX12-SDAG-NEXT:    v_add_nc_u32_e32 v0, v0, v42119; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)2120; GFX12-SDAG-NEXT:    v_add3_u32 v1, v1, v5, v32121; GFX12-SDAG-NEXT:    v_add3_u32 v0, v0, v2, v12122; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]2123;2124; GFX12-GISEL-LABEL: test_vector_reduce_add_v8i32:2125; GFX12-GISEL:       ; %bb.0: ; %entry2126; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x02127; GFX12-GISEL-NEXT:    s_wait_expcnt 0x02128; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x02129; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x02130; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x02131; GFX12-GISEL-NEXT:    v_add_nc_u32_e32 v3, v3, v72132; GFX12-GISEL-NEXT:    v_add_nc_u32_e32 v0, v0, v42133; GFX12-GISEL-NEXT:    v_add_nc_u32_e32 v2, v2, v62134; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)2135; GFX12-GISEL-NEXT:    v_add3_u32 v1, v1, v5, v32136; GFX12-GISEL-NEXT:    v_add3_u32 v0, v0, v2, v12137; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]2138entry:2139  %res = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %v)2140  ret i32 %res2141}2142 2143define i32 @test_vector_reduce_add_v16i32(<16 x i32> %v) {2144; GFX7-SDAG-LABEL: test_vector_reduce_add_v16i32:2145; GFX7-SDAG:       ; %bb.0: ; %entry2146; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2147; GFX7-SDAG-NEXT:    v_add_i32_e32 v5, vcc, v5, v132148; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v92149; GFX7-SDAG-NEXT:    v_add_i32_e32 v7, vcc, v7, v152150; GFX7-SDAG-NEXT:    v_add_i32_e32 v3, vcc, v3, v112151; GFX7-SDAG-NEXT:    v_add_i32_e32 v4, vcc, v4, v122152; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v82153; GFX7-SDAG-NEXT:    v_add_i32_e32 v6, vcc, v6, v142154; GFX7-SDAG-NEXT:    v_add_i32_e32 v2, vcc, v2, v102155; GFX7-SDAG-NEXT:    v_add_i32_e32 v2, vcc, v2, v62156; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v42157; GFX7-SDAG-NEXT:    v_add_i32_e32 v3, vcc, v3, v72158; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v52159; GFX7-SDAG-NEXT:    v_add_i32_e32 v1, vcc, v1, v32160; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v22161; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v12162; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]2163;2164; GFX7-GISEL-LABEL: test_vector_reduce_add_v16i32:2165; GFX7-GISEL:       ; %bb.0: ; %entry2166; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2167; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v82168; GFX7-GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v92169; GFX7-GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v102170; GFX7-GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v112171; GFX7-GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v122172; GFX7-GISEL-NEXT:    v_add_i32_e32 v5, vcc, v5, v132173; GFX7-GISEL-NEXT:    v_add_i32_e32 v6, vcc, v6, v142174; GFX7-GISEL-NEXT:    v_add_i32_e32 v7, vcc, v7, v152175; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v42176; GFX7-GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v52177; GFX7-GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v62178; GFX7-GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v72179; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v22180; GFX7-GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v32181; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v12182; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]2183;2184; GFX8-SDAG-LABEL: test_vector_reduce_add_v16i32:2185; GFX8-SDAG:       ; %bb.0: ; %entry2186; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2187; GFX8-SDAG-NEXT:    v_add_u32_e32 v5, vcc, v5, v132188; GFX8-SDAG-NEXT:    v_add_u32_e32 v1, vcc, v1, v92189; GFX8-SDAG-NEXT:    v_add_u32_e32 v7, vcc, v7, v152190; GFX8-SDAG-NEXT:    v_add_u32_e32 v3, vcc, v3, v112191; GFX8-SDAG-NEXT:    v_add_u32_e32 v4, vcc, v4, v122192; GFX8-SDAG-NEXT:    v_add_u32_e32 v0, vcc, v0, v82193; GFX8-SDAG-NEXT:    v_add_u32_e32 v6, vcc, v6, v142194; GFX8-SDAG-NEXT:    v_add_u32_e32 v2, vcc, v2, v102195; GFX8-SDAG-NEXT:    v_add_u32_e32 v2, vcc, v2, v62196; GFX8-SDAG-NEXT:    v_add_u32_e32 v0, vcc, v0, v42197; GFX8-SDAG-NEXT:    v_add_u32_e32 v3, vcc, v3, v72198; GFX8-SDAG-NEXT:    v_add_u32_e32 v1, vcc, v1, v52199; GFX8-SDAG-NEXT:    v_add_u32_e32 v1, vcc, v1, v32200; GFX8-SDAG-NEXT:    v_add_u32_e32 v0, vcc, v0, v22201; GFX8-SDAG-NEXT:    v_add_u32_e32 v0, vcc, v0, v12202; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]2203;2204; GFX8-GISEL-LABEL: test_vector_reduce_add_v16i32:2205; GFX8-GISEL:       ; %bb.0: ; %entry2206; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2207; GFX8-GISEL-NEXT:    v_add_u32_e32 v0, vcc, v0, v82208; GFX8-GISEL-NEXT:    v_add_u32_e32 v1, vcc, v1, v92209; GFX8-GISEL-NEXT:    v_add_u32_e32 v2, vcc, v2, v102210; GFX8-GISEL-NEXT:    v_add_u32_e32 v3, vcc, v3, v112211; GFX8-GISEL-NEXT:    v_add_u32_e32 v4, vcc, v4, v122212; GFX8-GISEL-NEXT:    v_add_u32_e32 v5, vcc, v5, v132213; GFX8-GISEL-NEXT:    v_add_u32_e32 v6, vcc, v6, v142214; GFX8-GISEL-NEXT:    v_add_u32_e32 v7, vcc, v7, v152215; GFX8-GISEL-NEXT:    v_add_u32_e32 v0, vcc, v0, v42216; GFX8-GISEL-NEXT:    v_add_u32_e32 v1, vcc, v1, v52217; GFX8-GISEL-NEXT:    v_add_u32_e32 v2, vcc, v2, v62218; GFX8-GISEL-NEXT:    v_add_u32_e32 v3, vcc, v3, v72219; GFX8-GISEL-NEXT:    v_add_u32_e32 v0, vcc, v0, v22220; GFX8-GISEL-NEXT:    v_add_u32_e32 v1, vcc, v1, v32221; GFX8-GISEL-NEXT:    v_add_u32_e32 v0, vcc, v0, v12222; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]2223;2224; GFX9-SDAG-LABEL: test_vector_reduce_add_v16i32:2225; GFX9-SDAG:       ; %bb.0: ; %entry2226; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2227; GFX9-SDAG-NEXT:    v_add_u32_e32 v7, v7, v152228; GFX9-SDAG-NEXT:    v_add_u32_e32 v5, v5, v132229; GFX9-SDAG-NEXT:    v_add_u32_e32 v1, v1, v92230; GFX9-SDAG-NEXT:    v_add_u32_e32 v4, v4, v122231; GFX9-SDAG-NEXT:    v_add_u32_e32 v6, v6, v142232; GFX9-SDAG-NEXT:    v_add3_u32 v3, v3, v11, v72233; GFX9-SDAG-NEXT:    v_add3_u32 v2, v2, v10, v62234; GFX9-SDAG-NEXT:    v_add3_u32 v0, v0, v8, v42235; GFX9-SDAG-NEXT:    v_add3_u32 v1, v1, v5, v32236; GFX9-SDAG-NEXT:    v_add3_u32 v0, v0, v2, v12237; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]2238;2239; GFX9-GISEL-LABEL: test_vector_reduce_add_v16i32:2240; GFX9-GISEL:       ; %bb.0: ; %entry2241; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2242; GFX9-GISEL-NEXT:    v_add_u32_e32 v7, v7, v152243; GFX9-GISEL-NEXT:    v_add_u32_e32 v1, v1, v92244; GFX9-GISEL-NEXT:    v_add_u32_e32 v4, v4, v122245; GFX9-GISEL-NEXT:    v_add_u32_e32 v5, v5, v132246; GFX9-GISEL-NEXT:    v_add_u32_e32 v6, v6, v142247; GFX9-GISEL-NEXT:    v_add3_u32 v3, v3, v11, v72248; GFX9-GISEL-NEXT:    v_add3_u32 v0, v0, v8, v42249; GFX9-GISEL-NEXT:    v_add3_u32 v2, v2, v10, v62250; GFX9-GISEL-NEXT:    v_add3_u32 v1, v1, v5, v32251; GFX9-GISEL-NEXT:    v_add3_u32 v0, v0, v2, v12252; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]2253;2254; GFX10-SDAG-LABEL: test_vector_reduce_add_v16i32:2255; GFX10-SDAG:       ; %bb.0: ; %entry2256; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2257; GFX10-SDAG-NEXT:    v_add_nc_u32_e32 v7, v7, v152258; GFX10-SDAG-NEXT:    v_add_nc_u32_e32 v5, v5, v132259; GFX10-SDAG-NEXT:    v_add_nc_u32_e32 v1, v1, v92260; GFX10-SDAG-NEXT:    v_add_nc_u32_e32 v6, v6, v142261; GFX10-SDAG-NEXT:    v_add_nc_u32_e32 v4, v4, v122262; GFX10-SDAG-NEXT:    v_add3_u32 v3, v3, v11, v72263; GFX10-SDAG-NEXT:    v_add3_u32 v2, v2, v10, v62264; GFX10-SDAG-NEXT:    v_add3_u32 v0, v0, v8, v42265; GFX10-SDAG-NEXT:    v_add3_u32 v1, v1, v5, v32266; GFX10-SDAG-NEXT:    v_add3_u32 v0, v0, v2, v12267; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]2268;2269; GFX10-GISEL-LABEL: test_vector_reduce_add_v16i32:2270; GFX10-GISEL:       ; %bb.0: ; %entry2271; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2272; GFX10-GISEL-NEXT:    v_add_nc_u32_e32 v7, v7, v152273; GFX10-GISEL-NEXT:    v_add_nc_u32_e32 v1, v1, v92274; GFX10-GISEL-NEXT:    v_add_nc_u32_e32 v4, v4, v122275; GFX10-GISEL-NEXT:    v_add_nc_u32_e32 v5, v5, v132276; GFX10-GISEL-NEXT:    v_add_nc_u32_e32 v6, v6, v142277; GFX10-GISEL-NEXT:    v_add3_u32 v3, v3, v11, v72278; GFX10-GISEL-NEXT:    v_add3_u32 v0, v0, v8, v42279; GFX10-GISEL-NEXT:    v_add3_u32 v2, v2, v10, v62280; GFX10-GISEL-NEXT:    v_add3_u32 v1, v1, v5, v32281; GFX10-GISEL-NEXT:    v_add3_u32 v0, v0, v2, v12282; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]2283;2284; GFX11-SDAG-LABEL: test_vector_reduce_add_v16i32:2285; GFX11-SDAG:       ; %bb.0: ; %entry2286; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2287; GFX11-SDAG-NEXT:    v_add_nc_u32_e32 v7, v7, v152288; GFX11-SDAG-NEXT:    v_add_nc_u32_e32 v5, v5, v132289; GFX11-SDAG-NEXT:    v_add_nc_u32_e32 v1, v1, v92290; GFX11-SDAG-NEXT:    v_add_nc_u32_e32 v6, v6, v142291; GFX11-SDAG-NEXT:    v_add_nc_u32_e32 v4, v4, v122292; GFX11-SDAG-NEXT:    v_add3_u32 v3, v3, v11, v72293; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)2294; GFX11-SDAG-NEXT:    v_add3_u32 v2, v2, v10, v62295; GFX11-SDAG-NEXT:    v_add3_u32 v0, v0, v8, v42296; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)2297; GFX11-SDAG-NEXT:    v_add3_u32 v1, v1, v5, v32298; GFX11-SDAG-NEXT:    v_add3_u32 v0, v0, v2, v12299; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]2300;2301; GFX11-GISEL-LABEL: test_vector_reduce_add_v16i32:2302; GFX11-GISEL:       ; %bb.0: ; %entry2303; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2304; GFX11-GISEL-NEXT:    v_add_nc_u32_e32 v7, v7, v152305; GFX11-GISEL-NEXT:    v_add_nc_u32_e32 v1, v1, v92306; GFX11-GISEL-NEXT:    v_add_nc_u32_e32 v4, v4, v122307; GFX11-GISEL-NEXT:    v_add_nc_u32_e32 v5, v5, v132308; GFX11-GISEL-NEXT:    v_add_nc_u32_e32 v6, v6, v142309; GFX11-GISEL-NEXT:    v_add3_u32 v3, v3, v11, v72310; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)2311; GFX11-GISEL-NEXT:    v_add3_u32 v0, v0, v8, v42312; GFX11-GISEL-NEXT:    v_add3_u32 v2, v2, v10, v62313; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)2314; GFX11-GISEL-NEXT:    v_add3_u32 v1, v1, v5, v32315; GFX11-GISEL-NEXT:    v_add3_u32 v0, v0, v2, v12316; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]2317;2318; GFX12-SDAG-LABEL: test_vector_reduce_add_v16i32:2319; GFX12-SDAG:       ; %bb.0: ; %entry2320; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x02321; GFX12-SDAG-NEXT:    s_wait_expcnt 0x02322; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x02323; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x02324; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x02325; GFX12-SDAG-NEXT:    v_add_nc_u32_e32 v7, v7, v152326; GFX12-SDAG-NEXT:    v_add_nc_u32_e32 v5, v5, v132327; GFX12-SDAG-NEXT:    v_add_nc_u32_e32 v1, v1, v92328; GFX12-SDAG-NEXT:    v_add_nc_u32_e32 v6, v6, v142329; GFX12-SDAG-NEXT:    v_add_nc_u32_e32 v4, v4, v122330; GFX12-SDAG-NEXT:    v_add3_u32 v3, v3, v11, v72331; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)2332; GFX12-SDAG-NEXT:    v_add3_u32 v2, v2, v10, v62333; GFX12-SDAG-NEXT:    v_add3_u32 v0, v0, v8, v42334; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)2335; GFX12-SDAG-NEXT:    v_add3_u32 v1, v1, v5, v32336; GFX12-SDAG-NEXT:    v_add3_u32 v0, v0, v2, v12337; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]2338;2339; GFX12-GISEL-LABEL: test_vector_reduce_add_v16i32:2340; GFX12-GISEL:       ; %bb.0: ; %entry2341; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x02342; GFX12-GISEL-NEXT:    s_wait_expcnt 0x02343; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x02344; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x02345; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x02346; GFX12-GISEL-NEXT:    v_add_nc_u32_e32 v7, v7, v152347; GFX12-GISEL-NEXT:    v_add_nc_u32_e32 v1, v1, v92348; GFX12-GISEL-NEXT:    v_add_nc_u32_e32 v4, v4, v122349; GFX12-GISEL-NEXT:    v_add_nc_u32_e32 v5, v5, v132350; GFX12-GISEL-NEXT:    v_add_nc_u32_e32 v6, v6, v142351; GFX12-GISEL-NEXT:    v_add3_u32 v3, v3, v11, v72352; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)2353; GFX12-GISEL-NEXT:    v_add3_u32 v0, v0, v8, v42354; GFX12-GISEL-NEXT:    v_add3_u32 v2, v2, v10, v62355; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)2356; GFX12-GISEL-NEXT:    v_add3_u32 v1, v1, v5, v32357; GFX12-GISEL-NEXT:    v_add3_u32 v0, v0, v2, v12358; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]2359entry:2360  %res = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %v)2361  ret i32 %res2362}2363 2364define i64 @test_vector_reduce_add_v2i64(<2 x i64> %v) {2365; GFX7-LABEL: test_vector_reduce_add_v2i64:2366; GFX7:       ; %bb.0: ; %entry2367; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2368; GFX7-NEXT:    v_add_i32_e32 v0, vcc, v0, v22369; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc2370; GFX7-NEXT:    s_setpc_b64 s[30:31]2371;2372; GFX8-LABEL: test_vector_reduce_add_v2i64:2373; GFX8:       ; %bb.0: ; %entry2374; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2375; GFX8-NEXT:    v_add_u32_e32 v0, vcc, v0, v22376; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc2377; GFX8-NEXT:    s_setpc_b64 s[30:31]2378;2379; GFX9-SDAG-LABEL: test_vector_reduce_add_v2i64:2380; GFX9-SDAG:       ; %bb.0: ; %entry2381; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2382; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]2383; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]2384;2385; GFX9-GISEL-LABEL: test_vector_reduce_add_v2i64:2386; GFX9-GISEL:       ; %bb.0: ; %entry2387; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2388; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v22389; GFX9-GISEL-NEXT:    s_nop 12390; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc2391; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]2392;2393; GFX10-LABEL: test_vector_reduce_add_v2i64:2394; GFX10:       ; %bb.0: ; %entry2395; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2396; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v22397; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo2398; GFX10-NEXT:    s_setpc_b64 s[30:31]2399;2400; GFX11-LABEL: test_vector_reduce_add_v2i64:2401; GFX11:       ; %bb.0: ; %entry2402; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2403; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v22404; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2405; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo2406; GFX11-NEXT:    s_setpc_b64 s[30:31]2407;2408; GFX12-LABEL: test_vector_reduce_add_v2i64:2409; GFX12:       ; %bb.0: ; %entry2410; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02411; GFX12-NEXT:    s_wait_expcnt 0x02412; GFX12-NEXT:    s_wait_samplecnt 0x02413; GFX12-NEXT:    s_wait_bvhcnt 0x02414; GFX12-NEXT:    s_wait_kmcnt 0x02415; GFX12-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v22416; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)2417; GFX12-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo2418; GFX12-NEXT:    s_setpc_b64 s[30:31]2419entry:2420  %res = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %v)2421  ret i64 %res2422}2423 2424define i64 @test_vector_reduce_add_v3i64(<3 x i64> %v) {2425; GFX7-LABEL: test_vector_reduce_add_v3i64:2426; GFX7:       ; %bb.0: ; %entry2427; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2428; GFX7-NEXT:    v_add_i32_e32 v0, vcc, v0, v22429; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc2430; GFX7-NEXT:    v_add_i32_e32 v0, vcc, v0, v42431; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, v1, v5, vcc2432; GFX7-NEXT:    s_setpc_b64 s[30:31]2433;2434; GFX8-LABEL: test_vector_reduce_add_v3i64:2435; GFX8:       ; %bb.0: ; %entry2436; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2437; GFX8-NEXT:    v_add_u32_e32 v0, vcc, v0, v22438; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc2439; GFX8-NEXT:    v_add_u32_e32 v0, vcc, v0, v42440; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, v1, v5, vcc2441; GFX8-NEXT:    s_setpc_b64 s[30:31]2442;2443; GFX9-SDAG-LABEL: test_vector_reduce_add_v3i64:2444; GFX9-SDAG:       ; %bb.0: ; %entry2445; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2446; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]2447; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[4:5]2448; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]2449;2450; GFX9-GISEL-LABEL: test_vector_reduce_add_v3i64:2451; GFX9-GISEL:       ; %bb.0: ; %entry2452; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2453; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v22454; GFX9-GISEL-NEXT:    s_nop 12455; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc2456; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v42457; GFX9-GISEL-NEXT:    s_nop 12458; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v5, vcc2459; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]2460;2461; GFX10-LABEL: test_vector_reduce_add_v3i64:2462; GFX10:       ; %bb.0: ; %entry2463; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2464; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v22465; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo2466; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v42467; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v5, vcc_lo2468; GFX10-NEXT:    s_setpc_b64 s[30:31]2469;2470; GFX11-LABEL: test_vector_reduce_add_v3i64:2471; GFX11:       ; %bb.0: ; %entry2472; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2473; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v22474; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)2475; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo2476; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v42477; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2478; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo2479; GFX11-NEXT:    s_setpc_b64 s[30:31]2480;2481; GFX12-LABEL: test_vector_reduce_add_v3i64:2482; GFX12:       ; %bb.0: ; %entry2483; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02484; GFX12-NEXT:    s_wait_expcnt 0x02485; GFX12-NEXT:    s_wait_samplecnt 0x02486; GFX12-NEXT:    s_wait_bvhcnt 0x02487; GFX12-NEXT:    s_wait_kmcnt 0x02488; GFX12-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v22489; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)2490; GFX12-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo2491; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)2492; GFX12-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v42493; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)2494; GFX12-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo2495; GFX12-NEXT:    s_setpc_b64 s[30:31]2496entry:2497  %res = call i64 @llvm.vector.reduce.add.v3i64(<3 x i64> %v)2498  ret i64 %res2499}2500 2501define i64 @test_vector_reduce_add_v4i64(<4 x i64> %v) {2502; GFX7-SDAG-LABEL: test_vector_reduce_add_v4i64:2503; GFX7-SDAG:       ; %bb.0: ; %entry2504; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2505; GFX7-SDAG-NEXT:    v_add_i32_e32 v2, vcc, v2, v62506; GFX7-SDAG-NEXT:    v_addc_u32_e32 v3, vcc, v3, v7, vcc2507; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v42508; GFX7-SDAG-NEXT:    v_addc_u32_e32 v1, vcc, v1, v5, vcc2509; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v22510; GFX7-SDAG-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc2511; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]2512;2513; GFX7-GISEL-LABEL: test_vector_reduce_add_v4i64:2514; GFX7-GISEL:       ; %bb.0: ; %entry2515; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2516; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v42517; GFX7-GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v1, v5, vcc2518; GFX7-GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v62519; GFX7-GISEL-NEXT:    v_addc_u32_e32 v3, vcc, v3, v7, vcc2520; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v22521; GFX7-GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc2522; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]2523;2524; GFX8-SDAG-LABEL: test_vector_reduce_add_v4i64:2525; GFX8-SDAG:       ; %bb.0: ; %entry2526; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2527; GFX8-SDAG-NEXT:    v_add_u32_e32 v2, vcc, v2, v62528; GFX8-SDAG-NEXT:    v_addc_u32_e32 v3, vcc, v3, v7, vcc2529; GFX8-SDAG-NEXT:    v_add_u32_e32 v0, vcc, v0, v42530; GFX8-SDAG-NEXT:    v_addc_u32_e32 v1, vcc, v1, v5, vcc2531; GFX8-SDAG-NEXT:    v_add_u32_e32 v0, vcc, v0, v22532; GFX8-SDAG-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc2533; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]2534;2535; GFX8-GISEL-LABEL: test_vector_reduce_add_v4i64:2536; GFX8-GISEL:       ; %bb.0: ; %entry2537; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2538; GFX8-GISEL-NEXT:    v_add_u32_e32 v0, vcc, v0, v42539; GFX8-GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v1, v5, vcc2540; GFX8-GISEL-NEXT:    v_add_u32_e32 v2, vcc, v2, v62541; GFX8-GISEL-NEXT:    v_addc_u32_e32 v3, vcc, v3, v7, vcc2542; GFX8-GISEL-NEXT:    v_add_u32_e32 v0, vcc, v0, v22543; GFX8-GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc2544; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]2545;2546; GFX9-SDAG-LABEL: test_vector_reduce_add_v4i64:2547; GFX9-SDAG:       ; %bb.0: ; %entry2548; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2549; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[2:3], v[2:3], 0, v[6:7]2550; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[4:5]2551; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]2552; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]2553;2554; GFX9-GISEL-LABEL: test_vector_reduce_add_v4i64:2555; GFX9-GISEL:       ; %bb.0: ; %entry2556; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2557; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v42558; GFX9-GISEL-NEXT:    s_nop 12559; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v5, vcc2560; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v2, vcc, v2, v62561; GFX9-GISEL-NEXT:    s_nop 12562; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v3, vcc, v3, v7, vcc2563; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v22564; GFX9-GISEL-NEXT:    s_nop 12565; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc2566; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]2567;2568; GFX10-SDAG-LABEL: test_vector_reduce_add_v4i64:2569; GFX10-SDAG:       ; %bb.0: ; %entry2570; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2571; GFX10-SDAG-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v62572; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v3, vcc_lo, v3, v7, vcc_lo2573; GFX10-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v42574; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v5, vcc_lo2575; GFX10-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v22576; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo2577; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]2578;2579; GFX10-GISEL-LABEL: test_vector_reduce_add_v4i64:2580; GFX10-GISEL:       ; %bb.0: ; %entry2581; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2582; GFX10-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v42583; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v5, vcc_lo2584; GFX10-GISEL-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v62585; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v3, vcc_lo, v3, v7, vcc_lo2586; GFX10-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v22587; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo2588; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]2589;2590; GFX11-SDAG-LABEL: test_vector_reduce_add_v4i64:2591; GFX11-SDAG:       ; %bb.0: ; %entry2592; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2593; GFX11-SDAG-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v62594; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)2595; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v7, vcc_lo2596; GFX11-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v42597; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo2598; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2599; GFX11-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v22600; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo2601; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]2602;2603; GFX11-GISEL-LABEL: test_vector_reduce_add_v4i64:2604; GFX11-GISEL:       ; %bb.0: ; %entry2605; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2606; GFX11-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v42607; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)2608; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo2609; GFX11-GISEL-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v62610; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v7, vcc_lo2611; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2612; GFX11-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v22613; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo2614; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]2615;2616; GFX12-SDAG-LABEL: test_vector_reduce_add_v4i64:2617; GFX12-SDAG:       ; %bb.0: ; %entry2618; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x02619; GFX12-SDAG-NEXT:    s_wait_expcnt 0x02620; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x02621; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x02622; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x02623; GFX12-SDAG-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v62624; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)2625; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v7, vcc_lo2626; GFX12-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v42627; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)2628; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo2629; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)2630; GFX12-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v22631; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)2632; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo2633; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]2634;2635; GFX12-GISEL-LABEL: test_vector_reduce_add_v4i64:2636; GFX12-GISEL:       ; %bb.0: ; %entry2637; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x02638; GFX12-GISEL-NEXT:    s_wait_expcnt 0x02639; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x02640; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x02641; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x02642; GFX12-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v42643; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)2644; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo2645; GFX12-GISEL-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v62646; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)2647; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v7, vcc_lo2648; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)2649; GFX12-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v22650; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)2651; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo2652; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]2653entry:2654  %res = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %v)2655  ret i64 %res2656}2657 2658define i64 @test_vector_reduce_add_v8i64(<8 x i64> %v) {2659; GFX7-SDAG-LABEL: test_vector_reduce_add_v8i64:2660; GFX7-SDAG:       ; %bb.0: ; %entry2661; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2662; GFX7-SDAG-NEXT:    v_add_i32_e32 v4, vcc, v4, v122663; GFX7-SDAG-NEXT:    v_addc_u32_e32 v5, vcc, v5, v13, vcc2664; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v82665; GFX7-SDAG-NEXT:    v_addc_u32_e32 v1, vcc, v1, v9, vcc2666; GFX7-SDAG-NEXT:    v_add_i32_e32 v6, vcc, v6, v142667; GFX7-SDAG-NEXT:    v_addc_u32_e32 v7, vcc, v7, v15, vcc2668; GFX7-SDAG-NEXT:    v_add_i32_e32 v2, vcc, v2, v102669; GFX7-SDAG-NEXT:    v_addc_u32_e32 v3, vcc, v3, v11, vcc2670; GFX7-SDAG-NEXT:    v_add_i32_e32 v2, vcc, v2, v62671; GFX7-SDAG-NEXT:    v_addc_u32_e32 v3, vcc, v3, v7, vcc2672; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v42673; GFX7-SDAG-NEXT:    v_addc_u32_e32 v1, vcc, v1, v5, vcc2674; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v22675; GFX7-SDAG-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc2676; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]2677;2678; GFX7-GISEL-LABEL: test_vector_reduce_add_v8i64:2679; GFX7-GISEL:       ; %bb.0: ; %entry2680; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2681; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v82682; GFX7-GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v1, v9, vcc2683; GFX7-GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v102684; GFX7-GISEL-NEXT:    v_addc_u32_e32 v3, vcc, v3, v11, vcc2685; GFX7-GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v122686; GFX7-GISEL-NEXT:    v_addc_u32_e32 v5, vcc, v5, v13, vcc2687; GFX7-GISEL-NEXT:    v_add_i32_e32 v6, vcc, v6, v142688; GFX7-GISEL-NEXT:    v_addc_u32_e32 v7, vcc, v7, v15, vcc2689; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v42690; GFX7-GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v1, v5, vcc2691; GFX7-GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v62692; GFX7-GISEL-NEXT:    v_addc_u32_e32 v3, vcc, v3, v7, vcc2693; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v22694; GFX7-GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc2695; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]2696;2697; GFX8-SDAG-LABEL: test_vector_reduce_add_v8i64:2698; GFX8-SDAG:       ; %bb.0: ; %entry2699; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2700; GFX8-SDAG-NEXT:    v_add_u32_e32 v4, vcc, v4, v122701; GFX8-SDAG-NEXT:    v_addc_u32_e32 v5, vcc, v5, v13, vcc2702; GFX8-SDAG-NEXT:    v_add_u32_e32 v0, vcc, v0, v82703; GFX8-SDAG-NEXT:    v_addc_u32_e32 v1, vcc, v1, v9, vcc2704; GFX8-SDAG-NEXT:    v_add_u32_e32 v6, vcc, v6, v142705; GFX8-SDAG-NEXT:    v_addc_u32_e32 v7, vcc, v7, v15, vcc2706; GFX8-SDAG-NEXT:    v_add_u32_e32 v2, vcc, v2, v102707; GFX8-SDAG-NEXT:    v_addc_u32_e32 v3, vcc, v3, v11, vcc2708; GFX8-SDAG-NEXT:    v_add_u32_e32 v2, vcc, v2, v62709; GFX8-SDAG-NEXT:    v_addc_u32_e32 v3, vcc, v3, v7, vcc2710; GFX8-SDAG-NEXT:    v_add_u32_e32 v0, vcc, v0, v42711; GFX8-SDAG-NEXT:    v_addc_u32_e32 v1, vcc, v1, v5, vcc2712; GFX8-SDAG-NEXT:    v_add_u32_e32 v0, vcc, v0, v22713; GFX8-SDAG-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc2714; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]2715;2716; GFX8-GISEL-LABEL: test_vector_reduce_add_v8i64:2717; GFX8-GISEL:       ; %bb.0: ; %entry2718; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2719; GFX8-GISEL-NEXT:    v_add_u32_e32 v0, vcc, v0, v82720; GFX8-GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v1, v9, vcc2721; GFX8-GISEL-NEXT:    v_add_u32_e32 v2, vcc, v2, v102722; GFX8-GISEL-NEXT:    v_addc_u32_e32 v3, vcc, v3, v11, vcc2723; GFX8-GISEL-NEXT:    v_add_u32_e32 v4, vcc, v4, v122724; GFX8-GISEL-NEXT:    v_addc_u32_e32 v5, vcc, v5, v13, vcc2725; GFX8-GISEL-NEXT:    v_add_u32_e32 v6, vcc, v6, v142726; GFX8-GISEL-NEXT:    v_addc_u32_e32 v7, vcc, v7, v15, vcc2727; GFX8-GISEL-NEXT:    v_add_u32_e32 v0, vcc, v0, v42728; GFX8-GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v1, v5, vcc2729; GFX8-GISEL-NEXT:    v_add_u32_e32 v2, vcc, v2, v62730; GFX8-GISEL-NEXT:    v_addc_u32_e32 v3, vcc, v3, v7, vcc2731; GFX8-GISEL-NEXT:    v_add_u32_e32 v0, vcc, v0, v22732; GFX8-GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc2733; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]2734;2735; GFX9-SDAG-LABEL: test_vector_reduce_add_v8i64:2736; GFX9-SDAG:       ; %bb.0: ; %entry2737; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2738; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[4:5], v[4:5], 0, v[12:13]2739; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[8:9]2740; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[6:7], v[6:7], 0, v[14:15]2741; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[2:3], v[2:3], 0, v[10:11]2742; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[2:3], v[2:3], 0, v[6:7]2743; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[4:5]2744; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]2745; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]2746;2747; GFX9-GISEL-LABEL: test_vector_reduce_add_v8i64:2748; GFX9-GISEL:       ; %bb.0: ; %entry2749; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2750; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v82751; GFX9-GISEL-NEXT:    s_nop 12752; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v9, vcc2753; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v2, vcc, v2, v102754; GFX9-GISEL-NEXT:    s_nop 12755; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v3, vcc, v3, v11, vcc2756; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v4, vcc, v4, v122757; GFX9-GISEL-NEXT:    s_nop 12758; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v5, vcc, v5, v13, vcc2759; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v6, vcc, v6, v142760; GFX9-GISEL-NEXT:    s_nop 12761; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v7, vcc, v7, v15, vcc2762; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v42763; GFX9-GISEL-NEXT:    s_nop 12764; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v5, vcc2765; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v2, vcc, v2, v62766; GFX9-GISEL-NEXT:    s_nop 12767; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v3, vcc, v3, v7, vcc2768; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v22769; GFX9-GISEL-NEXT:    s_nop 12770; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc2771; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]2772;2773; GFX10-SDAG-LABEL: test_vector_reduce_add_v8i64:2774; GFX10-SDAG:       ; %bb.0: ; %entry2775; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2776; GFX10-SDAG-NEXT:    v_add_co_u32 v4, vcc_lo, v4, v122777; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v5, vcc_lo, v5, v13, vcc_lo2778; GFX10-SDAG-NEXT:    v_add_co_u32 v6, vcc_lo, v6, v142779; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v7, vcc_lo, v7, v15, vcc_lo2780; GFX10-SDAG-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v102781; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v3, vcc_lo, v3, v11, vcc_lo2782; GFX10-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v82783; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v9, vcc_lo2784; GFX10-SDAG-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v62785; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v3, vcc_lo, v3, v7, vcc_lo2786; GFX10-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v42787; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v5, vcc_lo2788; GFX10-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v22789; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo2790; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]2791;2792; GFX10-GISEL-LABEL: test_vector_reduce_add_v8i64:2793; GFX10-GISEL:       ; %bb.0: ; %entry2794; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2795; GFX10-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v82796; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v9, vcc_lo2797; GFX10-GISEL-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v102798; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v3, vcc_lo, v3, v11, vcc_lo2799; GFX10-GISEL-NEXT:    v_add_co_u32 v4, vcc_lo, v4, v122800; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v5, vcc_lo, v5, v13, vcc_lo2801; GFX10-GISEL-NEXT:    v_add_co_u32 v6, vcc_lo, v6, v142802; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v7, vcc_lo, v7, v15, vcc_lo2803; GFX10-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v42804; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v5, vcc_lo2805; GFX10-GISEL-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v62806; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v3, vcc_lo, v3, v7, vcc_lo2807; GFX10-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v22808; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo2809; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]2810;2811; GFX11-SDAG-LABEL: test_vector_reduce_add_v8i64:2812; GFX11-SDAG:       ; %bb.0: ; %entry2813; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2814; GFX11-SDAG-NEXT:    v_add_co_u32 v4, vcc_lo, v4, v122815; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)2816; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v5, null, v5, v13, vcc_lo2817; GFX11-SDAG-NEXT:    v_add_co_u32 v6, vcc_lo, v6, v142818; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v7, null, v7, v15, vcc_lo2819; GFX11-SDAG-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v102820; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)2821; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v11, vcc_lo2822; GFX11-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v82823; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v9, vcc_lo2824; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)2825; GFX11-SDAG-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v62826; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v7, vcc_lo2827; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)2828; GFX11-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v42829; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo2830; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2831; GFX11-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v22832; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo2833; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]2834;2835; GFX11-GISEL-LABEL: test_vector_reduce_add_v8i64:2836; GFX11-GISEL:       ; %bb.0: ; %entry2837; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2838; GFX11-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v82839; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)2840; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v9, vcc_lo2841; GFX11-GISEL-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v102842; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v11, vcc_lo2843; GFX11-GISEL-NEXT:    v_add_co_u32 v4, vcc_lo, v4, v122844; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)2845; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v5, null, v5, v13, vcc_lo2846; GFX11-GISEL-NEXT:    v_add_co_u32 v6, vcc_lo, v6, v142847; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v7, null, v7, v15, vcc_lo2848; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)2849; GFX11-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v42850; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo2851; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)2852; GFX11-GISEL-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v62853; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v7, vcc_lo2854; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2855; GFX11-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v22856; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo2857; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]2858;2859; GFX12-SDAG-LABEL: test_vector_reduce_add_v8i64:2860; GFX12-SDAG:       ; %bb.0: ; %entry2861; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x02862; GFX12-SDAG-NEXT:    s_wait_expcnt 0x02863; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x02864; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x02865; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x02866; GFX12-SDAG-NEXT:    v_add_co_u32 v4, vcc_lo, v4, v122867; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)2868; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v5, null, v5, v13, vcc_lo2869; GFX12-SDAG-NEXT:    v_add_co_u32 v6, vcc_lo, v6, v142870; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)2871; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v7, null, v7, v15, vcc_lo2872; GFX12-SDAG-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v102873; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)2874; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v11, vcc_lo2875; GFX12-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v82876; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)2877; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v9, vcc_lo2878; GFX12-SDAG-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v62879; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)2880; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v7, vcc_lo2881; GFX12-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v42882; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)2883; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo2884; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)2885; GFX12-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v22886; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)2887; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo2888; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]2889;2890; GFX12-GISEL-LABEL: test_vector_reduce_add_v8i64:2891; GFX12-GISEL:       ; %bb.0: ; %entry2892; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x02893; GFX12-GISEL-NEXT:    s_wait_expcnt 0x02894; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x02895; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x02896; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x02897; GFX12-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v82898; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)2899; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v9, vcc_lo2900; GFX12-GISEL-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v102901; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)2902; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v11, vcc_lo2903; GFX12-GISEL-NEXT:    v_add_co_u32 v4, vcc_lo, v4, v122904; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)2905; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v5, null, v5, v13, vcc_lo2906; GFX12-GISEL-NEXT:    v_add_co_u32 v6, vcc_lo, v6, v142907; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)2908; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v7, null, v7, v15, vcc_lo2909; GFX12-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v42910; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)2911; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo2912; GFX12-GISEL-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v62913; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)2914; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v7, vcc_lo2915; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)2916; GFX12-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v22917; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)2918; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo2919; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]2920entry:2921  %res = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> %v)2922  ret i64 %res2923}2924 2925define i64 @test_vector_reduce_add_v16i64(<16 x i64> %v) {2926; GFX7-SDAG-LABEL: test_vector_reduce_add_v16i64:2927; GFX7-SDAG:       ; %bb.0: ; %entry2928; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2929; GFX7-SDAG-NEXT:    v_add_i32_e32 v10, vcc, v10, v262930; GFX7-SDAG-NEXT:    v_addc_u32_e32 v11, vcc, v11, v27, vcc2931; GFX7-SDAG-NEXT:    v_add_i32_e32 v2, vcc, v2, v182932; GFX7-SDAG-NEXT:    buffer_load_dword v18, off, s[0:3], s322933; GFX7-SDAG-NEXT:    v_addc_u32_e32 v3, vcc, v3, v19, vcc2934; GFX7-SDAG-NEXT:    v_add_i32_e32 v6, vcc, v6, v222935; GFX7-SDAG-NEXT:    v_addc_u32_e32 v7, vcc, v7, v23, vcc2936; GFX7-SDAG-NEXT:    v_add_i32_e32 v8, vcc, v8, v242937; GFX7-SDAG-NEXT:    v_addc_u32_e32 v9, vcc, v9, v25, vcc2938; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v162939; GFX7-SDAG-NEXT:    v_addc_u32_e32 v1, vcc, v1, v17, vcc2940; GFX7-SDAG-NEXT:    v_add_i32_e32 v12, vcc, v12, v282941; GFX7-SDAG-NEXT:    v_addc_u32_e32 v13, vcc, v13, v29, vcc2942; GFX7-SDAG-NEXT:    v_add_i32_e32 v4, vcc, v4, v202943; GFX7-SDAG-NEXT:    v_addc_u32_e32 v5, vcc, v5, v21, vcc2944; GFX7-SDAG-NEXT:    v_add_i32_e32 v4, vcc, v4, v122945; GFX7-SDAG-NEXT:    v_addc_u32_e32 v5, vcc, v5, v13, vcc2946; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v82947; GFX7-SDAG-NEXT:    v_addc_u32_e32 v1, vcc, v1, v9, vcc2948; GFX7-SDAG-NEXT:    v_add_i32_e32 v2, vcc, v2, v102949; GFX7-SDAG-NEXT:    v_addc_u32_e32 v3, vcc, v3, v11, vcc2950; GFX7-SDAG-NEXT:    v_add_i32_e32 v8, vcc, v14, v302951; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0)2952; GFX7-SDAG-NEXT:    v_addc_u32_e32 v9, vcc, v15, v18, vcc2953; GFX7-SDAG-NEXT:    v_add_i32_e32 v6, vcc, v6, v82954; GFX7-SDAG-NEXT:    v_addc_u32_e32 v7, vcc, v7, v9, vcc2955; GFX7-SDAG-NEXT:    v_add_i32_e32 v2, vcc, v2, v62956; GFX7-SDAG-NEXT:    v_addc_u32_e32 v3, vcc, v3, v7, vcc2957; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v42958; GFX7-SDAG-NEXT:    v_addc_u32_e32 v1, vcc, v1, v5, vcc2959; GFX7-SDAG-NEXT:    v_add_i32_e32 v0, vcc, v0, v22960; GFX7-SDAG-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc2961; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]2962;2963; GFX7-GISEL-LABEL: test_vector_reduce_add_v16i64:2964; GFX7-GISEL:       ; %bb.0: ; %entry2965; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2966; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v162967; GFX7-GISEL-NEXT:    buffer_load_dword v16, off, s[0:3], s322968; GFX7-GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v1, v17, vcc2969; GFX7-GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v182970; GFX7-GISEL-NEXT:    v_addc_u32_e32 v3, vcc, v3, v19, vcc2971; GFX7-GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v202972; GFX7-GISEL-NEXT:    v_addc_u32_e32 v5, vcc, v5, v21, vcc2973; GFX7-GISEL-NEXT:    v_add_i32_e32 v6, vcc, v6, v222974; GFX7-GISEL-NEXT:    v_addc_u32_e32 v7, vcc, v7, v23, vcc2975; GFX7-GISEL-NEXT:    v_add_i32_e32 v8, vcc, v8, v242976; GFX7-GISEL-NEXT:    v_addc_u32_e32 v9, vcc, v9, v25, vcc2977; GFX7-GISEL-NEXT:    v_add_i32_e32 v10, vcc, v10, v262978; GFX7-GISEL-NEXT:    v_addc_u32_e32 v11, vcc, v11, v27, vcc2979; GFX7-GISEL-NEXT:    v_add_i32_e32 v12, vcc, v12, v282980; GFX7-GISEL-NEXT:    v_addc_u32_e32 v13, vcc, v13, v29, vcc2981; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v82982; GFX7-GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v1, v9, vcc2983; GFX7-GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v102984; GFX7-GISEL-NEXT:    v_addc_u32_e32 v3, vcc, v3, v11, vcc2985; GFX7-GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v122986; GFX7-GISEL-NEXT:    v_addc_u32_e32 v5, vcc, v5, v13, vcc2987; GFX7-GISEL-NEXT:    v_add_i32_e32 v8, vcc, v14, v302988; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0)2989; GFX7-GISEL-NEXT:    v_addc_u32_e32 v9, vcc, v15, v16, vcc2990; GFX7-GISEL-NEXT:    v_add_i32_e32 v6, vcc, v6, v82991; GFX7-GISEL-NEXT:    v_addc_u32_e32 v7, vcc, v7, v9, vcc2992; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v42993; GFX7-GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v1, v5, vcc2994; GFX7-GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v62995; GFX7-GISEL-NEXT:    v_addc_u32_e32 v3, vcc, v3, v7, vcc2996; GFX7-GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v22997; GFX7-GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc2998; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]2999;3000; GFX8-SDAG-LABEL: test_vector_reduce_add_v16i64:3001; GFX8-SDAG:       ; %bb.0: ; %entry3002; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3003; GFX8-SDAG-NEXT:    v_add_u32_e32 v10, vcc, v10, v263004; GFX8-SDAG-NEXT:    v_addc_u32_e32 v11, vcc, v11, v27, vcc3005; GFX8-SDAG-NEXT:    v_add_u32_e32 v2, vcc, v2, v183006; GFX8-SDAG-NEXT:    buffer_load_dword v18, off, s[0:3], s323007; GFX8-SDAG-NEXT:    v_addc_u32_e32 v3, vcc, v3, v19, vcc3008; GFX8-SDAG-NEXT:    v_add_u32_e32 v6, vcc, v6, v223009; GFX8-SDAG-NEXT:    v_addc_u32_e32 v7, vcc, v7, v23, vcc3010; GFX8-SDAG-NEXT:    v_add_u32_e32 v8, vcc, v8, v243011; GFX8-SDAG-NEXT:    v_addc_u32_e32 v9, vcc, v9, v25, vcc3012; GFX8-SDAG-NEXT:    v_add_u32_e32 v0, vcc, v0, v163013; GFX8-SDAG-NEXT:    v_addc_u32_e32 v1, vcc, v1, v17, vcc3014; GFX8-SDAG-NEXT:    v_add_u32_e32 v12, vcc, v12, v283015; GFX8-SDAG-NEXT:    v_addc_u32_e32 v13, vcc, v13, v29, vcc3016; GFX8-SDAG-NEXT:    v_add_u32_e32 v4, vcc, v4, v203017; GFX8-SDAG-NEXT:    v_addc_u32_e32 v5, vcc, v5, v21, vcc3018; GFX8-SDAG-NEXT:    v_add_u32_e32 v4, vcc, v4, v123019; GFX8-SDAG-NEXT:    v_addc_u32_e32 v5, vcc, v5, v13, vcc3020; GFX8-SDAG-NEXT:    v_add_u32_e32 v0, vcc, v0, v83021; GFX8-SDAG-NEXT:    v_addc_u32_e32 v1, vcc, v1, v9, vcc3022; GFX8-SDAG-NEXT:    v_add_u32_e32 v2, vcc, v2, v103023; GFX8-SDAG-NEXT:    v_addc_u32_e32 v3, vcc, v3, v11, vcc3024; GFX8-SDAG-NEXT:    v_add_u32_e32 v8, vcc, v14, v303025; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0)3026; GFX8-SDAG-NEXT:    v_addc_u32_e32 v9, vcc, v15, v18, vcc3027; GFX8-SDAG-NEXT:    v_add_u32_e32 v6, vcc, v6, v83028; GFX8-SDAG-NEXT:    v_addc_u32_e32 v7, vcc, v7, v9, vcc3029; GFX8-SDAG-NEXT:    v_add_u32_e32 v2, vcc, v2, v63030; GFX8-SDAG-NEXT:    v_addc_u32_e32 v3, vcc, v3, v7, vcc3031; GFX8-SDAG-NEXT:    v_add_u32_e32 v0, vcc, v0, v43032; GFX8-SDAG-NEXT:    v_addc_u32_e32 v1, vcc, v1, v5, vcc3033; GFX8-SDAG-NEXT:    v_add_u32_e32 v0, vcc, v0, v23034; GFX8-SDAG-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc3035; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]3036;3037; GFX8-GISEL-LABEL: test_vector_reduce_add_v16i64:3038; GFX8-GISEL:       ; %bb.0: ; %entry3039; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3040; GFX8-GISEL-NEXT:    v_add_u32_e32 v0, vcc, v0, v163041; GFX8-GISEL-NEXT:    buffer_load_dword v16, off, s[0:3], s323042; GFX8-GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v1, v17, vcc3043; GFX8-GISEL-NEXT:    v_add_u32_e32 v2, vcc, v2, v183044; GFX8-GISEL-NEXT:    v_addc_u32_e32 v3, vcc, v3, v19, vcc3045; GFX8-GISEL-NEXT:    v_add_u32_e32 v4, vcc, v4, v203046; GFX8-GISEL-NEXT:    v_addc_u32_e32 v5, vcc, v5, v21, vcc3047; GFX8-GISEL-NEXT:    v_add_u32_e32 v6, vcc, v6, v223048; GFX8-GISEL-NEXT:    v_addc_u32_e32 v7, vcc, v7, v23, vcc3049; GFX8-GISEL-NEXT:    v_add_u32_e32 v8, vcc, v8, v243050; GFX8-GISEL-NEXT:    v_addc_u32_e32 v9, vcc, v9, v25, vcc3051; GFX8-GISEL-NEXT:    v_add_u32_e32 v10, vcc, v10, v263052; GFX8-GISEL-NEXT:    v_addc_u32_e32 v11, vcc, v11, v27, vcc3053; GFX8-GISEL-NEXT:    v_add_u32_e32 v12, vcc, v12, v283054; GFX8-GISEL-NEXT:    v_addc_u32_e32 v13, vcc, v13, v29, vcc3055; GFX8-GISEL-NEXT:    v_add_u32_e32 v0, vcc, v0, v83056; GFX8-GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v1, v9, vcc3057; GFX8-GISEL-NEXT:    v_add_u32_e32 v2, vcc, v2, v103058; GFX8-GISEL-NEXT:    v_addc_u32_e32 v3, vcc, v3, v11, vcc3059; GFX8-GISEL-NEXT:    v_add_u32_e32 v4, vcc, v4, v123060; GFX8-GISEL-NEXT:    v_addc_u32_e32 v5, vcc, v5, v13, vcc3061; GFX8-GISEL-NEXT:    v_add_u32_e32 v8, vcc, v14, v303062; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0)3063; GFX8-GISEL-NEXT:    v_addc_u32_e32 v9, vcc, v15, v16, vcc3064; GFX8-GISEL-NEXT:    v_add_u32_e32 v6, vcc, v6, v83065; GFX8-GISEL-NEXT:    v_addc_u32_e32 v7, vcc, v7, v9, vcc3066; GFX8-GISEL-NEXT:    v_add_u32_e32 v0, vcc, v0, v43067; GFX8-GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v1, v5, vcc3068; GFX8-GISEL-NEXT:    v_add_u32_e32 v2, vcc, v2, v63069; GFX8-GISEL-NEXT:    v_addc_u32_e32 v3, vcc, v3, v7, vcc3070; GFX8-GISEL-NEXT:    v_add_u32_e32 v0, vcc, v0, v23071; GFX8-GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc3072; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]3073;3074; GFX9-SDAG-LABEL: test_vector_reduce_add_v16i64:3075; GFX9-SDAG:       ; %bb.0: ; %entry3076; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3077; GFX9-SDAG-NEXT:    scratch_load_dword v31, off, s323078; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[8:9], v[8:9], 0, v[24:25]3079; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[16:17]3080; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[12:13], v[12:13], 0, v[28:29]3081; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[4:5], v[4:5], 0, v[20:21]3082; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[4:5], v[4:5], 0, v[12:13]3083; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[8:9]3084; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[10:11], v[10:11], 0, v[26:27]3085; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[2:3], v[2:3], 0, v[18:19]3086; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[6:7], v[6:7], 0, v[22:23]3087; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[4:5]3088; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[2:3], v[2:3], 0, v[10:11]3089; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0)3090; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[4:5], v[14:15], 0, v[30:31]3091; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[4:5], v[6:7], 0, v[4:5]3092; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[2:3], v[2:3], 0, v[4:5]3093; GFX9-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]3094; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]3095;3096; GFX9-GISEL-LABEL: test_vector_reduce_add_v16i64:3097; GFX9-GISEL:       ; %bb.0: ; %entry3098; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3099; GFX9-GISEL-NEXT:    scratch_load_dword v31, off, s323100; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v163101; GFX9-GISEL-NEXT:    s_nop 13102; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v17, vcc3103; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v2, vcc, v2, v183104; GFX9-GISEL-NEXT:    s_nop 13105; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v3, vcc, v3, v19, vcc3106; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v4, vcc, v4, v203107; GFX9-GISEL-NEXT:    s_nop 13108; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v5, vcc, v5, v21, vcc3109; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v6, vcc, v6, v223110; GFX9-GISEL-NEXT:    s_nop 13111; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v7, vcc, v7, v23, vcc3112; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v8, vcc, v8, v243113; GFX9-GISEL-NEXT:    s_nop 13114; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v9, vcc, v9, v25, vcc3115; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v10, vcc, v10, v263116; GFX9-GISEL-NEXT:    s_nop 13117; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v11, vcc, v11, v27, vcc3118; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v12, vcc, v12, v283119; GFX9-GISEL-NEXT:    s_nop 13120; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v13, vcc, v13, v29, vcc3121; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v83122; GFX9-GISEL-NEXT:    s_nop 13123; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v9, vcc3124; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v2, vcc, v2, v103125; GFX9-GISEL-NEXT:    s_nop 13126; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v3, vcc, v3, v11, vcc3127; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v4, vcc, v4, v123128; GFX9-GISEL-NEXT:    s_nop 13129; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v5, vcc, v5, v13, vcc3130; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v8, vcc, v14, v303131; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0)3132; GFX9-GISEL-NEXT:    s_nop 03133; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v9, vcc, v15, v31, vcc3134; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v6, vcc, v6, v83135; GFX9-GISEL-NEXT:    s_nop 13136; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v7, vcc, v7, v9, vcc3137; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v43138; GFX9-GISEL-NEXT:    s_nop 13139; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v5, vcc3140; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v2, vcc, v2, v63141; GFX9-GISEL-NEXT:    s_nop 13142; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v3, vcc, v3, v7, vcc3143; GFX9-GISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v23144; GFX9-GISEL-NEXT:    s_nop 13145; GFX9-GISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc3146; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]3147;3148; GFX10-SDAG-LABEL: test_vector_reduce_add_v16i64:3149; GFX10-SDAG:       ; %bb.0: ; %entry3150; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3151; GFX10-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s323152; GFX10-SDAG-NEXT:    v_add_co_u32 v10, vcc_lo, v10, v263153; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v11, vcc_lo, v11, v27, vcc_lo3154; GFX10-SDAG-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v183155; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v3, vcc_lo, v3, v19, vcc_lo3156; GFX10-SDAG-NEXT:    v_add_co_u32 v6, vcc_lo, v6, v223157; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v7, vcc_lo, v7, v23, vcc_lo3158; GFX10-SDAG-NEXT:    v_add_co_u32 v8, vcc_lo, v8, v243159; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v9, vcc_lo, v9, v25, vcc_lo3160; GFX10-SDAG-NEXT:    v_add_co_u32 v12, vcc_lo, v12, v283161; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v13, vcc_lo, v13, v29, vcc_lo3162; GFX10-SDAG-NEXT:    v_add_co_u32 v4, vcc_lo, v4, v203163; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v5, vcc_lo, v5, v21, vcc_lo3164; GFX10-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v163165; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v17, vcc_lo3166; GFX10-SDAG-NEXT:    v_add_co_u32 v4, vcc_lo, v4, v123167; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v5, vcc_lo, v5, v13, vcc_lo3168; GFX10-SDAG-NEXT:    v_add_co_u32 v12, vcc_lo, v14, v303169; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0)3170; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v13, vcc_lo, v15, v31, vcc_lo3171; GFX10-SDAG-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v103172; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v3, vcc_lo, v3, v11, vcc_lo3173; GFX10-SDAG-NEXT:    v_add_co_u32 v6, vcc_lo, v6, v123174; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v7, vcc_lo, v7, v13, vcc_lo3175; GFX10-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v83176; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v9, vcc_lo3177; GFX10-SDAG-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v63178; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v3, vcc_lo, v3, v7, vcc_lo3179; GFX10-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v43180; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v5, vcc_lo3181; GFX10-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v23182; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo3183; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]3184;3185; GFX10-GISEL-LABEL: test_vector_reduce_add_v16i64:3186; GFX10-GISEL:       ; %bb.0: ; %entry3187; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3188; GFX10-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s323189; GFX10-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v163190; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v17, vcc_lo3191; GFX10-GISEL-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v183192; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v3, vcc_lo, v3, v19, vcc_lo3193; GFX10-GISEL-NEXT:    v_add_co_u32 v4, vcc_lo, v4, v203194; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v5, vcc_lo, v5, v21, vcc_lo3195; GFX10-GISEL-NEXT:    v_add_co_u32 v6, vcc_lo, v6, v223196; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v7, vcc_lo, v7, v23, vcc_lo3197; GFX10-GISEL-NEXT:    v_add_co_u32 v8, vcc_lo, v8, v243198; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v9, vcc_lo, v9, v25, vcc_lo3199; GFX10-GISEL-NEXT:    v_add_co_u32 v10, vcc_lo, v10, v263200; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v11, vcc_lo, v11, v27, vcc_lo3201; GFX10-GISEL-NEXT:    v_add_co_u32 v12, vcc_lo, v12, v283202; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v13, vcc_lo, v13, v29, vcc_lo3203; GFX10-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v83204; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v9, vcc_lo3205; GFX10-GISEL-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v103206; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v3, vcc_lo, v3, v11, vcc_lo3207; GFX10-GISEL-NEXT:    v_add_co_u32 v8, vcc_lo, v14, v303208; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0)3209; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v9, vcc_lo, v15, v31, vcc_lo3210; GFX10-GISEL-NEXT:    v_add_co_u32 v4, vcc_lo, v4, v123211; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v5, vcc_lo, v5, v13, vcc_lo3212; GFX10-GISEL-NEXT:    v_add_co_u32 v6, vcc_lo, v6, v83213; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v7, vcc_lo, v7, v9, vcc_lo3214; GFX10-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v43215; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v5, vcc_lo3216; GFX10-GISEL-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v63217; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v3, vcc_lo, v3, v7, vcc_lo3218; GFX10-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v23219; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo3220; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]3221;3222; GFX11-SDAG-LABEL: test_vector_reduce_add_v16i64:3223; GFX11-SDAG:       ; %bb.0: ; %entry3224; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3225; GFX11-SDAG-NEXT:    scratch_load_b32 v31, off, s323226; GFX11-SDAG-NEXT:    v_add_co_u32 v10, vcc_lo, v10, v263227; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)3228; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v11, null, v11, v27, vcc_lo3229; GFX11-SDAG-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v183230; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v19, vcc_lo3231; GFX11-SDAG-NEXT:    v_add_co_u32 v6, vcc_lo, v6, v223232; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)3233; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v7, null, v7, v23, vcc_lo3234; GFX11-SDAG-NEXT:    v_add_co_u32 v8, vcc_lo, v8, v243235; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v9, null, v9, v25, vcc_lo3236; GFX11-SDAG-NEXT:    v_add_co_u32 v12, vcc_lo, v12, v283237; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)3238; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v13, null, v13, v29, vcc_lo3239; GFX11-SDAG-NEXT:    v_add_co_u32 v4, vcc_lo, v4, v203240; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v5, null, v5, v21, vcc_lo3241; GFX11-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v163242; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_4)3243; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v17, vcc_lo3244; GFX11-SDAG-NEXT:    v_add_co_u32 v4, vcc_lo, v4, v123245; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_4) | instid1(VALU_DEP_1)3246; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v5, null, v5, v13, vcc_lo3247; GFX11-SDAG-NEXT:    v_add_co_u32 v12, vcc_lo, v14, v303248; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0)3249; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v13, null, v15, v31, vcc_lo3250; GFX11-SDAG-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v103251; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v11, vcc_lo3252; GFX11-SDAG-NEXT:    v_add_co_u32 v6, vcc_lo, v6, v123253; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)3254; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v7, null, v7, v13, vcc_lo3255; GFX11-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v83256; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v9, vcc_lo3257; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)3258; GFX11-SDAG-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v63259; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v7, vcc_lo3260; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)3261; GFX11-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v43262; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo3263; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3264; GFX11-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v23265; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo3266; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]3267;3268; GFX11-GISEL-LABEL: test_vector_reduce_add_v16i64:3269; GFX11-GISEL:       ; %bb.0: ; %entry3270; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3271; GFX11-GISEL-NEXT:    scratch_load_b32 v31, off, s323272; GFX11-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v163273; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)3274; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v17, vcc_lo3275; GFX11-GISEL-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v183276; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v19, vcc_lo3277; GFX11-GISEL-NEXT:    v_add_co_u32 v4, vcc_lo, v4, v203278; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)3279; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v5, null, v5, v21, vcc_lo3280; GFX11-GISEL-NEXT:    v_add_co_u32 v6, vcc_lo, v6, v223281; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v7, null, v7, v23, vcc_lo3282; GFX11-GISEL-NEXT:    v_add_co_u32 v8, vcc_lo, v8, v243283; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)3284; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v9, null, v9, v25, vcc_lo3285; GFX11-GISEL-NEXT:    v_add_co_u32 v10, vcc_lo, v10, v263286; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v11, null, v11, v27, vcc_lo3287; GFX11-GISEL-NEXT:    v_add_co_u32 v12, vcc_lo, v12, v283288; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)3289; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v13, null, v13, v29, vcc_lo3290; GFX11-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v83291; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v9, vcc_lo3292; GFX11-GISEL-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v103293; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_4) | instid1(VALU_DEP_1)3294; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v11, vcc_lo3295; GFX11-GISEL-NEXT:    v_add_co_u32 v8, vcc_lo, v14, v303296; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0)3297; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v9, null, v15, v31, vcc_lo3298; GFX11-GISEL-NEXT:    v_add_co_u32 v4, vcc_lo, v4, v123299; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v5, null, v5, v13, vcc_lo3300; GFX11-GISEL-NEXT:    v_add_co_u32 v6, vcc_lo, v6, v83301; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_4)3302; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v7, null, v7, v9, vcc_lo3303; GFX11-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v43304; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_4)3305; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo3306; GFX11-GISEL-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v63307; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)3308; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v7, vcc_lo3309; GFX11-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v23310; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)3311; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo3312; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]3313;3314; GFX12-SDAG-LABEL: test_vector_reduce_add_v16i64:3315; GFX12-SDAG:       ; %bb.0: ; %entry3316; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x03317; GFX12-SDAG-NEXT:    s_wait_expcnt 0x03318; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x03319; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x03320; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x03321; GFX12-SDAG-NEXT:    scratch_load_b32 v31, off, s323322; GFX12-SDAG-NEXT:    v_add_co_u32 v10, vcc_lo, v10, v263323; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)3324; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v11, null, v11, v27, vcc_lo3325; GFX12-SDAG-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v183326; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)3327; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v19, vcc_lo3328; GFX12-SDAG-NEXT:    v_add_co_u32 v6, vcc_lo, v6, v223329; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)3330; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v7, null, v7, v23, vcc_lo3331; GFX12-SDAG-NEXT:    v_add_co_u32 v8, vcc_lo, v8, v243332; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)3333; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v9, null, v9, v25, vcc_lo3334; GFX12-SDAG-NEXT:    v_add_co_u32 v12, vcc_lo, v12, v283335; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)3336; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v13, null, v13, v29, vcc_lo3337; GFX12-SDAG-NEXT:    v_add_co_u32 v4, vcc_lo, v4, v203338; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)3339; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v5, null, v5, v21, vcc_lo3340; GFX12-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v163341; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)3342; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v17, vcc_lo3343; GFX12-SDAG-NEXT:    v_add_co_u32 v4, vcc_lo, v4, v123344; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)3345; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v5, null, v5, v13, vcc_lo3346; GFX12-SDAG-NEXT:    v_add_co_u32 v12, vcc_lo, v14, v303347; GFX12-SDAG-NEXT:    s_wait_loadcnt 0x03348; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)3349; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v13, null, v15, v31, vcc_lo3350; GFX12-SDAG-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v103351; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)3352; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v11, vcc_lo3353; GFX12-SDAG-NEXT:    v_add_co_u32 v6, vcc_lo, v6, v123354; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)3355; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v7, null, v7, v13, vcc_lo3356; GFX12-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v83357; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)3358; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v9, vcc_lo3359; GFX12-SDAG-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v63360; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)3361; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v7, vcc_lo3362; GFX12-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v43363; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)3364; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo3365; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3366; GFX12-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v23367; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)3368; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo3369; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]3370;3371; GFX12-GISEL-LABEL: test_vector_reduce_add_v16i64:3372; GFX12-GISEL:       ; %bb.0: ; %entry3373; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x03374; GFX12-GISEL-NEXT:    s_wait_expcnt 0x03375; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x03376; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x03377; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x03378; GFX12-GISEL-NEXT:    scratch_load_b32 v31, off, s323379; GFX12-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v163380; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)3381; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v17, vcc_lo3382; GFX12-GISEL-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v183383; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)3384; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v19, vcc_lo3385; GFX12-GISEL-NEXT:    v_add_co_u32 v4, vcc_lo, v4, v203386; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)3387; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v5, null, v5, v21, vcc_lo3388; GFX12-GISEL-NEXT:    v_add_co_u32 v6, vcc_lo, v6, v223389; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)3390; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v7, null, v7, v23, vcc_lo3391; GFX12-GISEL-NEXT:    v_add_co_u32 v8, vcc_lo, v8, v243392; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)3393; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v9, null, v9, v25, vcc_lo3394; GFX12-GISEL-NEXT:    v_add_co_u32 v10, vcc_lo, v10, v263395; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)3396; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v11, null, v11, v27, vcc_lo3397; GFX12-GISEL-NEXT:    v_add_co_u32 v12, vcc_lo, v12, v283398; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)3399; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v13, null, v13, v29, vcc_lo3400; GFX12-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v83401; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)3402; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v9, vcc_lo3403; GFX12-GISEL-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v103404; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)3405; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v11, vcc_lo3406; GFX12-GISEL-NEXT:    v_add_co_u32 v8, vcc_lo, v14, v303407; GFX12-GISEL-NEXT:    s_wait_loadcnt 0x03408; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)3409; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v9, null, v15, v31, vcc_lo3410; GFX12-GISEL-NEXT:    v_add_co_u32 v4, vcc_lo, v4, v123411; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)3412; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v5, null, v5, v13, vcc_lo3413; GFX12-GISEL-NEXT:    v_add_co_u32 v6, vcc_lo, v6, v83414; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)3415; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v7, null, v7, v9, vcc_lo3416; GFX12-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v43417; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)3418; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo3419; GFX12-GISEL-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v63420; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)3421; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v3, null, v3, v7, vcc_lo3422; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3423; GFX12-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v23424; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)3425; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo3426; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]3427entry:3428  %res = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %v)3429  ret i64 %res3430}3431 3432declare i8 @llvm.vector.reduce.add.v2i8(<2 x i8>)3433declare i8 @llvm.vector.reduce.add.v3i8(<3 x i8>)3434declare i8 @llvm.vector.reduce.add.v4i8(<4 x i8>)3435declare i8 @llvm.vector.reduce.add.v8i8(<8 x i8>)3436declare i8 @llvm.vector.reduce.add.v16i8(<16 x i8>)3437 3438declare i16 @llvm.vector.reduce.add.v2i16(<2 x i16>)3439declare i16 @llvm.vector.reduce.add.v3i16(<3 x i16>)3440declare i16 @llvm.vector.reduce.add.v4i16(<4 x i16>)3441declare i16 @llvm.vector.reduce.add.v8i16(<8 x i16>)3442declare i16 @llvm.vector.reduce.add.v16i16(<16 x i16>)3443 3444declare i32 @llvm.vector.reduce.add.v2i32(<2 x i32>)3445declare i32 @llvm.vector.reduce.add.v3i32(<3 x i32>)3446declare i32 @llvm.vector.reduce.add.v4i32(<4 x i32>)3447declare i32 @llvm.vector.reduce.add.v8i32(<8 x i32>)3448declare i32 @llvm.vector.reduce.add.v16i32(<16 x i32>)3449 3450declare i64 @llvm.vector.reduce.add.v2i64(<2 x i64>)3451declare i64 @llvm.vector.reduce.add.v3i64(<3 x i64>)3452declare i64 @llvm.vector.reduce.add.v4i64(<4 x i64>)3453declare i64 @llvm.vector.reduce.add.v8i64(<8 x i64>)3454declare i64 @llvm.vector.reduce.add.v16i64(<16 x i64>)3455;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:3456; GFX11-GISEL-FAKE16: {{.*}}3457; GFX12-GISEL-FAKE16: {{.*}}3458