brintos

brintos / llvm-project-archived public Read only

0
0
Text · 231.7 KiB · 94de3bc Raw
4613 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 -new-reg-bank-select -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 -new-reg-bank-select -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 -new-reg-bank-select -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 -new-reg-bank-select -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 -new-reg-bank-select -mtriple=amdgcn -mcpu=gfx1100 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-GISEL,GFX11-GISEL-TRUE16 %s14; RUN: llc -global-isel=1 -new-reg-bank-select -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 -new-reg-bank-select -mtriple=amdgcn -mcpu=gfx1200 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-GISEL,GFX12-GISEL-TRUE16 %s18; RUN: llc -global-isel=1 -new-reg-bank-select -mtriple=amdgcn -mcpu=gfx1200 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-GISEL,GFX12-GISEL-FAKE16 %s19 20define i8 @test_vector_reduce_smin_v2i8(<2 x i8> %v) {21; GFX7-SDAG-LABEL: test_vector_reduce_smin_v2i8:22; GFX7-SDAG:       ; %bb.0: ; %entry23; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)24; GFX7-SDAG-NEXT:    v_bfe_i32 v1, v1, 0, 825; GFX7-SDAG-NEXT:    v_bfe_i32 v0, v0, 0, 826; GFX7-SDAG-NEXT:    v_min_i32_e32 v0, v0, v127; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]28;29; GFX7-GISEL-LABEL: test_vector_reduce_smin_v2i8:30; GFX7-GISEL:       ; %bb.0: ; %entry31; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)32; GFX7-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 833; GFX7-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 834; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v135; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]36;37; GFX8-LABEL: test_vector_reduce_smin_v2i8:38; GFX8:       ; %bb.0: ; %entry39; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)40; GFX8-NEXT:    v_min_i16_sdwa v0, sext(v0), sext(v1) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_041; GFX8-NEXT:    s_setpc_b64 s[30:31]42;43; GFX9-LABEL: test_vector_reduce_smin_v2i8:44; GFX9:       ; %bb.0: ; %entry45; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)46; GFX9-NEXT:    v_min_i16_sdwa v0, sext(v0), sext(v1) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_047; GFX9-NEXT:    s_setpc_b64 s[30:31]48;49; GFX10-SDAG-LABEL: test_vector_reduce_smin_v2i8:50; GFX10-SDAG:       ; %bb.0: ; %entry51; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)52; GFX10-SDAG-NEXT:    v_bfe_i32 v1, v1, 0, 853; GFX10-SDAG-NEXT:    v_bfe_i32 v0, v0, 0, 854; GFX10-SDAG-NEXT:    v_min_i16 v0, v0, v155; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]56;57; GFX10-GISEL-LABEL: test_vector_reduce_smin_v2i8:58; GFX10-GISEL:       ; %bb.0: ; %entry59; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)60; GFX10-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 861; GFX10-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 862; GFX10-GISEL-NEXT:    v_min_i16 v0, v0, v163; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]64;65; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_smin_v2i8:66; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry67; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)68; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v0, v0, 0, 869; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v1, v1, 0, 870; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)71; GFX11-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v0.l, v1.l72; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]73;74; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_smin_v2i8:75; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry76; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)77; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v1, v1, 0, 878; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v0, v0, 0, 879; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)80; GFX11-SDAG-FAKE16-NEXT:    v_min_i16 v0, v0, v181; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]82;83; GFX11-GISEL-LABEL: test_vector_reduce_smin_v2i8:84; GFX11-GISEL:       ; %bb.0: ; %entry85; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)86; GFX11-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 887; GFX11-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 888; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)89; GFX11-GISEL-NEXT:    v_min_i16 v0, v0, v190; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]91;92; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_smin_v2i8:93; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry94; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x095; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x096; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x097; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x098; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x099; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v0, v0, 0, 8100; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v1, v1, 0, 8101; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)102; GFX12-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v0.l, v1.l103; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]104;105; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_smin_v2i8:106; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry107; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0108; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x0109; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x0110; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x0111; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x0112; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v1, v1, 0, 8113; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v0, v0, 0, 8114; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)115; GFX12-SDAG-FAKE16-NEXT:    v_min_i16 v0, v0, v1116; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]117;118; GFX12-GISEL-LABEL: test_vector_reduce_smin_v2i8:119; GFX12-GISEL:       ; %bb.0: ; %entry120; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0121; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0122; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0123; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0124; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0125; GFX12-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 8126; GFX12-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 8127; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)128; GFX12-GISEL-NEXT:    v_min_i16 v0, v0, v1129; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]130entry:131  %res = call i8 @llvm.vector.reduce.smin.v2i8(<2 x i8> %v)132  ret i8 %res133}134 135define i8 @test_vector_reduce_smin_v3i8(<3 x i8> %v) {136; GFX7-SDAG-LABEL: test_vector_reduce_smin_v3i8:137; GFX7-SDAG:       ; %bb.0: ; %entry138; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)139; GFX7-SDAG-NEXT:    v_bfe_i32 v2, v2, 0, 8140; GFX7-SDAG-NEXT:    v_bfe_i32 v0, v0, 0, 8141; GFX7-SDAG-NEXT:    v_bfe_i32 v1, v1, 0, 8142; GFX7-SDAG-NEXT:    v_min_i32_e32 v0, v0, v2143; GFX7-SDAG-NEXT:    s_movk_i32 s4, 0x7f144; GFX7-SDAG-NEXT:    v_min3_i32 v0, v1, v0, s4145; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]146;147; GFX7-GISEL-LABEL: test_vector_reduce_smin_v3i8:148; GFX7-GISEL:       ; %bb.0: ; %entry149; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)150; GFX7-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 8151; GFX7-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 8152; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v1153; GFX7-GISEL-NEXT:    v_bfe_i32 v1, v2, 0, 8154; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v1155; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]156;157; GFX8-SDAG-LABEL: test_vector_reduce_smin_v3i8:158; GFX8-SDAG:       ; %bb.0: ; %entry159; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)160; GFX8-SDAG-NEXT:    v_min_i16_sdwa v0, sext(v0), sext(v2) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0161; GFX8-SDAG-NEXT:    v_min_i16_sdwa v0, sext(v1), v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD162; GFX8-SDAG-NEXT:    v_min_i16_e32 v0, 0x7f, v0163; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]164;165; GFX8-GISEL-LABEL: test_vector_reduce_smin_v3i8:166; GFX8-GISEL:       ; %bb.0: ; %entry167; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)168; GFX8-GISEL-NEXT:    v_min_i16_sdwa v0, sext(v0), sext(v1) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0169; GFX8-GISEL-NEXT:    v_min_i16_sdwa v0, v0, sext(v2) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0170; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]171;172; GFX9-SDAG-LABEL: test_vector_reduce_smin_v3i8:173; GFX9-SDAG:       ; %bb.0: ; %entry174; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)175; GFX9-SDAG-NEXT:    v_bfe_i32 v1, v1, 0, 8176; GFX9-SDAG-NEXT:    v_min_i16_sdwa v0, sext(v0), sext(v2) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0177; GFX9-SDAG-NEXT:    s_movk_i32 s0, 0x7f178; GFX9-SDAG-NEXT:    v_min3_i16 v0, v1, v0, s0179; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]180;181; GFX9-GISEL-LABEL: test_vector_reduce_smin_v3i8:182; GFX9-GISEL:       ; %bb.0: ; %entry183; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)184; GFX9-GISEL-NEXT:    v_min_i16_sdwa v0, sext(v0), sext(v1) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0185; GFX9-GISEL-NEXT:    v_min_i16_sdwa v0, v0, sext(v2) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0186; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]187;188; GFX10-SDAG-LABEL: test_vector_reduce_smin_v3i8:189; GFX10-SDAG:       ; %bb.0: ; %entry190; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)191; GFX10-SDAG-NEXT:    v_bfe_i32 v2, v2, 0, 8192; GFX10-SDAG-NEXT:    v_bfe_i32 v0, v0, 0, 8193; GFX10-SDAG-NEXT:    v_bfe_i32 v1, v1, 0, 8194; GFX10-SDAG-NEXT:    v_min_i16 v0, v0, v2195; GFX10-SDAG-NEXT:    v_min3_i16 v0, v1, v0, 0x7f196; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]197;198; GFX10-GISEL-LABEL: test_vector_reduce_smin_v3i8:199; GFX10-GISEL:       ; %bb.0: ; %entry200; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)201; GFX10-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 8202; GFX10-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 8203; GFX10-GISEL-NEXT:    v_min_i16 v0, v0, v1204; GFX10-GISEL-NEXT:    v_bfe_i32 v1, v2, 0, 8205; GFX10-GISEL-NEXT:    v_min_i16 v0, v0, v1206; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]207;208; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_smin_v3i8:209; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry210; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)211; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v2, v2, 0, 8212; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v1.l213; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v0, v0, 0, 8214; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)215; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v2.l216; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v2, v3, 0, 8217; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)218; GFX11-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v0.l, v1.l219; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v2.l220; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)221; GFX11-SDAG-TRUE16-NEXT:    v_min3_i16 v0.l, v1.l, v0.l, 0x7f222; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]223;224; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_smin_v3i8:225; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry226; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)227; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v2, v2, 0, 8228; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v0, v0, 0, 8229; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v1, v1, 0, 8230; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)231; GFX11-SDAG-FAKE16-NEXT:    v_min_i16 v0, v0, v2232; GFX11-SDAG-FAKE16-NEXT:    v_min3_i16 v0, v1, v0, 0x7f233; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]234;235; GFX11-GISEL-LABEL: test_vector_reduce_smin_v3i8:236; GFX11-GISEL:       ; %bb.0: ; %entry237; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)238; GFX11-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 8239; GFX11-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 8240; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)241; GFX11-GISEL-NEXT:    v_min_i16 v0, v0, v1242; GFX11-GISEL-NEXT:    v_bfe_i32 v1, v2, 0, 8243; GFX11-GISEL-NEXT:    v_min_i16 v0, v0, v1244; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]245;246; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_smin_v3i8:247; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry248; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0249; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x0250; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x0251; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x0252; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x0253; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v2, v2, 0, 8254; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v1.l255; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v0, v0, 0, 8256; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)257; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v2.l258; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v2, v3, 0, 8259; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)260; GFX12-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v0.l, v1.l261; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v2.l262; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)263; GFX12-SDAG-TRUE16-NEXT:    v_min3_i16 v0.l, v1.l, v0.l, 0x7f264; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]265;266; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_smin_v3i8:267; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry268; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0269; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x0270; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x0271; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x0272; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x0273; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v2, v2, 0, 8274; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v0, v0, 0, 8275; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v1, v1, 0, 8276; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)277; GFX12-SDAG-FAKE16-NEXT:    v_min_i16 v0, v0, v2278; GFX12-SDAG-FAKE16-NEXT:    v_min3_i16 v0, v1, v0, 0x7f279; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]280;281; GFX12-GISEL-LABEL: test_vector_reduce_smin_v3i8:282; GFX12-GISEL:       ; %bb.0: ; %entry283; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0284; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0285; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0286; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0287; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0288; GFX12-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 8289; GFX12-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 8290; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)291; GFX12-GISEL-NEXT:    v_min_i16 v0, v0, v1292; GFX12-GISEL-NEXT:    v_bfe_i32 v1, v2, 0, 8293; GFX12-GISEL-NEXT:    v_min_i16 v0, v0, v1294; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]295entry:296  %res = call i8 @llvm.vector.reduce.smin.v3i8(<3 x i8> %v)297  ret i8 %res298}299 300define i8 @test_vector_reduce_smin_v4i8(<4 x i8> %v) {301; GFX7-SDAG-LABEL: test_vector_reduce_smin_v4i8:302; GFX7-SDAG:       ; %bb.0: ; %entry303; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)304; GFX7-SDAG-NEXT:    v_bfe_i32 v3, v3, 0, 8305; GFX7-SDAG-NEXT:    v_bfe_i32 v1, v1, 0, 8306; GFX7-SDAG-NEXT:    v_bfe_i32 v2, v2, 0, 8307; GFX7-SDAG-NEXT:    v_bfe_i32 v0, v0, 0, 8308; GFX7-SDAG-NEXT:    v_min_i32_e32 v1, v1, v3309; GFX7-SDAG-NEXT:    v_min3_i32 v0, v0, v2, v1310; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]311;312; GFX7-GISEL-LABEL: test_vector_reduce_smin_v4i8:313; GFX7-GISEL:       ; %bb.0: ; %entry314; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)315; GFX7-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 8316; GFX7-GISEL-NEXT:    v_bfe_i32 v2, v2, 0, 8317; GFX7-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 8318; GFX7-GISEL-NEXT:    v_bfe_i32 v3, v3, 0, 8319; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v2320; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, v1, v3321; GFX7-GISEL-NEXT:    s_sext_i32_i8 s4, s4322; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v1323; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, s4, v1324; GFX7-GISEL-NEXT:    v_min_i32_e32 v2, s4, v2325; GFX7-GISEL-NEXT:    v_and_b32_e32 v1, 0xff, v1326; GFX7-GISEL-NEXT:    v_min_i32_e32 v2, s4, v2327; GFX7-GISEL-NEXT:    v_and_b32_e32 v0, 0xff, v0328; GFX7-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 8, v1329; GFX7-GISEL-NEXT:    v_min_i32_e32 v3, s4, v3330; GFX7-GISEL-NEXT:    v_or_b32_e32 v0, v0, v1331; GFX7-GISEL-NEXT:    v_and_b32_e32 v1, 0xff, v2332; GFX7-GISEL-NEXT:    v_min_i32_e32 v3, s4, v3333; GFX7-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 16, v1334; GFX7-GISEL-NEXT:    v_or_b32_e32 v0, v0, v1335; GFX7-GISEL-NEXT:    v_and_b32_e32 v1, 0xff, v3336; GFX7-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 24, v1337; GFX7-GISEL-NEXT:    v_or_b32_e32 v0, v0, v1338; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]339;340; GFX8-SDAG-LABEL: test_vector_reduce_smin_v4i8:341; GFX8-SDAG:       ; %bb.0: ; %entry342; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)343; GFX8-SDAG-NEXT:    v_min_i16_sdwa v1, sext(v1), sext(v3) dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0344; GFX8-SDAG-NEXT:    v_min_i16_sdwa v0, sext(v0), sext(v2) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0345; GFX8-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 8, v1346; GFX8-SDAG-NEXT:    v_min_i16_sdwa v0, v0, sext(v1) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0347; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]348;349; GFX8-GISEL-LABEL: test_vector_reduce_smin_v4i8:350; GFX8-GISEL:       ; %bb.0: ; %entry351; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)352; GFX8-GISEL-NEXT:    s_sext_i32_i8 s4, s4353; GFX8-GISEL-NEXT:    v_min_i16_sdwa v0, sext(v0), sext(v2) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0354; GFX8-GISEL-NEXT:    v_min_i16_sdwa v1, sext(v1), sext(v3) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0355; GFX8-GISEL-NEXT:    v_mov_b32_e32 v4, s4356; GFX8-GISEL-NEXT:    v_min_i16_sdwa v2, sext(v2), v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD357; GFX8-GISEL-NEXT:    v_min_i16_sdwa v3, sext(v3), v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD358; GFX8-GISEL-NEXT:    v_min_i16_e32 v0, v0, v1359; GFX8-GISEL-NEXT:    v_min_i16_e32 v1, s4, v1360; GFX8-GISEL-NEXT:    v_mov_b32_e32 v4, 8361; GFX8-GISEL-NEXT:    v_min_i16_e32 v2, s4, v2362; GFX8-GISEL-NEXT:    v_lshlrev_b32_sdwa v1, v4, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0363; GFX8-GISEL-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD364; GFX8-GISEL-NEXT:    v_and_b32_e32 v1, 0xff, v2365; GFX8-GISEL-NEXT:    v_min_i16_e32 v3, s4, v3366; GFX8-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 16, v1367; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v0, v1368; GFX8-GISEL-NEXT:    v_and_b32_e32 v1, 0xff, v3369; GFX8-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 24, v1370; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v0, v1371; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]372;373; GFX9-SDAG-LABEL: test_vector_reduce_smin_v4i8:374; GFX9-SDAG:       ; %bb.0: ; %entry375; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)376; GFX9-SDAG-NEXT:    v_min_i16_sdwa v1, sext(v1), sext(v3) dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0377; GFX9-SDAG-NEXT:    v_bfe_i32 v2, v2, 0, 8378; GFX9-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 8, v1379; GFX9-SDAG-NEXT:    v_bfe_i32 v0, v0, 0, 8380; GFX9-SDAG-NEXT:    v_bfe_i32 v1, v1, 0, 8381; GFX9-SDAG-NEXT:    v_min3_i16 v0, v0, v2, v1382; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]383;384; GFX9-GISEL-LABEL: test_vector_reduce_smin_v4i8:385; GFX9-GISEL:       ; %bb.0: ; %entry386; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)387; GFX9-GISEL-NEXT:    v_min_i16_sdwa v0, sext(v0), sext(v2) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0388; GFX9-GISEL-NEXT:    v_min_i16_sdwa v1, sext(v1), sext(v3) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0389; GFX9-GISEL-NEXT:    s_sext_i32_i8 s0, s0390; GFX9-GISEL-NEXT:    v_min_i16_sdwa v2, sext(v2), s0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD391; GFX9-GISEL-NEXT:    v_min_i16_sdwa v3, sext(v3), s0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD392; GFX9-GISEL-NEXT:    v_min_i16_e32 v0, v0, v1393; GFX9-GISEL-NEXT:    v_min_i16_e32 v1, s0, v1394; GFX9-GISEL-NEXT:    v_mov_b32_e32 v5, 8395; GFX9-GISEL-NEXT:    v_min_i16_e32 v2, s0, v2396; GFX9-GISEL-NEXT:    v_min_i16_e32 v3, s0, v3397; GFX9-GISEL-NEXT:    v_mov_b32_e32 v4, 0xff398; GFX9-GISEL-NEXT:    v_lshlrev_b32_sdwa v1, v5, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0399; GFX9-GISEL-NEXT:    v_and_or_b32 v0, v0, v4, v1400; GFX9-GISEL-NEXT:    v_and_b32_e32 v1, 0xff, v2401; GFX9-GISEL-NEXT:    v_and_b32_e32 v2, 0xff, v3402; GFX9-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 16, v1403; GFX9-GISEL-NEXT:    v_lshlrev_b32_e32 v2, 24, v2404; GFX9-GISEL-NEXT:    v_or3_b32 v0, v0, v1, v2405; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]406;407; GFX10-SDAG-LABEL: test_vector_reduce_smin_v4i8:408; GFX10-SDAG:       ; %bb.0: ; %entry409; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)410; GFX10-SDAG-NEXT:    v_bfe_i32 v3, v3, 0, 8411; GFX10-SDAG-NEXT:    v_bfe_i32 v1, v1, 0, 8412; GFX10-SDAG-NEXT:    v_bfe_i32 v2, v2, 0, 8413; GFX10-SDAG-NEXT:    v_bfe_i32 v0, v0, 0, 8414; GFX10-SDAG-NEXT:    v_min_i16 v1, v1, v3415; GFX10-SDAG-NEXT:    v_lshlrev_b16 v1, 8, v1416; GFX10-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 8, v1417; GFX10-SDAG-NEXT:    v_bfe_i32 v1, v1, 0, 8418; GFX10-SDAG-NEXT:    v_min3_i16 v0, v0, v2, v1419; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]420;421; GFX10-GISEL-LABEL: test_vector_reduce_smin_v4i8:422; GFX10-GISEL:       ; %bb.0: ; %entry423; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)424; GFX10-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 8425; GFX10-GISEL-NEXT:    v_bfe_i32 v3, v3, 0, 8426; GFX10-GISEL-NEXT:    v_bfe_i32 v2, v2, 0, 8427; GFX10-GISEL-NEXT:    s_sext_i32_i8 s4, s4428; GFX10-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 8429; GFX10-GISEL-NEXT:    v_mov_b32_e32 v5, 8430; GFX10-GISEL-NEXT:    v_min_i16 v1, v1, v3431; GFX10-GISEL-NEXT:    v_min_i16 v4, v2, s4432; GFX10-GISEL-NEXT:    v_min_i16 v3, v3, s4433; GFX10-GISEL-NEXT:    v_min_i16 v0, v0, v2434; GFX10-GISEL-NEXT:    v_min_i16 v2, v1, s4435; GFX10-GISEL-NEXT:    v_min_i16 v4, v4, s4436; GFX10-GISEL-NEXT:    v_min_i16 v3, v3, s4437; GFX10-GISEL-NEXT:    v_min_i16 v0, v0, v1438; GFX10-GISEL-NEXT:    v_lshlrev_b32_sdwa v1, v5, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0439; GFX10-GISEL-NEXT:    v_and_b32_e32 v2, 0xff, v4440; GFX10-GISEL-NEXT:    v_and_b32_e32 v3, 0xff, v3441; GFX10-GISEL-NEXT:    v_and_or_b32 v0, 0xff, v0, v1442; GFX10-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 16, v2443; GFX10-GISEL-NEXT:    v_lshlrev_b32_e32 v2, 24, v3444; GFX10-GISEL-NEXT:    v_or3_b32 v0, v0, v1, v2445; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]446;447; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_smin_v4i8:448; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry449; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)450; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v1, v1, 0, 8451; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v3, v3, 0, 8452; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v2, v2, 0, 8453; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v0, v0, 0, 8454; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)455; GFX11-SDAG-TRUE16-NEXT:    v_min_i16 v1.l, v1.l, v3.l456; GFX11-SDAG-TRUE16-NEXT:    v_lshlrev_b16 v1.l, 8, v1.l457; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)458; GFX11-SDAG-TRUE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v1459; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v3, v1, 0, 8460; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v2.l461; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)462; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v3.l463; GFX11-SDAG-TRUE16-NEXT:    v_min3_i16 v0.l, v0.l, v1.l, v2.l464; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]465;466; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_smin_v4i8:467; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry468; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)469; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v3, v3, 0, 8470; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v1, v1, 0, 8471; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v2, v2, 0, 8472; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v0, v0, 0, 8473; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)474; GFX11-SDAG-FAKE16-NEXT:    v_min_i16 v1, v1, v3475; GFX11-SDAG-FAKE16-NEXT:    v_lshlrev_b16 v1, 8, v1476; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)477; GFX11-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v1478; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v1, v1, 0, 8479; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)480; GFX11-SDAG-FAKE16-NEXT:    v_min3_i16 v0, v0, v2, v1481; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]482;483; GFX11-GISEL-LABEL: test_vector_reduce_smin_v4i8:484; GFX11-GISEL:       ; %bb.0: ; %entry485; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)486; GFX11-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 8487; GFX11-GISEL-NEXT:    v_bfe_i32 v3, v3, 0, 8488; GFX11-GISEL-NEXT:    v_bfe_i32 v2, v2, 0, 8489; GFX11-GISEL-NEXT:    s_sext_i32_i8 s0, s0490; GFX11-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 8491; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)492; GFX11-GISEL-NEXT:    v_min_i16 v1, v1, v3493; GFX11-GISEL-NEXT:    v_min_i16 v4, v2, s0494; GFX11-GISEL-NEXT:    v_min_i16 v3, v3, s0495; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)496; GFX11-GISEL-NEXT:    v_min_i16 v0, v0, v2497; GFX11-GISEL-NEXT:    v_min_i16 v5, v1, s0498; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)499; GFX11-GISEL-NEXT:    v_min_i16 v2, v4, s0500; GFX11-GISEL-NEXT:    v_min_i16 v3, v3, s0501; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)502; GFX11-GISEL-NEXT:    v_min_i16 v0, v0, v1503; GFX11-GISEL-NEXT:    v_and_b32_e32 v4, 0xff, v5504; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)505; GFX11-GISEL-NEXT:    v_and_b32_e32 v1, 0xff, v2506; GFX11-GISEL-NEXT:    v_and_b32_e32 v3, 0xff, v3507; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)508; GFX11-GISEL-NEXT:    v_lshlrev_b32_e32 v2, 8, v4509; GFX11-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 16, v1510; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_4)511; GFX11-GISEL-NEXT:    v_and_or_b32 v0, 0xff, v0, v2512; GFX11-GISEL-NEXT:    v_lshlrev_b32_e32 v2, 24, v3513; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)514; GFX11-GISEL-NEXT:    v_or3_b32 v0, v0, v1, v2515; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]516;517; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_smin_v4i8:518; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry519; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0520; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x0521; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x0522; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x0523; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x0524; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v1, v1, 0, 8525; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v3, v3, 0, 8526; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v2, v2, 0, 8527; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v0, v0, 0, 8528; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)529; GFX12-SDAG-TRUE16-NEXT:    v_min_i16 v1.l, v1.l, v3.l530; GFX12-SDAG-TRUE16-NEXT:    v_lshlrev_b16 v1.l, 8, v1.l531; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)532; GFX12-SDAG-TRUE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v1533; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v3, v1, 0, 8534; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v2.l535; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)536; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v3.l537; GFX12-SDAG-TRUE16-NEXT:    v_min3_i16 v0.l, v0.l, v1.l, v2.l538; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]539;540; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_smin_v4i8:541; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry542; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0543; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x0544; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x0545; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x0546; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x0547; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v3, v3, 0, 8548; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v1, v1, 0, 8549; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v2, v2, 0, 8550; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v0, v0, 0, 8551; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)552; GFX12-SDAG-FAKE16-NEXT:    v_min_i16 v1, v1, v3553; GFX12-SDAG-FAKE16-NEXT:    v_lshlrev_b16 v1, 8, v1554; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)555; GFX12-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v1556; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v1, v1, 0, 8557; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)558; GFX12-SDAG-FAKE16-NEXT:    v_min3_i16 v0, v0, v2, v1559; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]560;561; GFX12-GISEL-LABEL: test_vector_reduce_smin_v4i8:562; GFX12-GISEL:       ; %bb.0: ; %entry563; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0564; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0565; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0566; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0567; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0568; GFX12-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 8569; GFX12-GISEL-NEXT:    v_bfe_i32 v3, v3, 0, 8570; GFX12-GISEL-NEXT:    v_bfe_i32 v2, v2, 0, 8571; GFX12-GISEL-NEXT:    s_sext_i32_i8 s0, s0572; GFX12-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 8573; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3)574; GFX12-GISEL-NEXT:    v_min_i16 v1, v1, v3575; GFX12-GISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)576; GFX12-GISEL-NEXT:    v_min_i16 v4, v2, s0577; GFX12-GISEL-NEXT:    v_min_i16 v3, v3, s0578; GFX12-GISEL-NEXT:    v_min_i16 v0, v0, v2579; GFX12-GISEL-NEXT:    v_min_i16 v5, v1, s0580; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)581; GFX12-GISEL-NEXT:    v_min_i16 v2, v4, s0582; GFX12-GISEL-NEXT:    v_min_i16 v3, v3, s0583; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)584; GFX12-GISEL-NEXT:    v_min_i16 v0, v0, v1585; GFX12-GISEL-NEXT:    v_and_b32_e32 v4, 0xff, v5586; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)587; GFX12-GISEL-NEXT:    v_and_b32_e32 v1, 0xff, v2588; GFX12-GISEL-NEXT:    v_and_b32_e32 v3, 0xff, v3589; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)590; GFX12-GISEL-NEXT:    v_lshlrev_b32_e32 v2, 8, v4591; GFX12-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 16, v1592; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_4)593; GFX12-GISEL-NEXT:    v_and_or_b32 v0, 0xff, v0, v2594; GFX12-GISEL-NEXT:    v_lshlrev_b32_e32 v2, 24, v3595; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)596; GFX12-GISEL-NEXT:    v_or3_b32 v0, v0, v1, v2597; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]598entry:599  %res = call i8 @llvm.vector.reduce.smin.v4i8(<4 x i8> %v)600  ret i8 %res601}602 603define i8 @test_vector_reduce_smin_v8i8(<8 x i8> %v) {604; GFX7-SDAG-LABEL: test_vector_reduce_smin_v8i8:605; GFX7-SDAG:       ; %bb.0: ; %entry606; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)607; GFX7-SDAG-NEXT:    v_bfe_i32 v5, v5, 0, 8608; GFX7-SDAG-NEXT:    v_bfe_i32 v1, v1, 0, 8609; GFX7-SDAG-NEXT:    v_bfe_i32 v4, v4, 0, 8610; GFX7-SDAG-NEXT:    v_bfe_i32 v0, v0, 0, 8611; GFX7-SDAG-NEXT:    v_bfe_i32 v6, v6, 0, 8612; GFX7-SDAG-NEXT:    v_bfe_i32 v2, v2, 0, 8613; GFX7-SDAG-NEXT:    v_bfe_i32 v7, v7, 0, 8614; GFX7-SDAG-NEXT:    v_bfe_i32 v3, v3, 0, 8615; GFX7-SDAG-NEXT:    v_min_i32_e32 v0, v0, v4616; GFX7-SDAG-NEXT:    v_min_i32_e32 v1, v1, v5617; GFX7-SDAG-NEXT:    v_min3_i32 v1, v1, v3, v7618; GFX7-SDAG-NEXT:    v_min3_i32 v0, v0, v2, v6619; GFX7-SDAG-NEXT:    v_min_i32_e32 v0, v0, v1620; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]621;622; GFX7-GISEL-LABEL: test_vector_reduce_smin_v8i8:623; GFX7-GISEL:       ; %bb.0: ; %entry624; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)625; GFX7-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 8626; GFX7-GISEL-NEXT:    v_bfe_i32 v4, v4, 0, 8627; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v4628; GFX7-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 8629; GFX7-GISEL-NEXT:    v_bfe_i32 v4, v5, 0, 8630; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, v1, v4631; GFX7-GISEL-NEXT:    v_bfe_i32 v2, v2, 0, 8632; GFX7-GISEL-NEXT:    v_bfe_i32 v4, v6, 0, 8633; GFX7-GISEL-NEXT:    v_min_i32_e32 v2, v2, v4634; GFX7-GISEL-NEXT:    v_bfe_i32 v3, v3, 0, 8635; GFX7-GISEL-NEXT:    v_bfe_i32 v4, v7, 0, 8636; GFX7-GISEL-NEXT:    v_min_i32_e32 v3, v3, v4637; GFX7-GISEL-NEXT:    s_sext_i32_i8 s4, s4638; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v2639; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, v1, v3640; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v1641; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, s4, v1642; GFX7-GISEL-NEXT:    v_min_i32_e32 v2, s4, v2643; GFX7-GISEL-NEXT:    v_and_b32_e32 v1, 0xff, v1644; GFX7-GISEL-NEXT:    v_min_i32_e32 v2, s4, v2645; GFX7-GISEL-NEXT:    v_and_b32_e32 v0, 0xff, v0646; GFX7-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 8, v1647; GFX7-GISEL-NEXT:    v_min_i32_e32 v3, s4, v3648; GFX7-GISEL-NEXT:    v_or_b32_e32 v0, v0, v1649; GFX7-GISEL-NEXT:    v_and_b32_e32 v1, 0xff, v2650; GFX7-GISEL-NEXT:    v_min_i32_e32 v3, s4, v3651; GFX7-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 16, v1652; GFX7-GISEL-NEXT:    v_or_b32_e32 v0, v0, v1653; GFX7-GISEL-NEXT:    v_and_b32_e32 v1, 0xff, v3654; GFX7-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 24, v1655; GFX7-GISEL-NEXT:    v_or_b32_e32 v0, v0, v1656; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]657;658; GFX8-SDAG-LABEL: test_vector_reduce_smin_v8i8:659; GFX8-SDAG:       ; %bb.0: ; %entry660; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)661; GFX8-SDAG-NEXT:    v_min_i16_sdwa v3, sext(v3), sext(v7) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0662; GFX8-SDAG-NEXT:    v_min_i16_sdwa v1, sext(v1), sext(v5) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0663; GFX8-SDAG-NEXT:    v_min_i16_sdwa v2, sext(v2), sext(v6) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0664; GFX8-SDAG-NEXT:    v_min_i16_sdwa v0, sext(v0), sext(v4) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0665; GFX8-SDAG-NEXT:    v_min_i16_sdwa v1, v1, v3 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD666; GFX8-SDAG-NEXT:    v_min_i16_e32 v0, v0, v2667; GFX8-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 8, v1668; GFX8-SDAG-NEXT:    v_min_i16_sdwa v0, v0, sext(v1) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0669; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]670;671; GFX8-GISEL-LABEL: test_vector_reduce_smin_v8i8:672; GFX8-GISEL:       ; %bb.0: ; %entry673; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)674; GFX8-GISEL-NEXT:    v_min_i16_sdwa v0, sext(v0), sext(v4) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0675; GFX8-GISEL-NEXT:    v_min_i16_sdwa v1, sext(v1), sext(v5) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0676; GFX8-GISEL-NEXT:    v_min_i16_sdwa v2, sext(v2), sext(v6) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0677; GFX8-GISEL-NEXT:    v_min_i16_sdwa v3, sext(v3), sext(v7) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0678; GFX8-GISEL-NEXT:    s_sext_i32_i8 s4, s4679; GFX8-GISEL-NEXT:    v_min_i16_e32 v0, v0, v2680; GFX8-GISEL-NEXT:    v_min_i16_e32 v1, v1, v3681; GFX8-GISEL-NEXT:    v_min_i16_e32 v2, s4, v2682; GFX8-GISEL-NEXT:    v_min_i16_e32 v0, v0, v1683; GFX8-GISEL-NEXT:    v_min_i16_e32 v1, s4, v1684; GFX8-GISEL-NEXT:    v_mov_b32_e32 v4, 8685; GFX8-GISEL-NEXT:    v_min_i16_e32 v2, s4, v2686; GFX8-GISEL-NEXT:    v_lshlrev_b32_sdwa v1, v4, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0687; GFX8-GISEL-NEXT:    v_min_i16_e32 v3, s4, v3688; GFX8-GISEL-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD689; GFX8-GISEL-NEXT:    v_and_b32_e32 v1, 0xff, v2690; GFX8-GISEL-NEXT:    v_min_i16_e32 v3, s4, v3691; GFX8-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 16, v1692; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v0, v1693; GFX8-GISEL-NEXT:    v_and_b32_e32 v1, 0xff, v3694; GFX8-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 24, v1695; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v0, v1696; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]697;698; GFX9-SDAG-LABEL: test_vector_reduce_smin_v8i8:699; GFX9-SDAG:       ; %bb.0: ; %entry700; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)701; GFX9-SDAG-NEXT:    v_bfe_i32 v7, v7, 0, 8702; GFX9-SDAG-NEXT:    v_bfe_i32 v3, v3, 0, 8703; GFX9-SDAG-NEXT:    v_min_i16_sdwa v1, sext(v1), sext(v5) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0704; GFX9-SDAG-NEXT:    v_min3_i16 v1, v1, v3, v7705; GFX9-SDAG-NEXT:    v_bfe_i32 v6, v6, 0, 8706; GFX9-SDAG-NEXT:    v_bfe_i32 v2, v2, 0, 8707; GFX9-SDAG-NEXT:    v_min_i16_sdwa v0, sext(v0), sext(v4) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0708; GFX9-SDAG-NEXT:    v_lshlrev_b16_e32 v1, 8, v1709; GFX9-SDAG-NEXT:    v_min3_i16 v0, v0, v2, v6710; GFX9-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 8, v1711; GFX9-SDAG-NEXT:    v_min_i16_sdwa v0, v0, sext(v1) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0712; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]713;714; GFX9-GISEL-LABEL: test_vector_reduce_smin_v8i8:715; GFX9-GISEL:       ; %bb.0: ; %entry716; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)717; GFX9-GISEL-NEXT:    v_min_i16_sdwa v0, sext(v0), sext(v4) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0718; GFX9-GISEL-NEXT:    v_min_i16_sdwa v1, sext(v1), sext(v5) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0719; GFX9-GISEL-NEXT:    v_min_i16_sdwa v2, sext(v2), sext(v6) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0720; GFX9-GISEL-NEXT:    v_min_i16_sdwa v3, sext(v3), sext(v7) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0721; GFX9-GISEL-NEXT:    s_sext_i32_i8 s0, s0722; GFX9-GISEL-NEXT:    v_min_i16_e32 v0, v0, v2723; GFX9-GISEL-NEXT:    v_min_i16_e32 v1, v1, v3724; GFX9-GISEL-NEXT:    v_min_i16_e32 v2, s0, v2725; GFX9-GISEL-NEXT:    v_min_i16_e32 v3, s0, v3726; GFX9-GISEL-NEXT:    v_min_i16_e32 v0, v0, v1727; GFX9-GISEL-NEXT:    v_min_i16_e32 v1, s0, v1728; GFX9-GISEL-NEXT:    v_mov_b32_e32 v5, 8729; GFX9-GISEL-NEXT:    v_min_i16_e32 v2, s0, v2730; GFX9-GISEL-NEXT:    v_min_i16_e32 v3, s0, v3731; GFX9-GISEL-NEXT:    v_mov_b32_e32 v4, 0xff732; GFX9-GISEL-NEXT:    v_lshlrev_b32_sdwa v1, v5, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0733; GFX9-GISEL-NEXT:    v_and_or_b32 v0, v0, v4, v1734; GFX9-GISEL-NEXT:    v_and_b32_e32 v1, 0xff, v2735; GFX9-GISEL-NEXT:    v_and_b32_e32 v2, 0xff, v3736; GFX9-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 16, v1737; GFX9-GISEL-NEXT:    v_lshlrev_b32_e32 v2, 24, v2738; GFX9-GISEL-NEXT:    v_or3_b32 v0, v0, v1, v2739; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]740;741; GFX10-SDAG-LABEL: test_vector_reduce_smin_v8i8:742; GFX10-SDAG:       ; %bb.0: ; %entry743; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)744; GFX10-SDAG-NEXT:    v_bfe_i32 v5, v5, 0, 8745; GFX10-SDAG-NEXT:    v_bfe_i32 v1, v1, 0, 8746; GFX10-SDAG-NEXT:    v_bfe_i32 v7, v7, 0, 8747; GFX10-SDAG-NEXT:    v_bfe_i32 v3, v3, 0, 8748; GFX10-SDAG-NEXT:    v_bfe_i32 v0, v0, 0, 8749; GFX10-SDAG-NEXT:    v_bfe_i32 v2, v2, 0, 8750; GFX10-SDAG-NEXT:    v_min_i16 v1, v1, v5751; GFX10-SDAG-NEXT:    v_min3_i16 v1, v1, v3, v7752; GFX10-SDAG-NEXT:    v_bfe_i32 v3, v4, 0, 8753; GFX10-SDAG-NEXT:    v_bfe_i32 v4, v6, 0, 8754; GFX10-SDAG-NEXT:    v_lshlrev_b16 v1, 8, v1755; GFX10-SDAG-NEXT:    v_min_i16 v0, v0, v3756; GFX10-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 8, v1757; GFX10-SDAG-NEXT:    v_min3_i16 v0, v0, v2, v4758; GFX10-SDAG-NEXT:    v_bfe_i32 v1, v1, 0, 8759; GFX10-SDAG-NEXT:    v_min_i16 v0, v0, v1760; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]761;762; GFX10-GISEL-LABEL: test_vector_reduce_smin_v8i8:763; GFX10-GISEL:       ; %bb.0: ; %entry764; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)765; GFX10-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 8766; GFX10-GISEL-NEXT:    v_bfe_i32 v5, v5, 0, 8767; GFX10-GISEL-NEXT:    v_bfe_i32 v3, v3, 0, 8768; GFX10-GISEL-NEXT:    v_bfe_i32 v7, v7, 0, 8769; GFX10-GISEL-NEXT:    v_bfe_i32 v2, v2, 0, 8770; GFX10-GISEL-NEXT:    v_bfe_i32 v6, v6, 0, 8771; GFX10-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 8772; GFX10-GISEL-NEXT:    v_bfe_i32 v4, v4, 0, 8773; GFX10-GISEL-NEXT:    v_min_i16 v1, v1, v5774; GFX10-GISEL-NEXT:    v_min_i16 v3, v3, v7775; GFX10-GISEL-NEXT:    v_min_i16 v2, v2, v6776; GFX10-GISEL-NEXT:    s_sext_i32_i8 s4, s4777; GFX10-GISEL-NEXT:    v_min_i16 v0, v0, v4778; GFX10-GISEL-NEXT:    v_mov_b32_e32 v5, 8779; GFX10-GISEL-NEXT:    v_min_i16 v1, v1, v3780; GFX10-GISEL-NEXT:    v_min_i16 v4, v2, s4781; GFX10-GISEL-NEXT:    v_min_i16 v3, v3, s4782; GFX10-GISEL-NEXT:    v_min_i16 v0, v0, v2783; GFX10-GISEL-NEXT:    v_min_i16 v2, v1, s4784; GFX10-GISEL-NEXT:    v_min_i16 v4, v4, s4785; GFX10-GISEL-NEXT:    v_min_i16 v3, v3, s4786; GFX10-GISEL-NEXT:    v_min_i16 v0, v0, v1787; GFX10-GISEL-NEXT:    v_lshlrev_b32_sdwa v1, v5, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0788; GFX10-GISEL-NEXT:    v_and_b32_e32 v2, 0xff, v4789; GFX10-GISEL-NEXT:    v_and_b32_e32 v3, 0xff, v3790; GFX10-GISEL-NEXT:    v_and_or_b32 v0, 0xff, v0, v1791; GFX10-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 16, v2792; GFX10-GISEL-NEXT:    v_lshlrev_b32_e32 v2, 24, v3793; GFX10-GISEL-NEXT:    v_or3_b32 v0, v0, v1, v2794; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]795;796; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_smin_v8i8:797; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry798; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)799; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v5, v5, 0, 8800; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v1, v1, 0, 8801; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v8, v3, 0, 8802; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v7, v7, 0, 8803; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v2, v2, 0, 8804; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v5.l805; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)806; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v8.l807; GFX11-SDAG-TRUE16-NEXT:    v_min_i16 v1.l, v1.l, v3.l808; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v7.l809; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v0.l810; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)811; GFX11-SDAG-TRUE16-NEXT:    v_min3_i16 v0.l, v1.l, v5.l, v3.l812; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v1, v7, 0, 8813; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v3, v4, 0, 8814; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v4.l, v6.l815; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)816; GFX11-SDAG-TRUE16-NEXT:    v_lshlrev_b16 v5.l, 8, v0.l817; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v1.l818; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)819; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v3.l820; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v3, v4, 0, 8821; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)822; GFX11-SDAG-TRUE16-NEXT:    v_lshrrev_b32_e32 v4, 8, v5823; GFX11-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v0.l, v1.l824; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v2.l825; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)826; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v3.l827; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v3, v4, 0, 8828; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)829; GFX11-SDAG-TRUE16-NEXT:    v_min3_i16 v0.l, v0.l, v1.l, v2.l830; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v3.l831; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)832; GFX11-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v0.l, v1.l833; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]834;835; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_smin_v8i8:836; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry837; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)838; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v5, v5, 0, 8839; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v1, v1, 0, 8840; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v7, v7, 0, 8841; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v3, v3, 0, 8842; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v0, v0, 0, 8843; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v2, v2, 0, 8844; GFX11-SDAG-FAKE16-NEXT:    v_min_i16 v1, v1, v5845; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)846; GFX11-SDAG-FAKE16-NEXT:    v_min3_i16 v1, v1, v3, v7847; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v3, v4, 0, 8848; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v4, v6, 0, 8849; GFX11-SDAG-FAKE16-NEXT:    v_lshlrev_b16 v1, 8, v1850; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)851; GFX11-SDAG-FAKE16-NEXT:    v_min_i16 v0, v0, v3852; GFX11-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v1853; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)854; GFX11-SDAG-FAKE16-NEXT:    v_min3_i16 v0, v0, v2, v4855; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v1, v1, 0, 8856; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)857; GFX11-SDAG-FAKE16-NEXT:    v_min_i16 v0, v0, v1858; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]859;860; GFX11-GISEL-LABEL: test_vector_reduce_smin_v8i8:861; GFX11-GISEL:       ; %bb.0: ; %entry862; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)863; GFX11-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 8864; GFX11-GISEL-NEXT:    v_bfe_i32 v5, v5, 0, 8865; GFX11-GISEL-NEXT:    v_bfe_i32 v3, v3, 0, 8866; GFX11-GISEL-NEXT:    v_bfe_i32 v7, v7, 0, 8867; GFX11-GISEL-NEXT:    v_bfe_i32 v2, v2, 0, 8868; GFX11-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 8869; GFX11-GISEL-NEXT:    v_min_i16 v1, v1, v5870; GFX11-GISEL-NEXT:    v_bfe_i32 v5, v6, 0, 8871; GFX11-GISEL-NEXT:    v_min_i16 v3, v3, v7872; GFX11-GISEL-NEXT:    v_bfe_i32 v4, v4, 0, 8873; GFX11-GISEL-NEXT:    s_sext_i32_i8 s0, s0874; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)875; GFX11-GISEL-NEXT:    v_min_i16 v2, v2, v5876; GFX11-GISEL-NEXT:    v_min_i16 v1, v1, v3877; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)878; GFX11-GISEL-NEXT:    v_min_i16 v0, v0, v4879; GFX11-GISEL-NEXT:    v_min_i16 v3, v3, s0880; GFX11-GISEL-NEXT:    v_min_i16 v4, v2, s0881; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)882; GFX11-GISEL-NEXT:    v_min_i16 v5, v1, s0883; GFX11-GISEL-NEXT:    v_min_i16 v0, v0, v2884; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)885; GFX11-GISEL-NEXT:    v_min_i16 v3, v3, s0886; GFX11-GISEL-NEXT:    v_min_i16 v2, v4, s0887; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)888; GFX11-GISEL-NEXT:    v_and_b32_e32 v4, 0xff, v5889; GFX11-GISEL-NEXT:    v_min_i16 v0, v0, v1890; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)891; GFX11-GISEL-NEXT:    v_and_b32_e32 v3, 0xff, v3892; GFX11-GISEL-NEXT:    v_and_b32_e32 v1, 0xff, v2893; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)894; GFX11-GISEL-NEXT:    v_lshlrev_b32_e32 v2, 8, v4895; GFX11-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 16, v1896; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)897; GFX11-GISEL-NEXT:    v_and_or_b32 v0, 0xff, v0, v2898; GFX11-GISEL-NEXT:    v_lshlrev_b32_e32 v2, 24, v3899; GFX11-GISEL-NEXT:    v_or3_b32 v0, v0, v1, v2900; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]901;902; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_smin_v8i8:903; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry904; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0905; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x0906; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x0907; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x0908; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x0909; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v5, v5, 0, 8910; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v1, v1, 0, 8911; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v8, v3, 0, 8912; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v7, v7, 0, 8913; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v2, v2, 0, 8914; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v5.l915; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)916; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v8.l917; GFX12-SDAG-TRUE16-NEXT:    v_min_i16 v1.l, v1.l, v3.l918; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v7.l919; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v0.l920; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)921; GFX12-SDAG-TRUE16-NEXT:    v_min3_i16 v0.l, v1.l, v5.l, v3.l922; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v1, v7, 0, 8923; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v3, v4, 0, 8924; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v4.l, v6.l925; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)926; GFX12-SDAG-TRUE16-NEXT:    v_lshlrev_b16 v5.l, 8, v0.l927; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v1.l928; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)929; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v3.l930; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v3, v4, 0, 8931; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)932; GFX12-SDAG-TRUE16-NEXT:    v_lshrrev_b32_e32 v4, 8, v5933; GFX12-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v0.l, v1.l934; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v2.l935; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)936; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v3.l937; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v3, v4, 0, 8938; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)939; GFX12-SDAG-TRUE16-NEXT:    v_min3_i16 v0.l, v0.l, v1.l, v2.l940; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v3.l941; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)942; GFX12-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v0.l, v1.l943; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]944;945; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_smin_v8i8:946; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry947; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0948; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x0949; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x0950; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x0951; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x0952; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v5, v5, 0, 8953; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v1, v1, 0, 8954; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v7, v7, 0, 8955; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v3, v3, 0, 8956; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v0, v0, 0, 8957; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v2, v2, 0, 8958; GFX12-SDAG-FAKE16-NEXT:    v_min_i16 v1, v1, v5959; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)960; GFX12-SDAG-FAKE16-NEXT:    v_min3_i16 v1, v1, v3, v7961; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v3, v4, 0, 8962; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v4, v6, 0, 8963; GFX12-SDAG-FAKE16-NEXT:    v_lshlrev_b16 v1, 8, v1964; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)965; GFX12-SDAG-FAKE16-NEXT:    v_min_i16 v0, v0, v3966; GFX12-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v1967; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)968; GFX12-SDAG-FAKE16-NEXT:    v_min3_i16 v0, v0, v2, v4969; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v1, v1, 0, 8970; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)971; GFX12-SDAG-FAKE16-NEXT:    v_min_i16 v0, v0, v1972; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]973;974; GFX12-GISEL-LABEL: test_vector_reduce_smin_v8i8:975; GFX12-GISEL:       ; %bb.0: ; %entry976; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0977; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0978; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0979; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0980; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0981; GFX12-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 8982; GFX12-GISEL-NEXT:    v_bfe_i32 v5, v5, 0, 8983; GFX12-GISEL-NEXT:    v_bfe_i32 v3, v3, 0, 8984; GFX12-GISEL-NEXT:    v_bfe_i32 v7, v7, 0, 8985; GFX12-GISEL-NEXT:    v_bfe_i32 v2, v2, 0, 8986; GFX12-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 8987; GFX12-GISEL-NEXT:    v_min_i16 v1, v1, v5988; GFX12-GISEL-NEXT:    v_bfe_i32 v5, v6, 0, 8989; GFX12-GISEL-NEXT:    v_min_i16 v3, v3, v7990; GFX12-GISEL-NEXT:    v_bfe_i32 v4, v4, 0, 8991; GFX12-GISEL-NEXT:    s_sext_i32_i8 s0, s0992; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)993; GFX12-GISEL-NEXT:    v_min_i16 v2, v2, v5994; GFX12-GISEL-NEXT:    v_min_i16 v1, v1, v3995; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3)996; GFX12-GISEL-NEXT:    v_min_i16 v0, v0, v4997; GFX12-GISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)998; GFX12-GISEL-NEXT:    v_min_i16 v3, v3, s0999; GFX12-GISEL-NEXT:    v_min_i16 v4, v2, s01000; GFX12-GISEL-NEXT:    v_min_i16 v5, v1, s01001; GFX12-GISEL-NEXT:    v_min_i16 v0, v0, v21002; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1003; GFX12-GISEL-NEXT:    v_min_i16 v3, v3, s01004; GFX12-GISEL-NEXT:    v_min_i16 v2, v4, s01005; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1006; GFX12-GISEL-NEXT:    v_and_b32_e32 v4, 0xff, v51007; GFX12-GISEL-NEXT:    v_min_i16 v0, v0, v11008; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1009; GFX12-GISEL-NEXT:    v_and_b32_e32 v3, 0xff, v31010; GFX12-GISEL-NEXT:    v_and_b32_e32 v1, 0xff, v21011; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)1012; GFX12-GISEL-NEXT:    v_lshlrev_b32_e32 v2, 8, v41013; GFX12-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 16, v11014; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)1015; GFX12-GISEL-NEXT:    v_and_or_b32 v0, 0xff, v0, v21016; GFX12-GISEL-NEXT:    v_lshlrev_b32_e32 v2, 24, v31017; GFX12-GISEL-NEXT:    v_or3_b32 v0, v0, v1, v21018; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]1019entry:1020  %res = call i8 @llvm.vector.reduce.smin.v8i8(<8 x i8> %v)1021  ret i8 %res1022}1023 1024define i8 @test_vector_reduce_smin_v16i8(<16 x i8> %v) {1025; GFX7-SDAG-LABEL: test_vector_reduce_smin_v16i8:1026; GFX7-SDAG:       ; %bb.0: ; %entry1027; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1028; GFX7-SDAG-NEXT:    v_bfe_i32 v8, v8, 0, 81029; GFX7-SDAG-NEXT:    v_bfe_i32 v0, v0, 0, 81030; GFX7-SDAG-NEXT:    v_bfe_i32 v9, v9, 0, 81031; GFX7-SDAG-NEXT:    v_bfe_i32 v1, v1, 0, 81032; GFX7-SDAG-NEXT:    v_bfe_i32 v13, v13, 0, 81033; GFX7-SDAG-NEXT:    v_bfe_i32 v5, v5, 0, 81034; GFX7-SDAG-NEXT:    v_bfe_i32 v12, v12, 0, 81035; GFX7-SDAG-NEXT:    v_bfe_i32 v4, v4, 0, 81036; GFX7-SDAG-NEXT:    v_bfe_i32 v11, v11, 0, 81037; GFX7-SDAG-NEXT:    v_bfe_i32 v3, v3, 0, 81038; GFX7-SDAG-NEXT:    v_bfe_i32 v15, v15, 0, 81039; GFX7-SDAG-NEXT:    v_bfe_i32 v7, v7, 0, 81040; GFX7-SDAG-NEXT:    v_bfe_i32 v10, v10, 0, 81041; GFX7-SDAG-NEXT:    v_bfe_i32 v2, v2, 0, 81042; GFX7-SDAG-NEXT:    v_bfe_i32 v14, v14, 0, 81043; GFX7-SDAG-NEXT:    v_bfe_i32 v6, v6, 0, 81044; GFX7-SDAG-NEXT:    v_min_i32_e32 v1, v1, v91045; GFX7-SDAG-NEXT:    v_min_i32_e32 v0, v0, v81046; GFX7-SDAG-NEXT:    v_min_i32_e32 v6, v6, v141047; GFX7-SDAG-NEXT:    v_min_i32_e32 v2, v2, v101048; GFX7-SDAG-NEXT:    v_min_i32_e32 v7, v7, v151049; GFX7-SDAG-NEXT:    v_min_i32_e32 v3, v3, v111050; GFX7-SDAG-NEXT:    v_min3_i32 v0, v0, v4, v121051; GFX7-SDAG-NEXT:    v_min3_i32 v1, v1, v5, v131052; GFX7-SDAG-NEXT:    v_min3_i32 v1, v1, v3, v71053; GFX7-SDAG-NEXT:    v_min3_i32 v0, v0, v2, v61054; GFX7-SDAG-NEXT:    v_min_i32_e32 v0, v0, v11055; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]1056;1057; GFX7-GISEL-LABEL: test_vector_reduce_smin_v16i8:1058; GFX7-GISEL:       ; %bb.0: ; %entry1059; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1060; GFX7-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 81061; GFX7-GISEL-NEXT:    v_bfe_i32 v8, v8, 0, 81062; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v81063; GFX7-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 81064; GFX7-GISEL-NEXT:    v_bfe_i32 v8, v9, 0, 81065; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, v1, v81066; GFX7-GISEL-NEXT:    v_bfe_i32 v2, v2, 0, 81067; GFX7-GISEL-NEXT:    v_bfe_i32 v8, v10, 0, 81068; GFX7-GISEL-NEXT:    v_min_i32_e32 v2, v2, v81069; GFX7-GISEL-NEXT:    v_bfe_i32 v3, v3, 0, 81070; GFX7-GISEL-NEXT:    v_bfe_i32 v8, v11, 0, 81071; GFX7-GISEL-NEXT:    v_min_i32_e32 v3, v3, v81072; GFX7-GISEL-NEXT:    v_bfe_i32 v4, v4, 0, 81073; GFX7-GISEL-NEXT:    v_bfe_i32 v8, v12, 0, 81074; GFX7-GISEL-NEXT:    v_min_i32_e32 v4, v4, v81075; GFX7-GISEL-NEXT:    v_bfe_i32 v5, v5, 0, 81076; GFX7-GISEL-NEXT:    v_bfe_i32 v8, v13, 0, 81077; GFX7-GISEL-NEXT:    v_min_i32_e32 v5, v5, v81078; GFX7-GISEL-NEXT:    v_bfe_i32 v6, v6, 0, 81079; GFX7-GISEL-NEXT:    v_bfe_i32 v8, v14, 0, 81080; GFX7-GISEL-NEXT:    v_min_i32_e32 v6, v6, v81081; GFX7-GISEL-NEXT:    v_bfe_i32 v7, v7, 0, 81082; GFX7-GISEL-NEXT:    v_bfe_i32 v8, v15, 0, 81083; GFX7-GISEL-NEXT:    v_min_i32_e32 v7, v7, v81084; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v41085; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, v1, v51086; GFX7-GISEL-NEXT:    v_min_i32_e32 v2, v2, v61087; GFX7-GISEL-NEXT:    v_min_i32_e32 v3, v3, v71088; GFX7-GISEL-NEXT:    s_sext_i32_i8 s4, s41089; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v21090; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, v1, v31091; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v11092; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, s4, v11093; GFX7-GISEL-NEXT:    v_min_i32_e32 v2, s4, v21094; GFX7-GISEL-NEXT:    v_and_b32_e32 v1, 0xff, v11095; GFX7-GISEL-NEXT:    v_min_i32_e32 v2, s4, v21096; GFX7-GISEL-NEXT:    v_and_b32_e32 v0, 0xff, v01097; GFX7-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 8, v11098; GFX7-GISEL-NEXT:    v_min_i32_e32 v3, s4, v31099; GFX7-GISEL-NEXT:    v_or_b32_e32 v0, v0, v11100; GFX7-GISEL-NEXT:    v_and_b32_e32 v1, 0xff, v21101; GFX7-GISEL-NEXT:    v_min_i32_e32 v3, s4, v31102; GFX7-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 16, v11103; GFX7-GISEL-NEXT:    v_or_b32_e32 v0, v0, v11104; GFX7-GISEL-NEXT:    v_and_b32_e32 v1, 0xff, v31105; GFX7-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 24, v11106; GFX7-GISEL-NEXT:    v_or_b32_e32 v0, v0, v11107; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]1108;1109; GFX8-SDAG-LABEL: test_vector_reduce_smin_v16i8:1110; GFX8-SDAG:       ; %bb.0: ; %entry1111; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1112; GFX8-SDAG-NEXT:    v_min_i16_sdwa v5, sext(v5), sext(v13) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01113; GFX8-SDAG-NEXT:    v_min_i16_sdwa v1, sext(v1), sext(v9) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01114; GFX8-SDAG-NEXT:    v_min_i16_sdwa v7, sext(v7), sext(v15) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01115; GFX8-SDAG-NEXT:    v_min_i16_sdwa v3, sext(v3), sext(v11) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01116; GFX8-SDAG-NEXT:    v_min_i16_sdwa v4, sext(v4), sext(v12) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01117; GFX8-SDAG-NEXT:    v_min_i16_sdwa v0, sext(v0), sext(v8) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01118; GFX8-SDAG-NEXT:    v_min_i16_sdwa v6, sext(v6), sext(v14) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01119; GFX8-SDAG-NEXT:    v_min_i16_sdwa v2, sext(v2), sext(v10) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01120; GFX8-SDAG-NEXT:    v_min_i16_e32 v3, v3, v71121; GFX8-SDAG-NEXT:    v_min_i16_e32 v1, v1, v51122; GFX8-SDAG-NEXT:    v_min_i16_e32 v2, v2, v61123; GFX8-SDAG-NEXT:    v_min_i16_e32 v0, v0, v41124; GFX8-SDAG-NEXT:    v_min_i16_sdwa v1, v1, v3 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD1125; GFX8-SDAG-NEXT:    v_min_i16_e32 v0, v0, v21126; GFX8-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 8, v11127; GFX8-SDAG-NEXT:    v_min_i16_sdwa v0, v0, sext(v1) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_01128; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]1129;1130; GFX8-GISEL-LABEL: test_vector_reduce_smin_v16i8:1131; GFX8-GISEL:       ; %bb.0: ; %entry1132; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1133; GFX8-GISEL-NEXT:    v_min_i16_sdwa v0, sext(v0), sext(v8) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01134; GFX8-GISEL-NEXT:    v_min_i16_sdwa v1, sext(v1), sext(v9) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01135; GFX8-GISEL-NEXT:    v_min_i16_sdwa v2, sext(v2), sext(v10) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01136; GFX8-GISEL-NEXT:    v_min_i16_sdwa v3, sext(v3), sext(v11) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01137; GFX8-GISEL-NEXT:    v_min_i16_sdwa v4, sext(v4), sext(v12) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01138; GFX8-GISEL-NEXT:    v_min_i16_sdwa v5, sext(v5), sext(v13) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01139; GFX8-GISEL-NEXT:    v_min_i16_sdwa v6, sext(v6), sext(v14) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01140; GFX8-GISEL-NEXT:    v_min_i16_sdwa v7, sext(v7), sext(v15) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01141; GFX8-GISEL-NEXT:    v_min_i16_e32 v0, v0, v41142; GFX8-GISEL-NEXT:    v_min_i16_e32 v1, v1, v51143; GFX8-GISEL-NEXT:    v_min_i16_e32 v2, v2, v61144; GFX8-GISEL-NEXT:    v_min_i16_e32 v3, v3, v71145; GFX8-GISEL-NEXT:    s_sext_i32_i8 s4, s41146; GFX8-GISEL-NEXT:    v_min_i16_e32 v0, v0, v21147; GFX8-GISEL-NEXT:    v_min_i16_e32 v1, v1, v31148; GFX8-GISEL-NEXT:    v_min_i16_e32 v2, s4, v21149; GFX8-GISEL-NEXT:    v_min_i16_e32 v0, v0, v11150; GFX8-GISEL-NEXT:    v_min_i16_e32 v1, s4, v11151; GFX8-GISEL-NEXT:    v_mov_b32_e32 v4, 81152; GFX8-GISEL-NEXT:    v_min_i16_e32 v2, s4, v21153; GFX8-GISEL-NEXT:    v_lshlrev_b32_sdwa v1, v4, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_01154; GFX8-GISEL-NEXT:    v_min_i16_e32 v3, s4, v31155; GFX8-GISEL-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD1156; GFX8-GISEL-NEXT:    v_and_b32_e32 v1, 0xff, v21157; GFX8-GISEL-NEXT:    v_min_i16_e32 v3, s4, v31158; GFX8-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 16, v11159; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v0, v11160; GFX8-GISEL-NEXT:    v_and_b32_e32 v1, 0xff, v31161; GFX8-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 24, v11162; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v0, v11163; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]1164;1165; GFX9-SDAG-LABEL: test_vector_reduce_smin_v16i8:1166; GFX9-SDAG:       ; %bb.0: ; %entry1167; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1168; GFX9-SDAG-NEXT:    v_bfe_i32 v13, v13, 0, 81169; GFX9-SDAG-NEXT:    v_bfe_i32 v5, v5, 0, 81170; GFX9-SDAG-NEXT:    v_min_i16_sdwa v1, sext(v1), sext(v9) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01171; GFX9-SDAG-NEXT:    v_min_i16_sdwa v7, sext(v7), sext(v15) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01172; GFX9-SDAG-NEXT:    v_min_i16_sdwa v3, sext(v3), sext(v11) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01173; GFX9-SDAG-NEXT:    v_min3_i16 v1, v1, v5, v131174; GFX9-SDAG-NEXT:    v_bfe_i32 v12, v12, 0, 81175; GFX9-SDAG-NEXT:    v_bfe_i32 v4, v4, 0, 81176; GFX9-SDAG-NEXT:    v_min_i16_sdwa v0, sext(v0), sext(v8) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01177; GFX9-SDAG-NEXT:    v_min3_i16 v1, v1, v3, v71178; GFX9-SDAG-NEXT:    v_min_i16_sdwa v6, sext(v6), sext(v14) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01179; GFX9-SDAG-NEXT:    v_min_i16_sdwa v2, sext(v2), sext(v10) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01180; GFX9-SDAG-NEXT:    v_min3_i16 v0, v0, v4, v121181; GFX9-SDAG-NEXT:    v_lshlrev_b16_e32 v1, 8, v11182; GFX9-SDAG-NEXT:    v_min3_i16 v0, v0, v2, v61183; GFX9-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 8, v11184; GFX9-SDAG-NEXT:    v_min_i16_sdwa v0, v0, sext(v1) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_01185; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]1186;1187; GFX9-GISEL-LABEL: test_vector_reduce_smin_v16i8:1188; GFX9-GISEL:       ; %bb.0: ; %entry1189; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1190; GFX9-GISEL-NEXT:    v_min_i16_sdwa v0, sext(v0), sext(v8) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01191; GFX9-GISEL-NEXT:    v_min_i16_sdwa v1, sext(v1), sext(v9) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01192; GFX9-GISEL-NEXT:    v_min_i16_sdwa v2, sext(v2), sext(v10) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01193; GFX9-GISEL-NEXT:    v_min_i16_sdwa v3, sext(v3), sext(v11) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01194; GFX9-GISEL-NEXT:    v_min_i16_sdwa v4, sext(v4), sext(v12) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01195; GFX9-GISEL-NEXT:    v_min_i16_sdwa v5, sext(v5), sext(v13) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01196; GFX9-GISEL-NEXT:    v_min_i16_sdwa v6, sext(v6), sext(v14) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01197; GFX9-GISEL-NEXT:    v_min_i16_sdwa v7, sext(v7), sext(v15) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01198; GFX9-GISEL-NEXT:    v_min_i16_e32 v0, v0, v41199; GFX9-GISEL-NEXT:    v_min_i16_e32 v1, v1, v51200; GFX9-GISEL-NEXT:    v_min_i16_e32 v2, v2, v61201; GFX9-GISEL-NEXT:    v_min_i16_e32 v3, v3, v71202; GFX9-GISEL-NEXT:    s_sext_i32_i8 s0, s01203; GFX9-GISEL-NEXT:    v_min_i16_e32 v0, v0, v21204; GFX9-GISEL-NEXT:    v_min_i16_e32 v1, v1, v31205; GFX9-GISEL-NEXT:    v_min_i16_e32 v2, s0, v21206; GFX9-GISEL-NEXT:    v_min_i16_e32 v3, s0, v31207; GFX9-GISEL-NEXT:    v_min_i16_e32 v0, v0, v11208; GFX9-GISEL-NEXT:    v_min_i16_e32 v1, s0, v11209; GFX9-GISEL-NEXT:    v_mov_b32_e32 v5, 81210; GFX9-GISEL-NEXT:    v_min_i16_e32 v2, s0, v21211; GFX9-GISEL-NEXT:    v_min_i16_e32 v3, s0, v31212; GFX9-GISEL-NEXT:    v_mov_b32_e32 v4, 0xff1213; GFX9-GISEL-NEXT:    v_lshlrev_b32_sdwa v1, v5, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_01214; GFX9-GISEL-NEXT:    v_and_or_b32 v0, v0, v4, v11215; GFX9-GISEL-NEXT:    v_and_b32_e32 v1, 0xff, v21216; GFX9-GISEL-NEXT:    v_and_b32_e32 v2, 0xff, v31217; GFX9-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 16, v11218; GFX9-GISEL-NEXT:    v_lshlrev_b32_e32 v2, 24, v21219; GFX9-GISEL-NEXT:    v_or3_b32 v0, v0, v1, v21220; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]1221;1222; GFX10-SDAG-LABEL: test_vector_reduce_smin_v16i8:1223; GFX10-SDAG:       ; %bb.0: ; %entry1224; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1225; GFX10-SDAG-NEXT:    v_bfe_i32 v9, v9, 0, 81226; GFX10-SDAG-NEXT:    v_bfe_i32 v1, v1, 0, 81227; GFX10-SDAG-NEXT:    v_bfe_i32 v13, v13, 0, 81228; GFX10-SDAG-NEXT:    v_bfe_i32 v5, v5, 0, 81229; GFX10-SDAG-NEXT:    v_bfe_i32 v11, v11, 0, 81230; GFX10-SDAG-NEXT:    v_bfe_i32 v15, v15, 0, 81231; GFX10-SDAG-NEXT:    v_bfe_i32 v7, v7, 0, 81232; GFX10-SDAG-NEXT:    v_bfe_i32 v3, v3, 0, 81233; GFX10-SDAG-NEXT:    v_min_i16 v1, v1, v91234; GFX10-SDAG-NEXT:    v_bfe_i32 v0, v0, 0, 81235; GFX10-SDAG-NEXT:    v_bfe_i32 v9, v12, 0, 81236; GFX10-SDAG-NEXT:    v_min_i16 v7, v7, v151237; GFX10-SDAG-NEXT:    v_min_i16 v3, v3, v111238; GFX10-SDAG-NEXT:    v_min3_i16 v1, v1, v5, v131239; GFX10-SDAG-NEXT:    v_bfe_i32 v5, v8, 0, 81240; GFX10-SDAG-NEXT:    v_bfe_i32 v4, v4, 0, 81241; GFX10-SDAG-NEXT:    v_bfe_i32 v8, v10, 0, 81242; GFX10-SDAG-NEXT:    v_bfe_i32 v6, v6, 0, 81243; GFX10-SDAG-NEXT:    v_min3_i16 v1, v1, v3, v71244; GFX10-SDAG-NEXT:    v_bfe_i32 v3, v14, 0, 81245; GFX10-SDAG-NEXT:    v_bfe_i32 v2, v2, 0, 81246; GFX10-SDAG-NEXT:    v_min_i16 v0, v0, v51247; GFX10-SDAG-NEXT:    v_lshlrev_b16 v1, 8, v11248; GFX10-SDAG-NEXT:    v_min_i16 v3, v6, v31249; GFX10-SDAG-NEXT:    v_min_i16 v2, v2, v81250; GFX10-SDAG-NEXT:    v_min3_i16 v0, v0, v4, v91251; GFX10-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 8, v11252; GFX10-SDAG-NEXT:    v_min3_i16 v0, v0, v2, v31253; GFX10-SDAG-NEXT:    v_bfe_i32 v1, v1, 0, 81254; GFX10-SDAG-NEXT:    v_min_i16 v0, v0, v11255; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]1256;1257; GFX10-GISEL-LABEL: test_vector_reduce_smin_v16i8:1258; GFX10-GISEL:       ; %bb.0: ; %entry1259; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1260; GFX10-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 81261; GFX10-GISEL-NEXT:    v_bfe_i32 v8, v8, 0, 81262; GFX10-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 81263; GFX10-GISEL-NEXT:    v_bfe_i32 v9, v9, 0, 81264; GFX10-GISEL-NEXT:    v_bfe_i32 v3, v3, 0, 81265; GFX10-GISEL-NEXT:    v_bfe_i32 v11, v11, 0, 81266; GFX10-GISEL-NEXT:    v_min_i16 v0, v0, v81267; GFX10-GISEL-NEXT:    v_bfe_i32 v2, v2, 0, 81268; GFX10-GISEL-NEXT:    v_min_i16 v1, v1, v91269; GFX10-GISEL-NEXT:    v_bfe_i32 v8, v10, 0, 81270; GFX10-GISEL-NEXT:    v_min_i16 v3, v3, v111271; GFX10-GISEL-NEXT:    v_bfe_i32 v5, v5, 0, 81272; GFX10-GISEL-NEXT:    v_bfe_i32 v9, v13, 0, 81273; GFX10-GISEL-NEXT:    v_bfe_i32 v7, v7, 0, 81274; GFX10-GISEL-NEXT:    v_bfe_i32 v10, v15, 0, 81275; GFX10-GISEL-NEXT:    v_bfe_i32 v6, v6, 0, 81276; GFX10-GISEL-NEXT:    v_bfe_i32 v11, v14, 0, 81277; GFX10-GISEL-NEXT:    v_bfe_i32 v4, v4, 0, 81278; GFX10-GISEL-NEXT:    v_bfe_i32 v12, v12, 0, 81279; GFX10-GISEL-NEXT:    v_min_i16 v5, v5, v91280; GFX10-GISEL-NEXT:    v_min_i16 v7, v7, v101281; GFX10-GISEL-NEXT:    v_min_i16 v2, v2, v81282; GFX10-GISEL-NEXT:    v_min_i16 v6, v6, v111283; GFX10-GISEL-NEXT:    v_min_i16 v4, v4, v121284; GFX10-GISEL-NEXT:    v_min_i16 v1, v1, v51285; GFX10-GISEL-NEXT:    v_min_i16 v3, v3, v71286; GFX10-GISEL-NEXT:    s_sext_i32_i8 s4, s41287; GFX10-GISEL-NEXT:    v_min_i16 v2, v2, v61288; GFX10-GISEL-NEXT:    v_min_i16 v0, v0, v41289; GFX10-GISEL-NEXT:    v_mov_b32_e32 v5, 81290; GFX10-GISEL-NEXT:    v_min_i16 v1, v1, v31291; GFX10-GISEL-NEXT:    v_min_i16 v3, v3, s41292; GFX10-GISEL-NEXT:    v_min_i16 v4, v2, s41293; GFX10-GISEL-NEXT:    v_min_i16 v0, v0, v21294; GFX10-GISEL-NEXT:    v_min_i16 v2, v1, s41295; GFX10-GISEL-NEXT:    v_min_i16 v3, v3, s41296; GFX10-GISEL-NEXT:    v_min_i16 v4, v4, s41297; GFX10-GISEL-NEXT:    v_min_i16 v0, v0, v11298; GFX10-GISEL-NEXT:    v_lshlrev_b32_sdwa v1, v5, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_01299; GFX10-GISEL-NEXT:    v_and_b32_e32 v3, 0xff, v31300; GFX10-GISEL-NEXT:    v_and_b32_e32 v2, 0xff, v41301; GFX10-GISEL-NEXT:    v_and_or_b32 v0, 0xff, v0, v11302; GFX10-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 16, v21303; GFX10-GISEL-NEXT:    v_lshlrev_b32_e32 v2, 24, v31304; GFX10-GISEL-NEXT:    v_or3_b32 v0, v0, v1, v21305; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]1306;1307; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_smin_v16i8:1308; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry1309; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1310; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v16, v4, 0, 81311; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v4.l, v5.l1312; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v9.l1313; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v1, v1, 0, 81314; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v17, v0, 0, 81315; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v11.l1316; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v9, v4, 0, 81317; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v4, v5, 0, 81318; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v15.l1319; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v13, v13, 0, 81320; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v18.l, v2.l1321; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.l1322; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v6.l1323; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v6, v0, 0, 81324; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v5, v5, 0, 81325; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v11, v3, 0, 81326; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v1.l1327; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v4.l1328; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v2, v2, 0, 81329; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v5.l1330; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v4.l, v11.l1331; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v6.l1332; GFX11-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v0.l, v1.l1333; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v9.l1334; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v6.l, v13.l1335; GFX11-SDAG-TRUE16-NEXT:    v_min_i16 v0.h, v2.l, v3.l1336; GFX11-SDAG-TRUE16-NEXT:    v_min_i16 v1.h, v4.l, v5.l1337; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v8, v8, 0, 81338; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v7, v7, 0, 81339; GFX11-SDAG-TRUE16-NEXT:    v_min3_i16 v0.l, v0.l, v1.l, v6.l1340; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v12, v12, 0, 81341; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v9.l, v14.l1342; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v6, v10, 0, 81343; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v7.l1344; GFX11-SDAG-TRUE16-NEXT:    v_min3_i16 v0.l, v0.l, v1.h, v0.h1345; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v17.l1346; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v8.l1347; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v5, v18, 0, 81348; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v4, v9, 0, 81349; GFX11-SDAG-TRUE16-NEXT:    v_lshlrev_b16 v7.l, 8, v0.l1350; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v6.l1351; GFX11-SDAG-TRUE16-NEXT:    v_min_i16 v0.h, v2.l, v3.l1352; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v16.l1353; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v12.l1354; GFX11-SDAG-TRUE16-NEXT:    v_lshrrev_b32_e32 v6, 8, v71355; GFX11-SDAG-TRUE16-NEXT:    v_min_i16 v1.l, v1.l, v4.l1356; GFX11-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v5.l, v0.l1357; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1358; GFX11-SDAG-TRUE16-NEXT:    v_min3_i16 v0.h, v0.h, v2.l, v3.l1359; GFX11-SDAG-TRUE16-NEXT:    v_bfe_i32 v2, v6, 0, 81360; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1361; GFX11-SDAG-TRUE16-NEXT:    v_min3_i16 v0.l, v0.h, v0.l, v1.l1362; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v2.l1363; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1364; GFX11-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v0.l, v1.l1365; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1366;1367; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_smin_v16i8:1368; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry1369; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1370; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v9, v9, 0, 81371; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v1, v1, 0, 81372; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v13, v13, 0, 81373; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v5, v5, 0, 81374; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v11, v11, 0, 81375; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v15, v15, 0, 81376; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v7, v7, 0, 81377; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v3, v3, 0, 81378; GFX11-SDAG-FAKE16-NEXT:    v_min_i16 v1, v1, v91379; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v0, v0, 0, 81380; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v9, v12, 0, 81381; GFX11-SDAG-FAKE16-NEXT:    v_min_i16 v7, v7, v151382; GFX11-SDAG-FAKE16-NEXT:    v_min_i16 v3, v3, v111383; GFX11-SDAG-FAKE16-NEXT:    v_min3_i16 v1, v1, v5, v131384; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v5, v8, 0, 81385; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v4, v4, 0, 81386; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v8, v10, 0, 81387; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v6, v6, 0, 81388; GFX11-SDAG-FAKE16-NEXT:    v_min3_i16 v1, v1, v3, v71389; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v3, v14, 0, 81390; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v2, v2, 0, 81391; GFX11-SDAG-FAKE16-NEXT:    v_min_i16 v0, v0, v51392; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1393; GFX11-SDAG-FAKE16-NEXT:    v_lshlrev_b16 v1, 8, v11394; GFX11-SDAG-FAKE16-NEXT:    v_min_i16 v3, v6, v31395; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1396; GFX11-SDAG-FAKE16-NEXT:    v_min_i16 v2, v2, v81397; GFX11-SDAG-FAKE16-NEXT:    v_min3_i16 v0, v0, v4, v91398; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)1399; GFX11-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v11400; GFX11-SDAG-FAKE16-NEXT:    v_min3_i16 v0, v0, v2, v31401; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1402; GFX11-SDAG-FAKE16-NEXT:    v_bfe_i32 v1, v1, 0, 81403; GFX11-SDAG-FAKE16-NEXT:    v_min_i16 v0, v0, v11404; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1405;1406; GFX11-GISEL-LABEL: test_vector_reduce_smin_v16i8:1407; GFX11-GISEL:       ; %bb.0: ; %entry1408; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1409; GFX11-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 81410; GFX11-GISEL-NEXT:    v_bfe_i32 v9, v9, 0, 81411; GFX11-GISEL-NEXT:    v_bfe_i32 v2, v2, 0, 81412; GFX11-GISEL-NEXT:    v_bfe_i32 v3, v3, 0, 81413; GFX11-GISEL-NEXT:    v_bfe_i32 v5, v5, 0, 81414; GFX11-GISEL-NEXT:    v_bfe_i32 v7, v7, 0, 81415; GFX11-GISEL-NEXT:    v_min_i16 v1, v1, v91416; GFX11-GISEL-NEXT:    v_bfe_i32 v9, v10, 0, 81417; GFX11-GISEL-NEXT:    v_bfe_i32 v10, v11, 0, 81418; GFX11-GISEL-NEXT:    v_bfe_i32 v11, v13, 0, 81419; GFX11-GISEL-NEXT:    v_bfe_i32 v13, v15, 0, 81420; GFX11-GISEL-NEXT:    v_bfe_i32 v6, v6, 0, 81421; GFX11-GISEL-NEXT:    v_min_i16 v2, v2, v91422; GFX11-GISEL-NEXT:    v_min_i16 v3, v3, v101423; GFX11-GISEL-NEXT:    v_min_i16 v5, v5, v111424; GFX11-GISEL-NEXT:    v_min_i16 v7, v7, v131425; GFX11-GISEL-NEXT:    v_bfe_i32 v9, v14, 0, 81426; GFX11-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 81427; GFX11-GISEL-NEXT:    v_bfe_i32 v8, v8, 0, 81428; GFX11-GISEL-NEXT:    v_bfe_i32 v4, v4, 0, 81429; GFX11-GISEL-NEXT:    v_bfe_i32 v10, v12, 0, 81430; GFX11-GISEL-NEXT:    v_min_i16 v1, v1, v51431; GFX11-GISEL-NEXT:    v_min_i16 v3, v3, v71432; GFX11-GISEL-NEXT:    v_min_i16 v5, v6, v91433; GFX11-GISEL-NEXT:    v_min_i16 v0, v0, v81434; GFX11-GISEL-NEXT:    v_min_i16 v4, v4, v101435; GFX11-GISEL-NEXT:    s_sext_i32_i8 s0, s01436; GFX11-GISEL-NEXT:    v_min_i16 v1, v1, v31437; GFX11-GISEL-NEXT:    v_min_i16 v2, v2, v51438; GFX11-GISEL-NEXT:    v_min_i16 v3, v3, s01439; GFX11-GISEL-NEXT:    v_min_i16 v0, v0, v41440; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1441; GFX11-GISEL-NEXT:    v_min_i16 v4, v1, s01442; GFX11-GISEL-NEXT:    v_min_i16 v5, v2, s01443; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1444; GFX11-GISEL-NEXT:    v_min_i16 v3, v3, s01445; GFX11-GISEL-NEXT:    v_min_i16 v0, v0, v21446; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1447; GFX11-GISEL-NEXT:    v_and_b32_e32 v2, 0xff, v41448; GFX11-GISEL-NEXT:    v_min_i16 v4, v5, s01449; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1450; GFX11-GISEL-NEXT:    v_and_b32_e32 v3, 0xff, v31451; GFX11-GISEL-NEXT:    v_min_i16 v0, v0, v11452; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1453; GFX11-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 8, v21454; GFX11-GISEL-NEXT:    v_and_b32_e32 v2, 0xff, v41455; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1456; GFX11-GISEL-NEXT:    v_and_or_b32 v0, 0xff, v0, v11457; GFX11-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 16, v21458; GFX11-GISEL-NEXT:    v_lshlrev_b32_e32 v2, 24, v31459; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1460; GFX11-GISEL-NEXT:    v_or3_b32 v0, v0, v1, v21461; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]1462;1463; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_smin_v16i8:1464; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry1465; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x01466; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x01467; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x01468; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x01469; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x01470; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v16, v4, 0, 81471; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v4.l, v5.l1472; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v9.l1473; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v1, v1, 0, 81474; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v17, v0, 0, 81475; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v11.l1476; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v9, v4, 0, 81477; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v4, v5, 0, 81478; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v15.l1479; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v13, v13, 0, 81480; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v18.l, v2.l1481; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.l1482; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v6.l1483; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v6, v0, 0, 81484; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v5, v5, 0, 81485; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v11, v3, 0, 81486; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v1.l1487; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v4.l1488; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v2, v2, 0, 81489; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v5.l1490; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v4.l, v11.l1491; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v6.l1492; GFX12-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v0.l, v1.l1493; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v9.l1494; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v6.l, v13.l1495; GFX12-SDAG-TRUE16-NEXT:    v_min_i16 v0.h, v2.l, v3.l1496; GFX12-SDAG-TRUE16-NEXT:    v_min_i16 v1.h, v4.l, v5.l1497; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v8, v8, 0, 81498; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v7, v7, 0, 81499; GFX12-SDAG-TRUE16-NEXT:    v_min3_i16 v0.l, v0.l, v1.l, v6.l1500; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v12, v12, 0, 81501; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v9.l, v14.l1502; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v6, v10, 0, 81503; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v7.l1504; GFX12-SDAG-TRUE16-NEXT:    v_min3_i16 v0.l, v0.l, v1.h, v0.h1505; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v17.l1506; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v8.l1507; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v5, v18, 0, 81508; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v4, v9, 0, 81509; GFX12-SDAG-TRUE16-NEXT:    v_lshlrev_b16 v7.l, 8, v0.l1510; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v6.l1511; GFX12-SDAG-TRUE16-NEXT:    v_min_i16 v0.h, v2.l, v3.l1512; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v16.l1513; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v12.l1514; GFX12-SDAG-TRUE16-NEXT:    v_lshrrev_b32_e32 v6, 8, v71515; GFX12-SDAG-TRUE16-NEXT:    v_min_i16 v1.l, v1.l, v4.l1516; GFX12-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v5.l, v0.l1517; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1518; GFX12-SDAG-TRUE16-NEXT:    v_min3_i16 v0.h, v0.h, v2.l, v3.l1519; GFX12-SDAG-TRUE16-NEXT:    v_bfe_i32 v2, v6, 0, 81520; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1521; GFX12-SDAG-TRUE16-NEXT:    v_min3_i16 v0.l, v0.h, v0.l, v1.l1522; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v2.l1523; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1524; GFX12-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v0.l, v1.l1525; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1526;1527; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_smin_v16i8:1528; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry1529; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x01530; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x01531; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x01532; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x01533; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x01534; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v9, v9, 0, 81535; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v1, v1, 0, 81536; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v13, v13, 0, 81537; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v5, v5, 0, 81538; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v11, v11, 0, 81539; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v15, v15, 0, 81540; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v7, v7, 0, 81541; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v3, v3, 0, 81542; GFX12-SDAG-FAKE16-NEXT:    v_min_i16 v1, v1, v91543; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v0, v0, 0, 81544; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v9, v12, 0, 81545; GFX12-SDAG-FAKE16-NEXT:    v_min_i16 v7, v7, v151546; GFX12-SDAG-FAKE16-NEXT:    v_min_i16 v3, v3, v111547; GFX12-SDAG-FAKE16-NEXT:    v_min3_i16 v1, v1, v5, v131548; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v5, v8, 0, 81549; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v4, v4, 0, 81550; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v8, v10, 0, 81551; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v6, v6, 0, 81552; GFX12-SDAG-FAKE16-NEXT:    v_min3_i16 v1, v1, v3, v71553; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v3, v14, 0, 81554; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v2, v2, 0, 81555; GFX12-SDAG-FAKE16-NEXT:    v_min_i16 v0, v0, v51556; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1557; GFX12-SDAG-FAKE16-NEXT:    v_lshlrev_b16 v1, 8, v11558; GFX12-SDAG-FAKE16-NEXT:    v_min_i16 v3, v6, v31559; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1560; GFX12-SDAG-FAKE16-NEXT:    v_min_i16 v2, v2, v81561; GFX12-SDAG-FAKE16-NEXT:    v_min3_i16 v0, v0, v4, v91562; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)1563; GFX12-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 8, v11564; GFX12-SDAG-FAKE16-NEXT:    v_min3_i16 v0, v0, v2, v31565; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1566; GFX12-SDAG-FAKE16-NEXT:    v_bfe_i32 v1, v1, 0, 81567; GFX12-SDAG-FAKE16-NEXT:    v_min_i16 v0, v0, v11568; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1569;1570; GFX12-GISEL-LABEL: test_vector_reduce_smin_v16i8:1571; GFX12-GISEL:       ; %bb.0: ; %entry1572; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x01573; GFX12-GISEL-NEXT:    s_wait_expcnt 0x01574; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x01575; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x01576; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x01577; GFX12-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 81578; GFX12-GISEL-NEXT:    v_bfe_i32 v9, v9, 0, 81579; GFX12-GISEL-NEXT:    v_bfe_i32 v2, v2, 0, 81580; GFX12-GISEL-NEXT:    v_bfe_i32 v3, v3, 0, 81581; GFX12-GISEL-NEXT:    v_bfe_i32 v5, v5, 0, 81582; GFX12-GISEL-NEXT:    v_bfe_i32 v7, v7, 0, 81583; GFX12-GISEL-NEXT:    v_min_i16 v1, v1, v91584; GFX12-GISEL-NEXT:    v_bfe_i32 v9, v10, 0, 81585; GFX12-GISEL-NEXT:    v_bfe_i32 v10, v11, 0, 81586; GFX12-GISEL-NEXT:    v_bfe_i32 v11, v13, 0, 81587; GFX12-GISEL-NEXT:    v_bfe_i32 v13, v15, 0, 81588; GFX12-GISEL-NEXT:    v_bfe_i32 v6, v6, 0, 81589; GFX12-GISEL-NEXT:    v_min_i16 v2, v2, v91590; GFX12-GISEL-NEXT:    v_min_i16 v3, v3, v101591; GFX12-GISEL-NEXT:    v_min_i16 v5, v5, v111592; GFX12-GISEL-NEXT:    v_min_i16 v7, v7, v131593; GFX12-GISEL-NEXT:    v_bfe_i32 v9, v14, 0, 81594; GFX12-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 81595; GFX12-GISEL-NEXT:    v_bfe_i32 v8, v8, 0, 81596; GFX12-GISEL-NEXT:    v_bfe_i32 v4, v4, 0, 81597; GFX12-GISEL-NEXT:    v_bfe_i32 v10, v12, 0, 81598; GFX12-GISEL-NEXT:    v_min_i16 v1, v1, v51599; GFX12-GISEL-NEXT:    v_min_i16 v3, v3, v71600; GFX12-GISEL-NEXT:    v_min_i16 v5, v6, v91601; GFX12-GISEL-NEXT:    v_min_i16 v0, v0, v81602; GFX12-GISEL-NEXT:    v_min_i16 v4, v4, v101603; GFX12-GISEL-NEXT:    s_sext_i32_i8 s0, s01604; GFX12-GISEL-NEXT:    v_min_i16 v1, v1, v31605; GFX12-GISEL-NEXT:    v_min_i16 v2, v2, v51606; GFX12-GISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)1607; GFX12-GISEL-NEXT:    v_min_i16 v3, v3, s01608; GFX12-GISEL-NEXT:    v_min_i16 v0, v0, v41609; GFX12-GISEL-NEXT:    v_min_i16 v4, v1, s01610; GFX12-GISEL-NEXT:    v_min_i16 v5, v2, s01611; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1612; GFX12-GISEL-NEXT:    v_min_i16 v3, v3, s01613; GFX12-GISEL-NEXT:    v_min_i16 v0, v0, v21614; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1615; GFX12-GISEL-NEXT:    v_and_b32_e32 v2, 0xff, v41616; GFX12-GISEL-NEXT:    v_min_i16 v4, v5, s01617; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1618; GFX12-GISEL-NEXT:    v_and_b32_e32 v3, 0xff, v31619; GFX12-GISEL-NEXT:    v_min_i16 v0, v0, v11620; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1621; GFX12-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 8, v21622; GFX12-GISEL-NEXT:    v_and_b32_e32 v2, 0xff, v41623; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1624; GFX12-GISEL-NEXT:    v_and_or_b32 v0, 0xff, v0, v11625; GFX12-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 16, v21626; GFX12-GISEL-NEXT:    v_lshlrev_b32_e32 v2, 24, v31627; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1628; GFX12-GISEL-NEXT:    v_or3_b32 v0, v0, v1, v21629; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]1630entry:1631  %res = call i8 @llvm.vector.reduce.smin.v16i8(<16 x i8> %v)1632  ret i8 %res1633}1634 1635; FIXME: With -new-reg-bank-select, v_alignbit_b32 is regression. Need pattern to look through COPY.1636define i16 @test_vector_reduce_smin_v2i16(<2 x i16> %v) {1637; GFX7-SDAG-LABEL: test_vector_reduce_smin_v2i16:1638; GFX7-SDAG:       ; %bb.0: ; %entry1639; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1640; GFX7-SDAG-NEXT:    v_bfe_i32 v1, v1, 0, 161641; GFX7-SDAG-NEXT:    v_bfe_i32 v0, v0, 0, 161642; GFX7-SDAG-NEXT:    v_min_i32_e32 v0, v0, v11643; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]1644;1645; GFX7-GISEL-LABEL: test_vector_reduce_smin_v2i16:1646; GFX7-GISEL:       ; %bb.0: ; %entry1647; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1648; GFX7-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 161649; GFX7-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 161650; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v11651; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, 0, v11652; GFX7-GISEL-NEXT:    v_and_b32_e32 v1, 0xffff, v11653; GFX7-GISEL-NEXT:    v_and_b32_e32 v0, 0xffff, v01654; GFX7-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 16, v11655; GFX7-GISEL-NEXT:    v_or_b32_e32 v0, v0, v11656; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]1657;1658; GFX8-SDAG-LABEL: test_vector_reduce_smin_v2i16:1659; GFX8-SDAG:       ; %bb.0: ; %entry1660; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1661; GFX8-SDAG-NEXT:    v_min_i16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11662; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]1663;1664; GFX8-GISEL-LABEL: test_vector_reduce_smin_v2i16:1665; GFX8-GISEL:       ; %bb.0: ; %entry1666; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1667; GFX8-GISEL-NEXT:    v_mov_b32_e32 v2, s41668; GFX8-GISEL-NEXT:    v_min_i16_sdwa v1, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11669; GFX8-GISEL-NEXT:    v_min_i16_sdwa v0, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD1670; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v1, v01671; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]1672;1673; GFX9-SDAG-LABEL: test_vector_reduce_smin_v2i16:1674; GFX9-SDAG:       ; %bb.0: ; %entry1675; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1676; GFX9-SDAG-NEXT:    v_min_i16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11677; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]1678;1679; GFX9-GISEL-LABEL: test_vector_reduce_smin_v2i16:1680; GFX9-GISEL:       ; %bb.0: ; %entry1681; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1682; GFX9-GISEL-NEXT:    v_alignbit_b32 v1, s0, v0, 161683; GFX9-GISEL-NEXT:    v_pk_min_i16 v0, v0, v11684; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]1685;1686; GFX10-SDAG-LABEL: test_vector_reduce_smin_v2i16:1687; GFX10-SDAG:       ; %bb.0: ; %entry1688; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1689; GFX10-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 16, v01690; GFX10-SDAG-NEXT:    v_min_i16 v0, v0, v11691; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]1692;1693; GFX10-GISEL-LABEL: test_vector_reduce_smin_v2i16:1694; GFX10-GISEL:       ; %bb.0: ; %entry1695; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1696; GFX10-GISEL-NEXT:    v_alignbit_b32 v1, s4, v0, 161697; GFX10-GISEL-NEXT:    v_pk_min_i16 v0, v0, v11698; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]1699;1700; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_smin_v2i16:1701; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry1702; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1703; GFX11-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v0.l, v0.h1704; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1705;1706; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_smin_v2i16:1707; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry1708; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1709; GFX11-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v01710; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1711; GFX11-SDAG-FAKE16-NEXT:    v_min_i16 v0, v0, v11712; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1713;1714; GFX11-GISEL-LABEL: test_vector_reduce_smin_v2i16:1715; GFX11-GISEL:       ; %bb.0: ; %entry1716; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1717; GFX11-GISEL-NEXT:    v_alignbit_b32 v1, s0, v0, 161718; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1719; GFX11-GISEL-NEXT:    v_pk_min_i16 v0, v0, v11720; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]1721;1722; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_smin_v2i16:1723; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry1724; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x01725; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x01726; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x01727; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x01728; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x01729; GFX12-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v0.l, v0.h1730; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1731;1732; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_smin_v2i16:1733; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry1734; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x01735; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x01736; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x01737; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x01738; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x01739; GFX12-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v01740; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1741; GFX12-SDAG-FAKE16-NEXT:    v_min_i16 v0, v0, v11742; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1743;1744; GFX12-GISEL-LABEL: test_vector_reduce_smin_v2i16:1745; GFX12-GISEL:       ; %bb.0: ; %entry1746; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x01747; GFX12-GISEL-NEXT:    s_wait_expcnt 0x01748; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x01749; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x01750; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x01751; GFX12-GISEL-NEXT:    v_alignbit_b32 v1, s0, v0, 161752; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1753; GFX12-GISEL-NEXT:    v_pk_min_i16 v0, v0, v11754; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]1755entry:1756  %res = call i16 @llvm.vector.reduce.smin.v2i16(<2 x i16> %v)1757  ret i16 %res1758}1759 1760define i16 @test_vector_reduce_smin_v3i16(<3 x i16> %v) {1761; GFX7-SDAG-LABEL: test_vector_reduce_smin_v3i16:1762; GFX7-SDAG:       ; %bb.0: ; %entry1763; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1764; GFX7-SDAG-NEXT:    v_and_b32_e32 v2, 0xffff, v21765; GFX7-SDAG-NEXT:    v_or_b32_e32 v2, 0x7fff0000, v21766; GFX7-SDAG-NEXT:    v_lshrrev_b32_e32 v3, 16, v21767; GFX7-SDAG-NEXT:    v_bfe_i32 v2, v2, 0, 161768; GFX7-SDAG-NEXT:    v_bfe_i32 v0, v0, 0, 161769; GFX7-SDAG-NEXT:    v_min_i32_e32 v0, v0, v21770; GFX7-SDAG-NEXT:    v_bfe_i32 v1, v1, 0, 161771; GFX7-SDAG-NEXT:    v_min3_i32 v0, v0, v1, v31772; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]1773;1774; GFX7-GISEL-LABEL: test_vector_reduce_smin_v3i16:1775; GFX7-GISEL:       ; %bb.0: ; %entry1776; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1777; GFX7-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 161778; GFX7-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 161779; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v11780; GFX7-GISEL-NEXT:    v_bfe_i32 v1, v2, 0, 161781; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v11782; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]1783;1784; GFX8-LABEL: test_vector_reduce_smin_v3i16:1785; GFX8:       ; %bb.0: ; %entry1786; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1787; GFX8-NEXT:    v_min_i16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11788; GFX8-NEXT:    v_min_i16_e32 v0, v0, v11789; GFX8-NEXT:    s_setpc_b64 s[30:31]1790;1791; GFX9-SDAG-LABEL: test_vector_reduce_smin_v3i16:1792; GFX9-SDAG:       ; %bb.0: ; %entry1793; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1794; GFX9-SDAG-NEXT:    s_movk_i32 s0, 0x7fff1795; GFX9-SDAG-NEXT:    v_mov_b32_e32 v2, 0x50401001796; GFX9-SDAG-NEXT:    v_perm_b32 v1, s0, v1, v21797; GFX9-SDAG-NEXT:    v_pk_min_i16 v0, v0, v11798; GFX9-SDAG-NEXT:    s_nop 01799; GFX9-SDAG-NEXT:    v_min_i16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11800; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]1801;1802; GFX9-GISEL-LABEL: test_vector_reduce_smin_v3i16:1803; GFX9-GISEL:       ; %bb.0: ; %entry1804; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1805; GFX9-GISEL-NEXT:    v_min_i16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11806; GFX9-GISEL-NEXT:    v_min_i16_e32 v0, v0, v11807; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]1808;1809; GFX10-SDAG-LABEL: test_vector_reduce_smin_v3i16:1810; GFX10-SDAG:       ; %bb.0: ; %entry1811; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1812; GFX10-SDAG-NEXT:    s_movk_i32 s4, 0x7fff1813; GFX10-SDAG-NEXT:    v_perm_b32 v1, s4, v1, 0x50401001814; GFX10-SDAG-NEXT:    v_pk_min_i16 v0, v0, v11815; GFX10-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 16, v01816; GFX10-SDAG-NEXT:    v_min_i16 v0, v0, v11817; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]1818;1819; GFX10-GISEL-LABEL: test_vector_reduce_smin_v3i16:1820; GFX10-GISEL:       ; %bb.0: ; %entry1821; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1822; GFX10-GISEL-NEXT:    v_lshrrev_b32_e32 v2, 16, v01823; GFX10-GISEL-NEXT:    v_min_i16 v0, v0, v21824; GFX10-GISEL-NEXT:    v_min_i16 v0, v0, v11825; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]1826;1827; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_smin_v3i16:1828; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry1829; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1830; GFX11-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.h, 0x7fff1831; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1832; GFX11-SDAG-TRUE16-NEXT:    v_pk_min_i16 v0, v0, v11833; GFX11-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v0.l, v0.h1834; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1835;1836; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_smin_v3i16:1837; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry1838; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1839; GFX11-SDAG-FAKE16-NEXT:    s_movk_i32 s0, 0x7fff1840; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)1841; GFX11-SDAG-FAKE16-NEXT:    v_perm_b32 v1, s0, v1, 0x50401001842; GFX11-SDAG-FAKE16-NEXT:    v_pk_min_i16 v0, v0, v11843; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1844; GFX11-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v01845; GFX11-SDAG-FAKE16-NEXT:    v_min_i16 v0, v0, v11846; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1847;1848; GFX11-GISEL-LABEL: test_vector_reduce_smin_v3i16:1849; GFX11-GISEL:       ; %bb.0: ; %entry1850; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1851; GFX11-GISEL-NEXT:    v_lshrrev_b32_e32 v2, 16, v01852; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1853; GFX11-GISEL-NEXT:    v_min_i16 v0, v0, v21854; GFX11-GISEL-NEXT:    v_min_i16 v0, v0, v11855; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]1856;1857; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_smin_v3i16:1858; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry1859; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x01860; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x01861; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x01862; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x01863; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x01864; GFX12-SDAG-TRUE16-NEXT:    v_mov_b16_e32 v1.h, 0x7fff1865; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1866; GFX12-SDAG-TRUE16-NEXT:    v_pk_min_i16 v0, v0, v11867; GFX12-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v0.l, v0.h1868; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1869;1870; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_smin_v3i16:1871; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry1872; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x01873; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x01874; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x01875; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x01876; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x01877; GFX12-SDAG-FAKE16-NEXT:    s_movk_i32 s0, 0x7fff1878; GFX12-SDAG-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)1879; GFX12-SDAG-FAKE16-NEXT:    v_perm_b32 v1, s0, v1, 0x50401001880; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1881; GFX12-SDAG-FAKE16-NEXT:    v_pk_min_i16 v0, v0, v11882; GFX12-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v01883; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1884; GFX12-SDAG-FAKE16-NEXT:    v_min_i16 v0, v0, v11885; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]1886;1887; GFX12-GISEL-LABEL: test_vector_reduce_smin_v3i16:1888; GFX12-GISEL:       ; %bb.0: ; %entry1889; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x01890; GFX12-GISEL-NEXT:    s_wait_expcnt 0x01891; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x01892; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x01893; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x01894; GFX12-GISEL-NEXT:    v_lshrrev_b32_e32 v2, 16, v01895; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1896; GFX12-GISEL-NEXT:    v_min_i16 v0, v0, v21897; GFX12-GISEL-NEXT:    v_min_i16 v0, v0, v11898; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]1899entry:1900  %res = call i16 @llvm.vector.reduce.smin.v3i16(<3 x i16> %v)1901  ret i16 %res1902}1903 1904; FIXME: With -new-reg-bank-select, v_alignbit_b32 is regression. Need pattern to look through COPY.1905define i16 @test_vector_reduce_smin_v4i16(<4 x i16> %v) {1906; GFX7-SDAG-LABEL: test_vector_reduce_smin_v4i16:1907; GFX7-SDAG:       ; %bb.0: ; %entry1908; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1909; GFX7-SDAG-NEXT:    v_bfe_i32 v3, v3, 0, 161910; GFX7-SDAG-NEXT:    v_bfe_i32 v1, v1, 0, 161911; GFX7-SDAG-NEXT:    v_bfe_i32 v2, v2, 0, 161912; GFX7-SDAG-NEXT:    v_bfe_i32 v0, v0, 0, 161913; GFX7-SDAG-NEXT:    v_min_i32_e32 v1, v1, v31914; GFX7-SDAG-NEXT:    v_min3_i32 v0, v0, v2, v11915; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]1916;1917; GFX7-GISEL-LABEL: test_vector_reduce_smin_v4i16:1918; GFX7-GISEL:       ; %bb.0: ; %entry1919; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1920; GFX7-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 161921; GFX7-GISEL-NEXT:    v_bfe_i32 v2, v2, 0, 161922; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v21923; GFX7-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 161924; GFX7-GISEL-NEXT:    v_bfe_i32 v2, v3, 0, 161925; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, v1, v21926; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v11927; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, 0, v11928; GFX7-GISEL-NEXT:    v_and_b32_e32 v1, 0xffff, v11929; GFX7-GISEL-NEXT:    v_and_b32_e32 v0, 0xffff, v01930; GFX7-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 16, v11931; GFX7-GISEL-NEXT:    v_or_b32_e32 v0, v0, v11932; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]1933;1934; GFX8-SDAG-LABEL: test_vector_reduce_smin_v4i16:1935; GFX8-SDAG:       ; %bb.0: ; %entry1936; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1937; GFX8-SDAG-NEXT:    v_min_i16_sdwa v2, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11938; GFX8-SDAG-NEXT:    v_min_i16_e32 v0, v0, v11939; GFX8-SDAG-NEXT:    v_min_i16_e32 v0, v0, v21940; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]1941;1942; GFX8-GISEL-LABEL: test_vector_reduce_smin_v4i16:1943; GFX8-GISEL:       ; %bb.0: ; %entry1944; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1945; GFX8-GISEL-NEXT:    v_min_i16_e32 v2, v0, v11946; GFX8-GISEL-NEXT:    v_min_i16_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11947; GFX8-GISEL-NEXT:    v_min_i16_e32 v1, v2, v01948; GFX8-GISEL-NEXT:    v_mov_b32_e32 v2, s41949; GFX8-GISEL-NEXT:    v_min_i16_sdwa v0, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD1950; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v1, v01951; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]1952;1953; GFX9-SDAG-LABEL: test_vector_reduce_smin_v4i16:1954; GFX9-SDAG:       ; %bb.0: ; %entry1955; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1956; GFX9-SDAG-NEXT:    v_pk_min_i16 v0, v0, v11957; GFX9-SDAG-NEXT:    s_nop 01958; GFX9-SDAG-NEXT:    v_min_i16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11959; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]1960;1961; GFX9-GISEL-LABEL: test_vector_reduce_smin_v4i16:1962; GFX9-GISEL:       ; %bb.0: ; %entry1963; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1964; GFX9-GISEL-NEXT:    v_pk_min_i16 v0, v0, v11965; GFX9-GISEL-NEXT:    s_nop 01966; GFX9-GISEL-NEXT:    v_alignbit_b32 v1, s0, v0, 161967; GFX9-GISEL-NEXT:    v_pk_min_i16 v0, v0, v11968; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]1969;1970; GFX10-SDAG-LABEL: test_vector_reduce_smin_v4i16:1971; GFX10-SDAG:       ; %bb.0: ; %entry1972; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1973; GFX10-SDAG-NEXT:    v_pk_min_i16 v0, v0, v11974; GFX10-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 16, v01975; GFX10-SDAG-NEXT:    v_min_i16 v0, v0, v11976; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]1977;1978; GFX10-GISEL-LABEL: test_vector_reduce_smin_v4i16:1979; GFX10-GISEL:       ; %bb.0: ; %entry1980; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1981; GFX10-GISEL-NEXT:    v_pk_min_i16 v0, v0, v11982; GFX10-GISEL-NEXT:    v_alignbit_b32 v1, s4, v0, 161983; GFX10-GISEL-NEXT:    v_pk_min_i16 v0, v0, v11984; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]1985;1986; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_smin_v4i16:1987; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry1988; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1989; GFX11-SDAG-TRUE16-NEXT:    v_pk_min_i16 v0, v0, v11990; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1991; GFX11-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v0.l, v0.h1992; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]1993;1994; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_smin_v4i16:1995; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry1996; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1997; GFX11-SDAG-FAKE16-NEXT:    v_pk_min_i16 v0, v0, v11998; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1999; GFX11-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v02000; GFX11-SDAG-FAKE16-NEXT:    v_min_i16 v0, v0, v12001; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]2002;2003; GFX11-GISEL-LABEL: test_vector_reduce_smin_v4i16:2004; GFX11-GISEL:       ; %bb.0: ; %entry2005; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2006; GFX11-GISEL-NEXT:    v_pk_min_i16 v0, v0, v12007; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2008; GFX11-GISEL-NEXT:    v_alignbit_b32 v1, s0, v0, 162009; GFX11-GISEL-NEXT:    v_pk_min_i16 v0, v0, v12010; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]2011;2012; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_smin_v4i16:2013; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry2014; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x02015; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x02016; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x02017; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x02018; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x02019; GFX12-SDAG-TRUE16-NEXT:    v_pk_min_i16 v0, v0, v12020; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2021; GFX12-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v0.l, v0.h2022; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]2023;2024; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_smin_v4i16:2025; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry2026; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x02027; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x02028; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x02029; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x02030; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x02031; GFX12-SDAG-FAKE16-NEXT:    v_pk_min_i16 v0, v0, v12032; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2033; GFX12-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v02034; GFX12-SDAG-FAKE16-NEXT:    v_min_i16 v0, v0, v12035; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]2036;2037; GFX12-GISEL-LABEL: test_vector_reduce_smin_v4i16:2038; GFX12-GISEL:       ; %bb.0: ; %entry2039; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x02040; GFX12-GISEL-NEXT:    s_wait_expcnt 0x02041; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x02042; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x02043; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x02044; GFX12-GISEL-NEXT:    v_pk_min_i16 v0, v0, v12045; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2046; GFX12-GISEL-NEXT:    v_alignbit_b32 v1, s0, v0, 162047; GFX12-GISEL-NEXT:    v_pk_min_i16 v0, v0, v12048; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]2049entry:2050  %res = call i16 @llvm.vector.reduce.smin.v4i16(<4 x i16> %v)2051  ret i16 %res2052}2053 2054; FIXME: With -new-reg-bank-select, v_alignbit_b32 is regression. Need pattern to look through COPY.2055define i16 @test_vector_reduce_smin_v8i16(<8 x i16> %v) {2056; GFX7-SDAG-LABEL: test_vector_reduce_smin_v8i16:2057; GFX7-SDAG:       ; %bb.0: ; %entry2058; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2059; GFX7-SDAG-NEXT:    v_bfe_i32 v5, v5, 0, 162060; GFX7-SDAG-NEXT:    v_bfe_i32 v1, v1, 0, 162061; GFX7-SDAG-NEXT:    v_bfe_i32 v4, v4, 0, 162062; GFX7-SDAG-NEXT:    v_bfe_i32 v0, v0, 0, 162063; GFX7-SDAG-NEXT:    v_bfe_i32 v6, v6, 0, 162064; GFX7-SDAG-NEXT:    v_bfe_i32 v2, v2, 0, 162065; GFX7-SDAG-NEXT:    v_bfe_i32 v7, v7, 0, 162066; GFX7-SDAG-NEXT:    v_bfe_i32 v3, v3, 0, 162067; GFX7-SDAG-NEXT:    v_min_i32_e32 v0, v0, v42068; GFX7-SDAG-NEXT:    v_min_i32_e32 v1, v1, v52069; GFX7-SDAG-NEXT:    v_min3_i32 v1, v1, v3, v72070; GFX7-SDAG-NEXT:    v_min3_i32 v0, v0, v2, v62071; GFX7-SDAG-NEXT:    v_min_i32_e32 v0, v0, v12072; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]2073;2074; GFX7-GISEL-LABEL: test_vector_reduce_smin_v8i16:2075; GFX7-GISEL:       ; %bb.0: ; %entry2076; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2077; GFX7-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 162078; GFX7-GISEL-NEXT:    v_bfe_i32 v4, v4, 0, 162079; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v42080; GFX7-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 162081; GFX7-GISEL-NEXT:    v_bfe_i32 v4, v5, 0, 162082; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, v1, v42083; GFX7-GISEL-NEXT:    v_bfe_i32 v2, v2, 0, 162084; GFX7-GISEL-NEXT:    v_bfe_i32 v4, v6, 0, 162085; GFX7-GISEL-NEXT:    v_min_i32_e32 v2, v2, v42086; GFX7-GISEL-NEXT:    v_bfe_i32 v3, v3, 0, 162087; GFX7-GISEL-NEXT:    v_bfe_i32 v4, v7, 0, 162088; GFX7-GISEL-NEXT:    v_min_i32_e32 v3, v3, v42089; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v22090; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, v1, v32091; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v12092; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, 0, v12093; GFX7-GISEL-NEXT:    v_and_b32_e32 v1, 0xffff, v12094; GFX7-GISEL-NEXT:    v_and_b32_e32 v0, 0xffff, v02095; GFX7-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 16, v12096; GFX7-GISEL-NEXT:    v_or_b32_e32 v0, v0, v12097; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]2098;2099; GFX8-SDAG-LABEL: test_vector_reduce_smin_v8i16:2100; GFX8-SDAG:       ; %bb.0: ; %entry2101; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2102; GFX8-SDAG-NEXT:    v_min_i16_sdwa v4, v1, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_12103; GFX8-SDAG-NEXT:    v_min_i16_sdwa v5, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_12104; GFX8-SDAG-NEXT:    v_min_i16_e32 v1, v1, v32105; GFX8-SDAG-NEXT:    v_min_i16_e32 v0, v0, v22106; GFX8-SDAG-NEXT:    v_min_i16_e32 v2, v5, v42107; GFX8-SDAG-NEXT:    v_min_i16_e32 v0, v0, v12108; GFX8-SDAG-NEXT:    v_min_i16_e32 v0, v0, v22109; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]2110;2111; GFX8-GISEL-LABEL: test_vector_reduce_smin_v8i16:2112; GFX8-GISEL:       ; %bb.0: ; %entry2113; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2114; GFX8-GISEL-NEXT:    v_min_i16_e32 v4, v0, v22115; GFX8-GISEL-NEXT:    v_min_i16_sdwa v0, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_12116; GFX8-GISEL-NEXT:    v_min_i16_e32 v2, v1, v32117; GFX8-GISEL-NEXT:    v_min_i16_sdwa v1, v1, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_12118; GFX8-GISEL-NEXT:    v_min_i16_e32 v2, v4, v22119; GFX8-GISEL-NEXT:    v_min_i16_e32 v0, v0, v12120; GFX8-GISEL-NEXT:    v_min_i16_e32 v1, v2, v02121; GFX8-GISEL-NEXT:    v_mov_b32_e32 v2, s42122; GFX8-GISEL-NEXT:    v_min_i16_sdwa v0, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD2123; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v1, v02124; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]2125;2126; GFX9-SDAG-LABEL: test_vector_reduce_smin_v8i16:2127; GFX9-SDAG:       ; %bb.0: ; %entry2128; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2129; GFX9-SDAG-NEXT:    v_pk_min_i16 v1, v1, v32130; GFX9-SDAG-NEXT:    v_pk_min_i16 v0, v0, v22131; GFX9-SDAG-NEXT:    s_nop 02132; GFX9-SDAG-NEXT:    v_pk_min_i16 v0, v0, v12133; GFX9-SDAG-NEXT:    s_nop 02134; GFX9-SDAG-NEXT:    v_min_i16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_12135; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]2136;2137; GFX9-GISEL-LABEL: test_vector_reduce_smin_v8i16:2138; GFX9-GISEL:       ; %bb.0: ; %entry2139; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2140; GFX9-GISEL-NEXT:    v_pk_min_i16 v0, v0, v22141; GFX9-GISEL-NEXT:    v_pk_min_i16 v1, v1, v32142; GFX9-GISEL-NEXT:    s_nop 02143; GFX9-GISEL-NEXT:    v_pk_min_i16 v0, v0, v12144; GFX9-GISEL-NEXT:    s_nop 02145; GFX9-GISEL-NEXT:    v_alignbit_b32 v1, s0, v0, 162146; GFX9-GISEL-NEXT:    v_pk_min_i16 v0, v0, v12147; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]2148;2149; GFX10-SDAG-LABEL: test_vector_reduce_smin_v8i16:2150; GFX10-SDAG:       ; %bb.0: ; %entry2151; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2152; GFX10-SDAG-NEXT:    v_pk_min_i16 v1, v1, v32153; GFX10-SDAG-NEXT:    v_pk_min_i16 v0, v0, v22154; GFX10-SDAG-NEXT:    v_pk_min_i16 v0, v0, v12155; GFX10-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 16, v02156; GFX10-SDAG-NEXT:    v_min_i16 v0, v0, v12157; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]2158;2159; GFX10-GISEL-LABEL: test_vector_reduce_smin_v8i16:2160; GFX10-GISEL:       ; %bb.0: ; %entry2161; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2162; GFX10-GISEL-NEXT:    v_pk_min_i16 v0, v0, v22163; GFX10-GISEL-NEXT:    v_pk_min_i16 v1, v1, v32164; GFX10-GISEL-NEXT:    v_pk_min_i16 v0, v0, v12165; GFX10-GISEL-NEXT:    v_alignbit_b32 v1, s4, v0, 162166; GFX10-GISEL-NEXT:    v_pk_min_i16 v0, v0, v12167; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]2168;2169; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_smin_v8i16:2170; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry2171; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2172; GFX11-SDAG-TRUE16-NEXT:    v_pk_min_i16 v1, v1, v32173; GFX11-SDAG-TRUE16-NEXT:    v_pk_min_i16 v0, v0, v22174; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2175; GFX11-SDAG-TRUE16-NEXT:    v_pk_min_i16 v0, v0, v12176; GFX11-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v0.l, v0.h2177; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]2178;2179; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_smin_v8i16:2180; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry2181; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2182; GFX11-SDAG-FAKE16-NEXT:    v_pk_min_i16 v1, v1, v32183; GFX11-SDAG-FAKE16-NEXT:    v_pk_min_i16 v0, v0, v22184; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2185; GFX11-SDAG-FAKE16-NEXT:    v_pk_min_i16 v0, v0, v12186; GFX11-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v02187; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2188; GFX11-SDAG-FAKE16-NEXT:    v_min_i16 v0, v0, v12189; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]2190;2191; GFX11-GISEL-LABEL: test_vector_reduce_smin_v8i16:2192; GFX11-GISEL:       ; %bb.0: ; %entry2193; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2194; GFX11-GISEL-NEXT:    v_pk_min_i16 v0, v0, v22195; GFX11-GISEL-NEXT:    v_pk_min_i16 v1, v1, v32196; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2197; GFX11-GISEL-NEXT:    v_pk_min_i16 v0, v0, v12198; GFX11-GISEL-NEXT:    v_alignbit_b32 v1, s0, v0, 162199; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2200; GFX11-GISEL-NEXT:    v_pk_min_i16 v0, v0, v12201; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]2202;2203; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_smin_v8i16:2204; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry2205; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x02206; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x02207; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x02208; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x02209; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x02210; GFX12-SDAG-TRUE16-NEXT:    v_pk_min_i16 v1, v1, v32211; GFX12-SDAG-TRUE16-NEXT:    v_pk_min_i16 v0, v0, v22212; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2213; GFX12-SDAG-TRUE16-NEXT:    v_pk_min_i16 v0, v0, v12214; GFX12-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v0.l, v0.h2215; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]2216;2217; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_smin_v8i16:2218; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry2219; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x02220; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x02221; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x02222; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x02223; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x02224; GFX12-SDAG-FAKE16-NEXT:    v_pk_min_i16 v1, v1, v32225; GFX12-SDAG-FAKE16-NEXT:    v_pk_min_i16 v0, v0, v22226; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2227; GFX12-SDAG-FAKE16-NEXT:    v_pk_min_i16 v0, v0, v12228; GFX12-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v02229; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2230; GFX12-SDAG-FAKE16-NEXT:    v_min_i16 v0, v0, v12231; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]2232;2233; GFX12-GISEL-LABEL: test_vector_reduce_smin_v8i16:2234; GFX12-GISEL:       ; %bb.0: ; %entry2235; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x02236; GFX12-GISEL-NEXT:    s_wait_expcnt 0x02237; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x02238; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x02239; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x02240; GFX12-GISEL-NEXT:    v_pk_min_i16 v0, v0, v22241; GFX12-GISEL-NEXT:    v_pk_min_i16 v1, v1, v32242; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2243; GFX12-GISEL-NEXT:    v_pk_min_i16 v0, v0, v12244; GFX12-GISEL-NEXT:    v_alignbit_b32 v1, s0, v0, 162245; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2246; GFX12-GISEL-NEXT:    v_pk_min_i16 v0, v0, v12247; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]2248entry:2249  %res = call i16 @llvm.vector.reduce.smin.v8i16(<8 x i16> %v)2250  ret i16 %res2251}2252 2253define i16 @test_vector_reduce_smin_v16i16(<16 x i16> %v) {2254; GFX7-SDAG-LABEL: test_vector_reduce_smin_v16i16:2255; GFX7-SDAG:       ; %bb.0: ; %entry2256; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2257; GFX7-SDAG-NEXT:    v_bfe_i32 v8, v8, 0, 162258; GFX7-SDAG-NEXT:    v_bfe_i32 v0, v0, 0, 162259; GFX7-SDAG-NEXT:    v_bfe_i32 v9, v9, 0, 162260; GFX7-SDAG-NEXT:    v_bfe_i32 v1, v1, 0, 162261; GFX7-SDAG-NEXT:    v_bfe_i32 v13, v13, 0, 162262; GFX7-SDAG-NEXT:    v_bfe_i32 v5, v5, 0, 162263; GFX7-SDAG-NEXT:    v_bfe_i32 v12, v12, 0, 162264; GFX7-SDAG-NEXT:    v_bfe_i32 v4, v4, 0, 162265; GFX7-SDAG-NEXT:    v_bfe_i32 v11, v11, 0, 162266; GFX7-SDAG-NEXT:    v_bfe_i32 v3, v3, 0, 162267; GFX7-SDAG-NEXT:    v_bfe_i32 v15, v15, 0, 162268; GFX7-SDAG-NEXT:    v_bfe_i32 v7, v7, 0, 162269; GFX7-SDAG-NEXT:    v_bfe_i32 v10, v10, 0, 162270; GFX7-SDAG-NEXT:    v_bfe_i32 v2, v2, 0, 162271; GFX7-SDAG-NEXT:    v_bfe_i32 v14, v14, 0, 162272; GFX7-SDAG-NEXT:    v_bfe_i32 v6, v6, 0, 162273; GFX7-SDAG-NEXT:    v_min_i32_e32 v1, v1, v92274; GFX7-SDAG-NEXT:    v_min_i32_e32 v0, v0, v82275; GFX7-SDAG-NEXT:    v_min_i32_e32 v6, v6, v142276; GFX7-SDAG-NEXT:    v_min_i32_e32 v2, v2, v102277; GFX7-SDAG-NEXT:    v_min_i32_e32 v7, v7, v152278; GFX7-SDAG-NEXT:    v_min_i32_e32 v3, v3, v112279; GFX7-SDAG-NEXT:    v_min3_i32 v0, v0, v4, v122280; GFX7-SDAG-NEXT:    v_min3_i32 v1, v1, v5, v132281; GFX7-SDAG-NEXT:    v_min3_i32 v1, v1, v3, v72282; GFX7-SDAG-NEXT:    v_min3_i32 v0, v0, v2, v62283; GFX7-SDAG-NEXT:    v_min_i32_e32 v0, v0, v12284; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]2285;2286; GFX7-GISEL-LABEL: test_vector_reduce_smin_v16i16:2287; GFX7-GISEL:       ; %bb.0: ; %entry2288; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2289; GFX7-GISEL-NEXT:    v_bfe_i32 v0, v0, 0, 162290; GFX7-GISEL-NEXT:    v_bfe_i32 v8, v8, 0, 162291; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v82292; GFX7-GISEL-NEXT:    v_bfe_i32 v1, v1, 0, 162293; GFX7-GISEL-NEXT:    v_bfe_i32 v8, v9, 0, 162294; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, v1, v82295; GFX7-GISEL-NEXT:    v_bfe_i32 v2, v2, 0, 162296; GFX7-GISEL-NEXT:    v_bfe_i32 v8, v10, 0, 162297; GFX7-GISEL-NEXT:    v_min_i32_e32 v2, v2, v82298; GFX7-GISEL-NEXT:    v_bfe_i32 v3, v3, 0, 162299; GFX7-GISEL-NEXT:    v_bfe_i32 v8, v11, 0, 162300; GFX7-GISEL-NEXT:    v_min_i32_e32 v3, v3, v82301; GFX7-GISEL-NEXT:    v_bfe_i32 v4, v4, 0, 162302; GFX7-GISEL-NEXT:    v_bfe_i32 v8, v12, 0, 162303; GFX7-GISEL-NEXT:    v_min_i32_e32 v4, v4, v82304; GFX7-GISEL-NEXT:    v_bfe_i32 v5, v5, 0, 162305; GFX7-GISEL-NEXT:    v_bfe_i32 v8, v13, 0, 162306; GFX7-GISEL-NEXT:    v_min_i32_e32 v5, v5, v82307; GFX7-GISEL-NEXT:    v_bfe_i32 v6, v6, 0, 162308; GFX7-GISEL-NEXT:    v_bfe_i32 v8, v14, 0, 162309; GFX7-GISEL-NEXT:    v_min_i32_e32 v6, v6, v82310; GFX7-GISEL-NEXT:    v_bfe_i32 v7, v7, 0, 162311; GFX7-GISEL-NEXT:    v_bfe_i32 v8, v15, 0, 162312; GFX7-GISEL-NEXT:    v_min_i32_e32 v7, v7, v82313; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v42314; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, v1, v52315; GFX7-GISEL-NEXT:    v_min_i32_e32 v2, v2, v62316; GFX7-GISEL-NEXT:    v_min_i32_e32 v3, v3, v72317; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v22318; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, v1, v32319; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v12320; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, 0, v12321; GFX7-GISEL-NEXT:    v_and_b32_e32 v1, 0xffff, v12322; GFX7-GISEL-NEXT:    v_and_b32_e32 v0, 0xffff, v02323; GFX7-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 16, v12324; GFX7-GISEL-NEXT:    v_or_b32_e32 v0, v0, v12325; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]2326;2327; GFX8-SDAG-LABEL: test_vector_reduce_smin_v16i16:2328; GFX8-SDAG:       ; %bb.0: ; %entry2329; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2330; GFX8-SDAG-NEXT:    v_min_i16_sdwa v8, v2, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_12331; GFX8-SDAG-NEXT:    v_min_i16_sdwa v9, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_12332; GFX8-SDAG-NEXT:    v_min_i16_sdwa v10, v3, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_12333; GFX8-SDAG-NEXT:    v_min_i16_sdwa v11, v1, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_12334; GFX8-SDAG-NEXT:    v_min_i16_e32 v2, v2, v62335; GFX8-SDAG-NEXT:    v_min_i16_e32 v0, v0, v42336; GFX8-SDAG-NEXT:    v_min_i16_e32 v3, v3, v72337; GFX8-SDAG-NEXT:    v_min_i16_e32 v1, v1, v52338; GFX8-SDAG-NEXT:    v_min_i16_e32 v4, v11, v102339; GFX8-SDAG-NEXT:    v_min_i16_e32 v5, v9, v82340; GFX8-SDAG-NEXT:    v_min_i16_e32 v1, v1, v32341; GFX8-SDAG-NEXT:    v_min_i16_e32 v0, v0, v22342; GFX8-SDAG-NEXT:    v_min_i16_e32 v2, v5, v42343; GFX8-SDAG-NEXT:    v_min_i16_e32 v0, v0, v12344; GFX8-SDAG-NEXT:    v_min_i16_e32 v0, v0, v22345; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]2346;2347; GFX8-GISEL-LABEL: test_vector_reduce_smin_v16i16:2348; GFX8-GISEL:       ; %bb.0: ; %entry2349; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2350; GFX8-GISEL-NEXT:    v_min_i16_e32 v8, v0, v42351; GFX8-GISEL-NEXT:    v_min_i16_sdwa v0, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_12352; GFX8-GISEL-NEXT:    v_min_i16_e32 v4, v1, v52353; GFX8-GISEL-NEXT:    v_min_i16_sdwa v1, v1, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_12354; GFX8-GISEL-NEXT:    v_min_i16_e32 v5, v2, v62355; GFX8-GISEL-NEXT:    v_min_i16_sdwa v2, v2, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_12356; GFX8-GISEL-NEXT:    v_min_i16_e32 v6, v3, v72357; GFX8-GISEL-NEXT:    v_min_i16_sdwa v3, v3, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_12358; GFX8-GISEL-NEXT:    v_min_i16_e32 v5, v8, v52359; GFX8-GISEL-NEXT:    v_min_i16_e32 v0, v0, v22360; GFX8-GISEL-NEXT:    v_min_i16_e32 v2, v4, v62361; GFX8-GISEL-NEXT:    v_min_i16_e32 v1, v1, v32362; GFX8-GISEL-NEXT:    v_min_i16_e32 v2, v5, v22363; GFX8-GISEL-NEXT:    v_min_i16_e32 v0, v0, v12364; GFX8-GISEL-NEXT:    v_min_i16_e32 v1, v2, v02365; GFX8-GISEL-NEXT:    v_mov_b32_e32 v2, s42366; GFX8-GISEL-NEXT:    v_min_i16_sdwa v0, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD2367; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v1, v02368; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]2369;2370; GFX9-SDAG-LABEL: test_vector_reduce_smin_v16i16:2371; GFX9-SDAG:       ; %bb.0: ; %entry2372; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2373; GFX9-SDAG-NEXT:    v_pk_min_i16 v2, v2, v62374; GFX9-SDAG-NEXT:    v_pk_min_i16 v0, v0, v42375; GFX9-SDAG-NEXT:    v_pk_min_i16 v3, v3, v72376; GFX9-SDAG-NEXT:    v_pk_min_i16 v1, v1, v52377; GFX9-SDAG-NEXT:    v_pk_min_i16 v0, v0, v22378; GFX9-SDAG-NEXT:    v_pk_min_i16 v1, v1, v32379; GFX9-SDAG-NEXT:    s_nop 02380; GFX9-SDAG-NEXT:    v_pk_min_i16 v0, v0, v12381; GFX9-SDAG-NEXT:    s_nop 02382; GFX9-SDAG-NEXT:    v_min_i16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_12383; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]2384;2385; GFX9-GISEL-LABEL: test_vector_reduce_smin_v16i16:2386; GFX9-GISEL:       ; %bb.0: ; %entry2387; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2388; GFX9-GISEL-NEXT:    v_pk_min_i16 v0, v0, v42389; GFX9-GISEL-NEXT:    v_pk_min_i16 v1, v1, v52390; GFX9-GISEL-NEXT:    v_pk_min_i16 v2, v2, v62391; GFX9-GISEL-NEXT:    v_pk_min_i16 v3, v3, v72392; GFX9-GISEL-NEXT:    v_pk_min_i16 v0, v0, v22393; GFX9-GISEL-NEXT:    v_pk_min_i16 v1, v1, v32394; GFX9-GISEL-NEXT:    s_nop 02395; GFX9-GISEL-NEXT:    v_pk_min_i16 v0, v0, v12396; GFX9-GISEL-NEXT:    s_nop 02397; GFX9-GISEL-NEXT:    v_alignbit_b32 v1, s0, v0, 162398; GFX9-GISEL-NEXT:    v_pk_min_i16 v0, v0, v12399; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]2400;2401; GFX10-SDAG-LABEL: test_vector_reduce_smin_v16i16:2402; GFX10-SDAG:       ; %bb.0: ; %entry2403; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2404; GFX10-SDAG-NEXT:    v_pk_min_i16 v2, v2, v62405; GFX10-SDAG-NEXT:    v_pk_min_i16 v3, v3, v72406; GFX10-SDAG-NEXT:    v_pk_min_i16 v1, v1, v52407; GFX10-SDAG-NEXT:    v_pk_min_i16 v0, v0, v42408; GFX10-SDAG-NEXT:    v_pk_min_i16 v1, v1, v32409; GFX10-SDAG-NEXT:    v_pk_min_i16 v0, v0, v22410; GFX10-SDAG-NEXT:    v_pk_min_i16 v0, v0, v12411; GFX10-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 16, v02412; GFX10-SDAG-NEXT:    v_min_i16 v0, v0, v12413; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]2414;2415; GFX10-GISEL-LABEL: test_vector_reduce_smin_v16i16:2416; GFX10-GISEL:       ; %bb.0: ; %entry2417; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2418; GFX10-GISEL-NEXT:    v_pk_min_i16 v0, v0, v42419; GFX10-GISEL-NEXT:    v_pk_min_i16 v1, v1, v52420; GFX10-GISEL-NEXT:    v_pk_min_i16 v2, v2, v62421; GFX10-GISEL-NEXT:    v_pk_min_i16 v3, v3, v72422; GFX10-GISEL-NEXT:    v_pk_min_i16 v0, v0, v22423; GFX10-GISEL-NEXT:    v_pk_min_i16 v1, v1, v32424; GFX10-GISEL-NEXT:    v_pk_min_i16 v0, v0, v12425; GFX10-GISEL-NEXT:    v_alignbit_b32 v1, s4, v0, 162426; GFX10-GISEL-NEXT:    v_pk_min_i16 v0, v0, v12427; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]2428;2429; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_smin_v16i16:2430; GFX11-SDAG-TRUE16:       ; %bb.0: ; %entry2431; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2432; GFX11-SDAG-TRUE16-NEXT:    v_pk_min_i16 v2, v2, v62433; GFX11-SDAG-TRUE16-NEXT:    v_pk_min_i16 v3, v3, v72434; GFX11-SDAG-TRUE16-NEXT:    v_pk_min_i16 v1, v1, v52435; GFX11-SDAG-TRUE16-NEXT:    v_pk_min_i16 v0, v0, v42436; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2437; GFX11-SDAG-TRUE16-NEXT:    v_pk_min_i16 v1, v1, v32438; GFX11-SDAG-TRUE16-NEXT:    v_pk_min_i16 v0, v0, v22439; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2440; GFX11-SDAG-TRUE16-NEXT:    v_pk_min_i16 v0, v0, v12441; GFX11-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v0.l, v0.h2442; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]2443;2444; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_smin_v16i16:2445; GFX11-SDAG-FAKE16:       ; %bb.0: ; %entry2446; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2447; GFX11-SDAG-FAKE16-NEXT:    v_pk_min_i16 v2, v2, v62448; GFX11-SDAG-FAKE16-NEXT:    v_pk_min_i16 v3, v3, v72449; GFX11-SDAG-FAKE16-NEXT:    v_pk_min_i16 v1, v1, v52450; GFX11-SDAG-FAKE16-NEXT:    v_pk_min_i16 v0, v0, v42451; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2452; GFX11-SDAG-FAKE16-NEXT:    v_pk_min_i16 v1, v1, v32453; GFX11-SDAG-FAKE16-NEXT:    v_pk_min_i16 v0, v0, v22454; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2455; GFX11-SDAG-FAKE16-NEXT:    v_pk_min_i16 v0, v0, v12456; GFX11-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v02457; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2458; GFX11-SDAG-FAKE16-NEXT:    v_min_i16 v0, v0, v12459; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]2460;2461; GFX11-GISEL-LABEL: test_vector_reduce_smin_v16i16:2462; GFX11-GISEL:       ; %bb.0: ; %entry2463; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2464; GFX11-GISEL-NEXT:    v_pk_min_i16 v0, v0, v42465; GFX11-GISEL-NEXT:    v_pk_min_i16 v1, v1, v52466; GFX11-GISEL-NEXT:    v_pk_min_i16 v2, v2, v62467; GFX11-GISEL-NEXT:    v_pk_min_i16 v3, v3, v72468; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2469; GFX11-GISEL-NEXT:    v_pk_min_i16 v0, v0, v22470; GFX11-GISEL-NEXT:    v_pk_min_i16 v1, v1, v32471; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2472; GFX11-GISEL-NEXT:    v_pk_min_i16 v0, v0, v12473; GFX11-GISEL-NEXT:    v_alignbit_b32 v1, s0, v0, 162474; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2475; GFX11-GISEL-NEXT:    v_pk_min_i16 v0, v0, v12476; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]2477;2478; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_smin_v16i16:2479; GFX12-SDAG-TRUE16:       ; %bb.0: ; %entry2480; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x02481; GFX12-SDAG-TRUE16-NEXT:    s_wait_expcnt 0x02482; GFX12-SDAG-TRUE16-NEXT:    s_wait_samplecnt 0x02483; GFX12-SDAG-TRUE16-NEXT:    s_wait_bvhcnt 0x02484; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x02485; GFX12-SDAG-TRUE16-NEXT:    v_pk_min_i16 v2, v2, v62486; GFX12-SDAG-TRUE16-NEXT:    v_pk_min_i16 v3, v3, v72487; GFX12-SDAG-TRUE16-NEXT:    v_pk_min_i16 v1, v1, v52488; GFX12-SDAG-TRUE16-NEXT:    v_pk_min_i16 v0, v0, v42489; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2490; GFX12-SDAG-TRUE16-NEXT:    v_pk_min_i16 v1, v1, v32491; GFX12-SDAG-TRUE16-NEXT:    v_pk_min_i16 v0, v0, v22492; GFX12-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2493; GFX12-SDAG-TRUE16-NEXT:    v_pk_min_i16 v0, v0, v12494; GFX12-SDAG-TRUE16-NEXT:    v_min_i16 v0.l, v0.l, v0.h2495; GFX12-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]2496;2497; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_smin_v16i16:2498; GFX12-SDAG-FAKE16:       ; %bb.0: ; %entry2499; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x02500; GFX12-SDAG-FAKE16-NEXT:    s_wait_expcnt 0x02501; GFX12-SDAG-FAKE16-NEXT:    s_wait_samplecnt 0x02502; GFX12-SDAG-FAKE16-NEXT:    s_wait_bvhcnt 0x02503; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x02504; GFX12-SDAG-FAKE16-NEXT:    v_pk_min_i16 v2, v2, v62505; GFX12-SDAG-FAKE16-NEXT:    v_pk_min_i16 v3, v3, v72506; GFX12-SDAG-FAKE16-NEXT:    v_pk_min_i16 v1, v1, v52507; GFX12-SDAG-FAKE16-NEXT:    v_pk_min_i16 v0, v0, v42508; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2509; GFX12-SDAG-FAKE16-NEXT:    v_pk_min_i16 v1, v1, v32510; GFX12-SDAG-FAKE16-NEXT:    v_pk_min_i16 v0, v0, v22511; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2512; GFX12-SDAG-FAKE16-NEXT:    v_pk_min_i16 v0, v0, v12513; GFX12-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v02514; GFX12-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2515; GFX12-SDAG-FAKE16-NEXT:    v_min_i16 v0, v0, v12516; GFX12-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]2517;2518; GFX12-GISEL-LABEL: test_vector_reduce_smin_v16i16:2519; GFX12-GISEL:       ; %bb.0: ; %entry2520; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x02521; GFX12-GISEL-NEXT:    s_wait_expcnt 0x02522; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x02523; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x02524; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x02525; GFX12-GISEL-NEXT:    v_pk_min_i16 v0, v0, v42526; GFX12-GISEL-NEXT:    v_pk_min_i16 v1, v1, v52527; GFX12-GISEL-NEXT:    v_pk_min_i16 v2, v2, v62528; GFX12-GISEL-NEXT:    v_pk_min_i16 v3, v3, v72529; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2530; GFX12-GISEL-NEXT:    v_pk_min_i16 v0, v0, v22531; GFX12-GISEL-NEXT:    v_pk_min_i16 v1, v1, v32532; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2533; GFX12-GISEL-NEXT:    v_pk_min_i16 v0, v0, v12534; GFX12-GISEL-NEXT:    v_alignbit_b32 v1, s0, v0, 162535; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2536; GFX12-GISEL-NEXT:    v_pk_min_i16 v0, v0, v12537; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]2538entry:2539  %res = call i16 @llvm.vector.reduce.smin.v16i16(<16 x i16> %v)2540  ret i16 %res2541}2542 2543 2544define i32 @test_vector_reduce_smin_v2i32(<2 x i32> %v) {2545; GFX7-LABEL: test_vector_reduce_smin_v2i32:2546; GFX7:       ; %bb.0: ; %entry2547; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2548; GFX7-NEXT:    v_min_i32_e32 v0, v0, v12549; GFX7-NEXT:    s_setpc_b64 s[30:31]2550;2551; GFX8-LABEL: test_vector_reduce_smin_v2i32:2552; GFX8:       ; %bb.0: ; %entry2553; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2554; GFX8-NEXT:    v_min_i32_e32 v0, v0, v12555; GFX8-NEXT:    s_setpc_b64 s[30:31]2556;2557; GFX9-LABEL: test_vector_reduce_smin_v2i32:2558; GFX9:       ; %bb.0: ; %entry2559; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2560; GFX9-NEXT:    v_min_i32_e32 v0, v0, v12561; GFX9-NEXT:    s_setpc_b64 s[30:31]2562;2563; GFX10-LABEL: test_vector_reduce_smin_v2i32:2564; GFX10:       ; %bb.0: ; %entry2565; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2566; GFX10-NEXT:    v_min_i32_e32 v0, v0, v12567; GFX10-NEXT:    s_setpc_b64 s[30:31]2568;2569; GFX11-LABEL: test_vector_reduce_smin_v2i32:2570; GFX11:       ; %bb.0: ; %entry2571; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2572; GFX11-NEXT:    v_min_i32_e32 v0, v0, v12573; GFX11-NEXT:    s_setpc_b64 s[30:31]2574;2575; GFX12-LABEL: test_vector_reduce_smin_v2i32:2576; GFX12:       ; %bb.0: ; %entry2577; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02578; GFX12-NEXT:    s_wait_expcnt 0x02579; GFX12-NEXT:    s_wait_samplecnt 0x02580; GFX12-NEXT:    s_wait_bvhcnt 0x02581; GFX12-NEXT:    s_wait_kmcnt 0x02582; GFX12-NEXT:    v_min_i32_e32 v0, v0, v12583; GFX12-NEXT:    s_setpc_b64 s[30:31]2584entry:2585  %res = call i32 @llvm.vector.reduce.smin.v2i32(<2 x i32> %v)2586  ret i32 %res2587}2588 2589define i32 @test_vector_reduce_smin_v3i32(<3 x i32> %v) {2590; GFX7-SDAG-LABEL: test_vector_reduce_smin_v3i32:2591; GFX7-SDAG:       ; %bb.0: ; %entry2592; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2593; GFX7-SDAG-NEXT:    v_min3_i32 v0, v0, v1, v22594; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]2595;2596; GFX7-GISEL-LABEL: test_vector_reduce_smin_v3i32:2597; GFX7-GISEL:       ; %bb.0: ; %entry2598; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2599; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v12600; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v22601; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]2602;2603; GFX8-SDAG-LABEL: test_vector_reduce_smin_v3i32:2604; GFX8-SDAG:       ; %bb.0: ; %entry2605; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2606; GFX8-SDAG-NEXT:    v_min3_i32 v0, v0, v1, v22607; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]2608;2609; GFX8-GISEL-LABEL: test_vector_reduce_smin_v3i32:2610; GFX8-GISEL:       ; %bb.0: ; %entry2611; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2612; GFX8-GISEL-NEXT:    v_min_i32_e32 v0, v0, v12613; GFX8-GISEL-NEXT:    v_min_i32_e32 v0, v0, v22614; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]2615;2616; GFX9-SDAG-LABEL: test_vector_reduce_smin_v3i32:2617; GFX9-SDAG:       ; %bb.0: ; %entry2618; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2619; GFX9-SDAG-NEXT:    v_min3_i32 v0, v0, v1, v22620; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]2621;2622; GFX9-GISEL-LABEL: test_vector_reduce_smin_v3i32:2623; GFX9-GISEL:       ; %bb.0: ; %entry2624; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2625; GFX9-GISEL-NEXT:    v_min_i32_e32 v0, v0, v12626; GFX9-GISEL-NEXT:    v_min_i32_e32 v0, v0, v22627; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]2628;2629; GFX10-SDAG-LABEL: test_vector_reduce_smin_v3i32:2630; GFX10-SDAG:       ; %bb.0: ; %entry2631; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2632; GFX10-SDAG-NEXT:    v_min3_i32 v0, v0, v1, v22633; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]2634;2635; GFX10-GISEL-LABEL: test_vector_reduce_smin_v3i32:2636; GFX10-GISEL:       ; %bb.0: ; %entry2637; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2638; GFX10-GISEL-NEXT:    v_min_i32_e32 v0, v0, v12639; GFX10-GISEL-NEXT:    v_min_i32_e32 v0, v0, v22640; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]2641;2642; GFX11-SDAG-LABEL: test_vector_reduce_smin_v3i32:2643; GFX11-SDAG:       ; %bb.0: ; %entry2644; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2645; GFX11-SDAG-NEXT:    v_min3_i32 v0, v0, v1, v22646; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]2647;2648; GFX11-GISEL-LABEL: test_vector_reduce_smin_v3i32:2649; GFX11-GISEL:       ; %bb.0: ; %entry2650; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2651; GFX11-GISEL-NEXT:    v_min_i32_e32 v0, v0, v12652; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2653; GFX11-GISEL-NEXT:    v_min_i32_e32 v0, v0, v22654; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]2655;2656; GFX12-SDAG-LABEL: test_vector_reduce_smin_v3i32:2657; GFX12-SDAG:       ; %bb.0: ; %entry2658; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x02659; GFX12-SDAG-NEXT:    s_wait_expcnt 0x02660; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x02661; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x02662; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x02663; GFX12-SDAG-NEXT:    v_min3_i32 v0, v0, v1, v22664; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]2665;2666; GFX12-GISEL-LABEL: test_vector_reduce_smin_v3i32:2667; GFX12-GISEL:       ; %bb.0: ; %entry2668; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x02669; GFX12-GISEL-NEXT:    s_wait_expcnt 0x02670; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x02671; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x02672; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x02673; GFX12-GISEL-NEXT:    v_min_i32_e32 v0, v0, v12674; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2675; GFX12-GISEL-NEXT:    v_min_i32_e32 v0, v0, v22676; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]2677entry:2678  %res = call i32 @llvm.vector.reduce.smin.v3i32(<3 x i32> %v)2679  ret i32 %res2680}2681 2682define i32 @test_vector_reduce_smin_v4i32(<4 x i32> %v) {2683; GFX7-SDAG-LABEL: test_vector_reduce_smin_v4i32:2684; GFX7-SDAG:       ; %bb.0: ; %entry2685; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2686; GFX7-SDAG-NEXT:    v_min_i32_e32 v1, v1, v32687; GFX7-SDAG-NEXT:    v_min3_i32 v0, v0, v2, v12688; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]2689;2690; GFX7-GISEL-LABEL: test_vector_reduce_smin_v4i32:2691; GFX7-GISEL:       ; %bb.0: ; %entry2692; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2693; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v22694; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, v1, v32695; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v12696; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]2697;2698; GFX8-SDAG-LABEL: test_vector_reduce_smin_v4i32:2699; GFX8-SDAG:       ; %bb.0: ; %entry2700; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2701; GFX8-SDAG-NEXT:    v_min_i32_e32 v1, v1, v32702; GFX8-SDAG-NEXT:    v_min3_i32 v0, v0, v2, v12703; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]2704;2705; GFX8-GISEL-LABEL: test_vector_reduce_smin_v4i32:2706; GFX8-GISEL:       ; %bb.0: ; %entry2707; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2708; GFX8-GISEL-NEXT:    v_min_i32_e32 v0, v0, v22709; GFX8-GISEL-NEXT:    v_min_i32_e32 v1, v1, v32710; GFX8-GISEL-NEXT:    v_min_i32_e32 v0, v0, v12711; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]2712;2713; GFX9-SDAG-LABEL: test_vector_reduce_smin_v4i32:2714; GFX9-SDAG:       ; %bb.0: ; %entry2715; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2716; GFX9-SDAG-NEXT:    v_min_i32_e32 v1, v1, v32717; GFX9-SDAG-NEXT:    v_min3_i32 v0, v0, v2, v12718; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]2719;2720; GFX9-GISEL-LABEL: test_vector_reduce_smin_v4i32:2721; GFX9-GISEL:       ; %bb.0: ; %entry2722; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2723; GFX9-GISEL-NEXT:    v_min_i32_e32 v0, v0, v22724; GFX9-GISEL-NEXT:    v_min_i32_e32 v1, v1, v32725; GFX9-GISEL-NEXT:    v_min_i32_e32 v0, v0, v12726; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]2727;2728; GFX10-SDAG-LABEL: test_vector_reduce_smin_v4i32:2729; GFX10-SDAG:       ; %bb.0: ; %entry2730; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2731; GFX10-SDAG-NEXT:    v_min_i32_e32 v1, v1, v32732; GFX10-SDAG-NEXT:    v_min3_i32 v0, v0, v2, v12733; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]2734;2735; GFX10-GISEL-LABEL: test_vector_reduce_smin_v4i32:2736; GFX10-GISEL:       ; %bb.0: ; %entry2737; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2738; GFX10-GISEL-NEXT:    v_min_i32_e32 v0, v0, v22739; GFX10-GISEL-NEXT:    v_min_i32_e32 v1, v1, v32740; GFX10-GISEL-NEXT:    v_min_i32_e32 v0, v0, v12741; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]2742;2743; GFX11-SDAG-LABEL: test_vector_reduce_smin_v4i32:2744; GFX11-SDAG:       ; %bb.0: ; %entry2745; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2746; GFX11-SDAG-NEXT:    v_min_i32_e32 v1, v1, v32747; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)2748; GFX11-SDAG-NEXT:    v_min3_i32 v0, v0, v2, v12749; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]2750;2751; GFX11-GISEL-LABEL: test_vector_reduce_smin_v4i32:2752; GFX11-GISEL:       ; %bb.0: ; %entry2753; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2754; GFX11-GISEL-NEXT:    v_min_i32_e32 v0, v0, v22755; GFX11-GISEL-NEXT:    v_min_i32_e32 v1, v1, v32756; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2757; GFX11-GISEL-NEXT:    v_min_i32_e32 v0, v0, v12758; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]2759;2760; GFX12-SDAG-LABEL: test_vector_reduce_smin_v4i32:2761; GFX12-SDAG:       ; %bb.0: ; %entry2762; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x02763; GFX12-SDAG-NEXT:    s_wait_expcnt 0x02764; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x02765; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x02766; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x02767; GFX12-SDAG-NEXT:    v_min_i32_e32 v1, v1, v32768; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)2769; GFX12-SDAG-NEXT:    v_min3_i32 v0, v0, v2, v12770; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]2771;2772; GFX12-GISEL-LABEL: test_vector_reduce_smin_v4i32:2773; GFX12-GISEL:       ; %bb.0: ; %entry2774; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x02775; GFX12-GISEL-NEXT:    s_wait_expcnt 0x02776; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x02777; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x02778; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x02779; GFX12-GISEL-NEXT:    v_min_i32_e32 v0, v0, v22780; GFX12-GISEL-NEXT:    v_min_i32_e32 v1, v1, v32781; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2782; GFX12-GISEL-NEXT:    v_min_i32_e32 v0, v0, v12783; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]2784entry:2785  %res = call i32 @llvm.vector.reduce.smin.v4i32(<4 x i32> %v)2786  ret i32 %res2787}2788 2789define i32 @test_vector_reduce_smin_v8i32(<8 x i32> %v) {2790; GFX7-SDAG-LABEL: test_vector_reduce_smin_v8i32:2791; GFX7-SDAG:       ; %bb.0: ; %entry2792; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2793; GFX7-SDAG-NEXT:    v_min_i32_e32 v2, v2, v62794; GFX7-SDAG-NEXT:    v_min_i32_e32 v3, v3, v72795; GFX7-SDAG-NEXT:    v_min3_i32 v1, v1, v5, v32796; GFX7-SDAG-NEXT:    v_min3_i32 v0, v0, v4, v22797; GFX7-SDAG-NEXT:    v_min_i32_e32 v0, v0, v12798; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]2799;2800; GFX7-GISEL-LABEL: test_vector_reduce_smin_v8i32:2801; GFX7-GISEL:       ; %bb.0: ; %entry2802; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2803; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v42804; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, v1, v52805; GFX7-GISEL-NEXT:    v_min_i32_e32 v2, v2, v62806; GFX7-GISEL-NEXT:    v_min_i32_e32 v3, v3, v72807; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v22808; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, v1, v32809; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v12810; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]2811;2812; GFX8-SDAG-LABEL: test_vector_reduce_smin_v8i32:2813; GFX8-SDAG:       ; %bb.0: ; %entry2814; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2815; GFX8-SDAG-NEXT:    v_min_i32_e32 v2, v2, v62816; GFX8-SDAG-NEXT:    v_min_i32_e32 v3, v3, v72817; GFX8-SDAG-NEXT:    v_min3_i32 v1, v1, v5, v32818; GFX8-SDAG-NEXT:    v_min3_i32 v0, v0, v4, v22819; GFX8-SDAG-NEXT:    v_min_i32_e32 v0, v0, v12820; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]2821;2822; GFX8-GISEL-LABEL: test_vector_reduce_smin_v8i32:2823; GFX8-GISEL:       ; %bb.0: ; %entry2824; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2825; GFX8-GISEL-NEXT:    v_min_i32_e32 v0, v0, v42826; GFX8-GISEL-NEXT:    v_min_i32_e32 v1, v1, v52827; GFX8-GISEL-NEXT:    v_min_i32_e32 v2, v2, v62828; GFX8-GISEL-NEXT:    v_min_i32_e32 v3, v3, v72829; GFX8-GISEL-NEXT:    v_min_i32_e32 v0, v0, v22830; GFX8-GISEL-NEXT:    v_min_i32_e32 v1, v1, v32831; GFX8-GISEL-NEXT:    v_min_i32_e32 v0, v0, v12832; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]2833;2834; GFX9-SDAG-LABEL: test_vector_reduce_smin_v8i32:2835; GFX9-SDAG:       ; %bb.0: ; %entry2836; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2837; GFX9-SDAG-NEXT:    v_min_i32_e32 v2, v2, v62838; GFX9-SDAG-NEXT:    v_min_i32_e32 v3, v3, v72839; GFX9-SDAG-NEXT:    v_min3_i32 v1, v1, v5, v32840; GFX9-SDAG-NEXT:    v_min3_i32 v0, v0, v4, v22841; GFX9-SDAG-NEXT:    v_min_i32_e32 v0, v0, v12842; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]2843;2844; GFX9-GISEL-LABEL: test_vector_reduce_smin_v8i32:2845; GFX9-GISEL:       ; %bb.0: ; %entry2846; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2847; GFX9-GISEL-NEXT:    v_min_i32_e32 v0, v0, v42848; GFX9-GISEL-NEXT:    v_min_i32_e32 v1, v1, v52849; GFX9-GISEL-NEXT:    v_min_i32_e32 v2, v2, v62850; GFX9-GISEL-NEXT:    v_min_i32_e32 v3, v3, v72851; GFX9-GISEL-NEXT:    v_min_i32_e32 v0, v0, v22852; GFX9-GISEL-NEXT:    v_min_i32_e32 v1, v1, v32853; GFX9-GISEL-NEXT:    v_min_i32_e32 v0, v0, v12854; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]2855;2856; GFX10-SDAG-LABEL: test_vector_reduce_smin_v8i32:2857; GFX10-SDAG:       ; %bb.0: ; %entry2858; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2859; GFX10-SDAG-NEXT:    v_min_i32_e32 v3, v3, v72860; GFX10-SDAG-NEXT:    v_min_i32_e32 v2, v2, v62861; GFX10-SDAG-NEXT:    v_min3_i32 v1, v1, v5, v32862; GFX10-SDAG-NEXT:    v_min3_i32 v0, v0, v4, v22863; GFX10-SDAG-NEXT:    v_min_i32_e32 v0, v0, v12864; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]2865;2866; GFX10-GISEL-LABEL: test_vector_reduce_smin_v8i32:2867; GFX10-GISEL:       ; %bb.0: ; %entry2868; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2869; GFX10-GISEL-NEXT:    v_min_i32_e32 v0, v0, v42870; GFX10-GISEL-NEXT:    v_min_i32_e32 v1, v1, v52871; GFX10-GISEL-NEXT:    v_min_i32_e32 v2, v2, v62872; GFX10-GISEL-NEXT:    v_min_i32_e32 v3, v3, v72873; GFX10-GISEL-NEXT:    v_min_i32_e32 v0, v0, v22874; GFX10-GISEL-NEXT:    v_min_i32_e32 v1, v1, v32875; GFX10-GISEL-NEXT:    v_min_i32_e32 v0, v0, v12876; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]2877;2878; GFX11-SDAG-LABEL: test_vector_reduce_smin_v8i32:2879; GFX11-SDAG:       ; %bb.0: ; %entry2880; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2881; GFX11-SDAG-NEXT:    v_min_i32_e32 v3, v3, v72882; GFX11-SDAG-NEXT:    v_min_i32_e32 v2, v2, v62883; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2884; GFX11-SDAG-NEXT:    v_min3_i32 v1, v1, v5, v32885; GFX11-SDAG-NEXT:    v_min3_i32 v0, v0, v4, v22886; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)2887; GFX11-SDAG-NEXT:    v_min_i32_e32 v0, v0, v12888; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]2889;2890; GFX11-GISEL-LABEL: test_vector_reduce_smin_v8i32:2891; GFX11-GISEL:       ; %bb.0: ; %entry2892; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2893; GFX11-GISEL-NEXT:    v_min_i32_e32 v0, v0, v42894; GFX11-GISEL-NEXT:    v_min_i32_e32 v1, v1, v52895; GFX11-GISEL-NEXT:    v_min_i32_e32 v2, v2, v62896; GFX11-GISEL-NEXT:    v_min_i32_e32 v3, v3, v72897; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2898; GFX11-GISEL-NEXT:    v_min_i32_e32 v0, v0, v22899; GFX11-GISEL-NEXT:    v_min_i32_e32 v1, v1, v32900; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2901; GFX11-GISEL-NEXT:    v_min_i32_e32 v0, v0, v12902; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]2903;2904; GFX12-SDAG-LABEL: test_vector_reduce_smin_v8i32:2905; GFX12-SDAG:       ; %bb.0: ; %entry2906; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x02907; GFX12-SDAG-NEXT:    s_wait_expcnt 0x02908; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x02909; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x02910; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x02911; GFX12-SDAG-NEXT:    v_min_i32_e32 v3, v3, v72912; GFX12-SDAG-NEXT:    v_min_i32_e32 v2, v2, v62913; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2914; GFX12-SDAG-NEXT:    v_min3_i32 v1, v1, v5, v32915; GFX12-SDAG-NEXT:    v_min3_i32 v0, v0, v4, v22916; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)2917; GFX12-SDAG-NEXT:    v_min_i32_e32 v0, v0, v12918; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]2919;2920; GFX12-GISEL-LABEL: test_vector_reduce_smin_v8i32:2921; GFX12-GISEL:       ; %bb.0: ; %entry2922; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x02923; GFX12-GISEL-NEXT:    s_wait_expcnt 0x02924; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x02925; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x02926; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x02927; GFX12-GISEL-NEXT:    v_min_i32_e32 v0, v0, v42928; GFX12-GISEL-NEXT:    v_min_i32_e32 v1, v1, v52929; GFX12-GISEL-NEXT:    v_min_i32_e32 v2, v2, v62930; GFX12-GISEL-NEXT:    v_min_i32_e32 v3, v3, v72931; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2932; GFX12-GISEL-NEXT:    v_min_i32_e32 v0, v0, v22933; GFX12-GISEL-NEXT:    v_min_i32_e32 v1, v1, v32934; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2935; GFX12-GISEL-NEXT:    v_min_i32_e32 v0, v0, v12936; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]2937entry:2938  %res = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> %v)2939  ret i32 %res2940}2941 2942define i32 @test_vector_reduce_smin_v16i32(<16 x i32> %v) {2943; GFX7-SDAG-LABEL: test_vector_reduce_smin_v16i32:2944; GFX7-SDAG:       ; %bb.0: ; %entry2945; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2946; GFX7-SDAG-NEXT:    v_min_i32_e32 v7, v7, v152947; GFX7-SDAG-NEXT:    v_min_i32_e32 v6, v6, v142948; GFX7-SDAG-NEXT:    v_min_i32_e32 v4, v4, v122949; GFX7-SDAG-NEXT:    v_min_i32_e32 v0, v0, v82950; GFX7-SDAG-NEXT:    v_min_i32_e32 v5, v5, v132951; GFX7-SDAG-NEXT:    v_min_i32_e32 v1, v1, v92952; GFX7-SDAG-NEXT:    v_min3_i32 v2, v2, v10, v62953; GFX7-SDAG-NEXT:    v_min3_i32 v3, v3, v11, v72954; GFX7-SDAG-NEXT:    v_min3_i32 v1, v1, v5, v32955; GFX7-SDAG-NEXT:    v_min3_i32 v0, v0, v4, v22956; GFX7-SDAG-NEXT:    v_min_i32_e32 v0, v0, v12957; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]2958;2959; GFX7-GISEL-LABEL: test_vector_reduce_smin_v16i32:2960; GFX7-GISEL:       ; %bb.0: ; %entry2961; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2962; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v82963; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, v1, v92964; GFX7-GISEL-NEXT:    v_min_i32_e32 v2, v2, v102965; GFX7-GISEL-NEXT:    v_min_i32_e32 v3, v3, v112966; GFX7-GISEL-NEXT:    v_min_i32_e32 v4, v4, v122967; GFX7-GISEL-NEXT:    v_min_i32_e32 v5, v5, v132968; GFX7-GISEL-NEXT:    v_min_i32_e32 v6, v6, v142969; GFX7-GISEL-NEXT:    v_min_i32_e32 v7, v7, v152970; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v42971; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, v1, v52972; GFX7-GISEL-NEXT:    v_min_i32_e32 v2, v2, v62973; GFX7-GISEL-NEXT:    v_min_i32_e32 v3, v3, v72974; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v22975; GFX7-GISEL-NEXT:    v_min_i32_e32 v1, v1, v32976; GFX7-GISEL-NEXT:    v_min_i32_e32 v0, v0, v12977; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]2978;2979; GFX8-SDAG-LABEL: test_vector_reduce_smin_v16i32:2980; GFX8-SDAG:       ; %bb.0: ; %entry2981; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2982; GFX8-SDAG-NEXT:    v_min_i32_e32 v7, v7, v152983; GFX8-SDAG-NEXT:    v_min_i32_e32 v6, v6, v142984; GFX8-SDAG-NEXT:    v_min_i32_e32 v4, v4, v122985; GFX8-SDAG-NEXT:    v_min_i32_e32 v0, v0, v82986; GFX8-SDAG-NEXT:    v_min_i32_e32 v5, v5, v132987; GFX8-SDAG-NEXT:    v_min_i32_e32 v1, v1, v92988; GFX8-SDAG-NEXT:    v_min3_i32 v2, v2, v10, v62989; GFX8-SDAG-NEXT:    v_min3_i32 v3, v3, v11, v72990; GFX8-SDAG-NEXT:    v_min3_i32 v1, v1, v5, v32991; GFX8-SDAG-NEXT:    v_min3_i32 v0, v0, v4, v22992; GFX8-SDAG-NEXT:    v_min_i32_e32 v0, v0, v12993; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]2994;2995; GFX8-GISEL-LABEL: test_vector_reduce_smin_v16i32:2996; GFX8-GISEL:       ; %bb.0: ; %entry2997; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2998; GFX8-GISEL-NEXT:    v_min_i32_e32 v0, v0, v82999; GFX8-GISEL-NEXT:    v_min_i32_e32 v1, v1, v93000; GFX8-GISEL-NEXT:    v_min_i32_e32 v2, v2, v103001; GFX8-GISEL-NEXT:    v_min_i32_e32 v3, v3, v113002; GFX8-GISEL-NEXT:    v_min_i32_e32 v4, v4, v123003; GFX8-GISEL-NEXT:    v_min_i32_e32 v5, v5, v133004; GFX8-GISEL-NEXT:    v_min_i32_e32 v6, v6, v143005; GFX8-GISEL-NEXT:    v_min_i32_e32 v7, v7, v153006; GFX8-GISEL-NEXT:    v_min_i32_e32 v0, v0, v43007; GFX8-GISEL-NEXT:    v_min_i32_e32 v1, v1, v53008; GFX8-GISEL-NEXT:    v_min_i32_e32 v2, v2, v63009; GFX8-GISEL-NEXT:    v_min_i32_e32 v3, v3, v73010; GFX8-GISEL-NEXT:    v_min_i32_e32 v0, v0, v23011; GFX8-GISEL-NEXT:    v_min_i32_e32 v1, v1, v33012; GFX8-GISEL-NEXT:    v_min_i32_e32 v0, v0, v13013; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]3014;3015; GFX9-SDAG-LABEL: test_vector_reduce_smin_v16i32:3016; GFX9-SDAG:       ; %bb.0: ; %entry3017; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3018; GFX9-SDAG-NEXT:    v_min_i32_e32 v7, v7, v153019; GFX9-SDAG-NEXT:    v_min_i32_e32 v6, v6, v143020; GFX9-SDAG-NEXT:    v_min_i32_e32 v4, v4, v123021; GFX9-SDAG-NEXT:    v_min_i32_e32 v0, v0, v83022; GFX9-SDAG-NEXT:    v_min_i32_e32 v5, v5, v133023; GFX9-SDAG-NEXT:    v_min_i32_e32 v1, v1, v93024; GFX9-SDAG-NEXT:    v_min3_i32 v2, v2, v10, v63025; GFX9-SDAG-NEXT:    v_min3_i32 v3, v3, v11, v73026; GFX9-SDAG-NEXT:    v_min3_i32 v1, v1, v5, v33027; GFX9-SDAG-NEXT:    v_min3_i32 v0, v0, v4, v23028; GFX9-SDAG-NEXT:    v_min_i32_e32 v0, v0, v13029; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]3030;3031; GFX9-GISEL-LABEL: test_vector_reduce_smin_v16i32:3032; GFX9-GISEL:       ; %bb.0: ; %entry3033; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3034; GFX9-GISEL-NEXT:    v_min_i32_e32 v0, v0, v83035; GFX9-GISEL-NEXT:    v_min_i32_e32 v1, v1, v93036; GFX9-GISEL-NEXT:    v_min_i32_e32 v2, v2, v103037; GFX9-GISEL-NEXT:    v_min_i32_e32 v3, v3, v113038; GFX9-GISEL-NEXT:    v_min_i32_e32 v4, v4, v123039; GFX9-GISEL-NEXT:    v_min_i32_e32 v5, v5, v133040; GFX9-GISEL-NEXT:    v_min_i32_e32 v6, v6, v143041; GFX9-GISEL-NEXT:    v_min_i32_e32 v7, v7, v153042; GFX9-GISEL-NEXT:    v_min_i32_e32 v0, v0, v43043; GFX9-GISEL-NEXT:    v_min_i32_e32 v1, v1, v53044; GFX9-GISEL-NEXT:    v_min_i32_e32 v2, v2, v63045; GFX9-GISEL-NEXT:    v_min_i32_e32 v3, v3, v73046; GFX9-GISEL-NEXT:    v_min_i32_e32 v0, v0, v23047; GFX9-GISEL-NEXT:    v_min_i32_e32 v1, v1, v33048; GFX9-GISEL-NEXT:    v_min_i32_e32 v0, v0, v13049; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]3050;3051; GFX10-SDAG-LABEL: test_vector_reduce_smin_v16i32:3052; GFX10-SDAG:       ; %bb.0: ; %entry3053; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3054; GFX10-SDAG-NEXT:    v_min_i32_e32 v7, v7, v153055; GFX10-SDAG-NEXT:    v_min_i32_e32 v6, v6, v143056; GFX10-SDAG-NEXT:    v_min_i32_e32 v4, v4, v123057; GFX10-SDAG-NEXT:    v_min_i32_e32 v0, v0, v83058; GFX10-SDAG-NEXT:    v_min_i32_e32 v5, v5, v133059; GFX10-SDAG-NEXT:    v_min_i32_e32 v1, v1, v93060; GFX10-SDAG-NEXT:    v_min3_i32 v3, v3, v11, v73061; GFX10-SDAG-NEXT:    v_min3_i32 v2, v2, v10, v63062; GFX10-SDAG-NEXT:    v_min3_i32 v1, v1, v5, v33063; GFX10-SDAG-NEXT:    v_min3_i32 v0, v0, v4, v23064; GFX10-SDAG-NEXT:    v_min_i32_e32 v0, v0, v13065; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]3066;3067; GFX10-GISEL-LABEL: test_vector_reduce_smin_v16i32:3068; GFX10-GISEL:       ; %bb.0: ; %entry3069; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3070; GFX10-GISEL-NEXT:    v_min_i32_e32 v0, v0, v83071; GFX10-GISEL-NEXT:    v_min_i32_e32 v1, v1, v93072; GFX10-GISEL-NEXT:    v_min_i32_e32 v2, v2, v103073; GFX10-GISEL-NEXT:    v_min_i32_e32 v3, v3, v113074; GFX10-GISEL-NEXT:    v_min_i32_e32 v4, v4, v123075; GFX10-GISEL-NEXT:    v_min_i32_e32 v5, v5, v133076; GFX10-GISEL-NEXT:    v_min_i32_e32 v6, v6, v143077; GFX10-GISEL-NEXT:    v_min_i32_e32 v7, v7, v153078; GFX10-GISEL-NEXT:    v_min_i32_e32 v0, v0, v43079; GFX10-GISEL-NEXT:    v_min_i32_e32 v1, v1, v53080; GFX10-GISEL-NEXT:    v_min_i32_e32 v2, v2, v63081; GFX10-GISEL-NEXT:    v_min_i32_e32 v3, v3, v73082; GFX10-GISEL-NEXT:    v_min_i32_e32 v0, v0, v23083; GFX10-GISEL-NEXT:    v_min_i32_e32 v1, v1, v33084; GFX10-GISEL-NEXT:    v_min_i32_e32 v0, v0, v13085; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]3086;3087; GFX11-SDAG-LABEL: test_vector_reduce_smin_v16i32:3088; GFX11-SDAG:       ; %bb.0: ; %entry3089; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3090; GFX11-SDAG-NEXT:    v_min_i32_e32 v7, v7, v153091; GFX11-SDAG-NEXT:    v_min_i32_e32 v6, v6, v143092; GFX11-SDAG-NEXT:    v_min_i32_e32 v4, v4, v123093; GFX11-SDAG-NEXT:    v_min_i32_e32 v0, v0, v83094; GFX11-SDAG-NEXT:    v_min_i32_e32 v5, v5, v133095; GFX11-SDAG-NEXT:    v_min_i32_e32 v1, v1, v93096; GFX11-SDAG-NEXT:    v_min3_i32 v3, v3, v11, v73097; GFX11-SDAG-NEXT:    v_min3_i32 v2, v2, v10, v63098; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)3099; GFX11-SDAG-NEXT:    v_min3_i32 v1, v1, v5, v33100; GFX11-SDAG-NEXT:    v_min3_i32 v0, v0, v4, v23101; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)3102; GFX11-SDAG-NEXT:    v_min_i32_e32 v0, v0, v13103; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]3104;3105; GFX11-GISEL-LABEL: test_vector_reduce_smin_v16i32:3106; GFX11-GISEL:       ; %bb.0: ; %entry3107; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3108; GFX11-GISEL-NEXT:    v_min_i32_e32 v0, v0, v83109; GFX11-GISEL-NEXT:    v_min_i32_e32 v1, v1, v93110; GFX11-GISEL-NEXT:    v_min_i32_e32 v2, v2, v103111; GFX11-GISEL-NEXT:    v_min_i32_e32 v3, v3, v113112; GFX11-GISEL-NEXT:    v_min_i32_e32 v4, v4, v123113; GFX11-GISEL-NEXT:    v_min_i32_e32 v5, v5, v133114; GFX11-GISEL-NEXT:    v_min_i32_e32 v6, v6, v143115; GFX11-GISEL-NEXT:    v_min_i32_e32 v7, v7, v153116; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)3117; GFX11-GISEL-NEXT:    v_min_i32_e32 v0, v0, v43118; GFX11-GISEL-NEXT:    v_min_i32_e32 v1, v1, v53119; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)3120; GFX11-GISEL-NEXT:    v_min_i32_e32 v2, v2, v63121; GFX11-GISEL-NEXT:    v_min_i32_e32 v3, v3, v73122; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)3123; GFX11-GISEL-NEXT:    v_min_i32_e32 v0, v0, v23124; GFX11-GISEL-NEXT:    v_min_i32_e32 v1, v1, v33125; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)3126; GFX11-GISEL-NEXT:    v_min_i32_e32 v0, v0, v13127; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]3128;3129; GFX12-SDAG-LABEL: test_vector_reduce_smin_v16i32:3130; GFX12-SDAG:       ; %bb.0: ; %entry3131; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x03132; GFX12-SDAG-NEXT:    s_wait_expcnt 0x03133; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x03134; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x03135; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x03136; GFX12-SDAG-NEXT:    v_min_i32_e32 v7, v7, v153137; GFX12-SDAG-NEXT:    v_min_i32_e32 v6, v6, v143138; GFX12-SDAG-NEXT:    v_min_i32_e32 v4, v4, v123139; GFX12-SDAG-NEXT:    v_min_i32_e32 v0, v0, v83140; GFX12-SDAG-NEXT:    v_min_i32_e32 v5, v5, v133141; GFX12-SDAG-NEXT:    v_min_i32_e32 v1, v1, v93142; GFX12-SDAG-NEXT:    v_min3_i32 v3, v3, v11, v73143; GFX12-SDAG-NEXT:    v_min3_i32 v2, v2, v10, v63144; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)3145; GFX12-SDAG-NEXT:    v_min3_i32 v1, v1, v5, v33146; GFX12-SDAG-NEXT:    v_min3_i32 v0, v0, v4, v23147; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)3148; GFX12-SDAG-NEXT:    v_min_i32_e32 v0, v0, v13149; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]3150;3151; GFX12-GISEL-LABEL: test_vector_reduce_smin_v16i32:3152; GFX12-GISEL:       ; %bb.0: ; %entry3153; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x03154; GFX12-GISEL-NEXT:    s_wait_expcnt 0x03155; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x03156; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x03157; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x03158; GFX12-GISEL-NEXT:    v_min_i32_e32 v0, v0, v83159; GFX12-GISEL-NEXT:    v_min_i32_e32 v1, v1, v93160; GFX12-GISEL-NEXT:    v_min_i32_e32 v2, v2, v103161; GFX12-GISEL-NEXT:    v_min_i32_e32 v3, v3, v113162; GFX12-GISEL-NEXT:    v_min_i32_e32 v4, v4, v123163; GFX12-GISEL-NEXT:    v_min_i32_e32 v5, v5, v133164; GFX12-GISEL-NEXT:    v_min_i32_e32 v6, v6, v143165; GFX12-GISEL-NEXT:    v_min_i32_e32 v7, v7, v153166; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)3167; GFX12-GISEL-NEXT:    v_min_i32_e32 v0, v0, v43168; GFX12-GISEL-NEXT:    v_min_i32_e32 v1, v1, v53169; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)3170; GFX12-GISEL-NEXT:    v_min_i32_e32 v2, v2, v63171; GFX12-GISEL-NEXT:    v_min_i32_e32 v3, v3, v73172; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)3173; GFX12-GISEL-NEXT:    v_min_i32_e32 v0, v0, v23174; GFX12-GISEL-NEXT:    v_min_i32_e32 v1, v1, v33175; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)3176; GFX12-GISEL-NEXT:    v_min_i32_e32 v0, v0, v13177; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]3178entry:3179  %res = call i32 @llvm.vector.reduce.smin.v16i32(<16 x i32> %v)3180  ret i32 %res3181}3182 3183define i64 @test_vector_reduce_smin_v2i64(<2 x i64> %v) {3184; GFX7-LABEL: test_vector_reduce_smin_v2i64:3185; GFX7:       ; %bb.0: ; %entry3186; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3187; GFX7-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]3188; GFX7-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc3189; GFX7-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc3190; GFX7-NEXT:    s_setpc_b64 s[30:31]3191;3192; GFX8-LABEL: test_vector_reduce_smin_v2i64:3193; GFX8:       ; %bb.0: ; %entry3194; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3195; GFX8-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]3196; GFX8-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc3197; GFX8-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc3198; GFX8-NEXT:    s_setpc_b64 s[30:31]3199;3200; GFX9-LABEL: test_vector_reduce_smin_v2i64:3201; GFX9:       ; %bb.0: ; %entry3202; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3203; GFX9-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]3204; GFX9-NEXT:    s_nop 13205; GFX9-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc3206; GFX9-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc3207; GFX9-NEXT:    s_setpc_b64 s[30:31]3208;3209; GFX10-LABEL: test_vector_reduce_smin_v2i64:3210; GFX10:       ; %bb.0: ; %entry3211; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3212; GFX10-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]3213; GFX10-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc_lo3214; GFX10-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc_lo3215; GFX10-NEXT:    s_setpc_b64 s[30:31]3216;3217; GFX11-LABEL: test_vector_reduce_smin_v2i64:3218; GFX11:       ; %bb.0: ; %entry3219; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3220; GFX11-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]3221; GFX11-NEXT:    v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13222; GFX11-NEXT:    s_setpc_b64 s[30:31]3223;3224; GFX12-LABEL: test_vector_reduce_smin_v2i64:3225; GFX12:       ; %bb.0: ; %entry3226; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03227; GFX12-NEXT:    s_wait_expcnt 0x03228; GFX12-NEXT:    s_wait_samplecnt 0x03229; GFX12-NEXT:    s_wait_bvhcnt 0x03230; GFX12-NEXT:    s_wait_kmcnt 0x03231; GFX12-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]3232; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)3233; GFX12-NEXT:    v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13234; GFX12-NEXT:    s_setpc_b64 s[30:31]3235entry:3236  %res = call i64 @llvm.vector.reduce.smin.v2i64(<2 x i64> %v)3237  ret i64 %res3238}3239 3240define i64 @test_vector_reduce_smin_v3i64(<3 x i64> %v) {3241; GFX7-SDAG-LABEL: test_vector_reduce_smin_v3i64:3242; GFX7-SDAG:       ; %bb.0: ; %entry3243; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3244; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]3245; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc3246; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc3247; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[4:5]3248; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc3249; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc3250; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]3251;3252; GFX7-GISEL-LABEL: test_vector_reduce_smin_v3i64:3253; GFX7-GISEL:       ; %bb.0: ; %entry3254; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3255; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]3256; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc3257; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc3258; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[4:5]3259; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc3260; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc3261; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]3262;3263; GFX8-SDAG-LABEL: test_vector_reduce_smin_v3i64:3264; GFX8-SDAG:       ; %bb.0: ; %entry3265; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3266; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]3267; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc3268; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc3269; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[4:5]3270; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc3271; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc3272; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]3273;3274; GFX8-GISEL-LABEL: test_vector_reduce_smin_v3i64:3275; GFX8-GISEL:       ; %bb.0: ; %entry3276; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3277; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]3278; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc3279; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc3280; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[4:5]3281; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc3282; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc3283; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]3284;3285; GFX9-SDAG-LABEL: test_vector_reduce_smin_v3i64:3286; GFX9-SDAG:       ; %bb.0: ; %entry3287; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3288; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]3289; GFX9-SDAG-NEXT:    s_nop 13290; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc3291; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc3292; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[4:5]3293; GFX9-SDAG-NEXT:    s_nop 13294; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc3295; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc3296; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]3297;3298; GFX9-GISEL-LABEL: test_vector_reduce_smin_v3i64:3299; GFX9-GISEL:       ; %bb.0: ; %entry3300; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3301; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]3302; GFX9-GISEL-NEXT:    s_nop 13303; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc3304; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc3305; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[4:5]3306; GFX9-GISEL-NEXT:    s_nop 13307; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc3308; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc3309; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]3310;3311; GFX10-SDAG-LABEL: test_vector_reduce_smin_v3i64:3312; GFX10-SDAG:       ; %bb.0: ; %entry3313; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3314; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]3315; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc_lo3316; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc_lo3317; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[4:5]3318; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc_lo3319; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc_lo3320; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]3321;3322; GFX10-GISEL-LABEL: test_vector_reduce_smin_v3i64:3323; GFX10-GISEL:       ; %bb.0: ; %entry3324; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3325; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]3326; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc_lo3327; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc_lo3328; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[4:5]3329; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc_lo3330; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc_lo3331; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]3332;3333; GFX11-SDAG-LABEL: test_vector_reduce_smin_v3i64:3334; GFX11-SDAG:       ; %bb.0: ; %entry3335; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3336; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]3337; GFX11-SDAG-NEXT:    v_dual_cndmask_b32 v1, v3, v1 :: v_dual_cndmask_b32 v0, v2, v03338; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)3339; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[4:5]3340; GFX11-SDAG-NEXT:    v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v13341; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]3342;3343; GFX11-GISEL-LABEL: test_vector_reduce_smin_v3i64:3344; GFX11-GISEL:       ; %bb.0: ; %entry3345; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3346; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]3347; GFX11-GISEL-NEXT:    v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13348; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)3349; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[4:5]3350; GFX11-GISEL-NEXT:    v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v13351; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]3352;3353; GFX12-SDAG-LABEL: test_vector_reduce_smin_v3i64:3354; GFX12-SDAG:       ; %bb.0: ; %entry3355; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x03356; GFX12-SDAG-NEXT:    s_wait_expcnt 0x03357; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x03358; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x03359; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x03360; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]3361; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)3362; GFX12-SDAG-NEXT:    v_dual_cndmask_b32 v1, v3, v1 :: v_dual_cndmask_b32 v0, v2, v03363; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)3364; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[4:5]3365; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)3366; GFX12-SDAG-NEXT:    v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v13367; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]3368;3369; GFX12-GISEL-LABEL: test_vector_reduce_smin_v3i64:3370; GFX12-GISEL:       ; %bb.0: ; %entry3371; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x03372; GFX12-GISEL-NEXT:    s_wait_expcnt 0x03373; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x03374; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x03375; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x03376; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]3377; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)3378; GFX12-GISEL-NEXT:    v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13379; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)3380; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[4:5]3381; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)3382; GFX12-GISEL-NEXT:    v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v13383; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]3384entry:3385  %res = call i64 @llvm.vector.reduce.smin.v3i64(<3 x i64> %v)3386  ret i64 %res3387}3388 3389define i64 @test_vector_reduce_smin_v4i64(<4 x i64> %v) {3390; GFX7-SDAG-LABEL: test_vector_reduce_smin_v4i64:3391; GFX7-SDAG:       ; %bb.0: ; %entry3392; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3393; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[6:7]3394; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v3, v7, v3, vcc3395; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v2, v6, v2, vcc3396; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[4:5]3397; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc3398; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc3399; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]3400; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc3401; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc3402; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]3403;3404; GFX7-GISEL-LABEL: test_vector_reduce_smin_v4i64:3405; GFX7-GISEL:       ; %bb.0: ; %entry3406; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3407; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[4:5]3408; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc3409; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc3410; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[6:7]3411; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v2, v6, v2, vcc3412; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v3, v7, v3, vcc3413; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]3414; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc3415; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc3416; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]3417;3418; GFX8-SDAG-LABEL: test_vector_reduce_smin_v4i64:3419; GFX8-SDAG:       ; %bb.0: ; %entry3420; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3421; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[6:7]3422; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v3, v7, v3, vcc3423; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v2, v6, v2, vcc3424; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[4:5]3425; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc3426; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc3427; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]3428; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc3429; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc3430; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]3431;3432; GFX8-GISEL-LABEL: test_vector_reduce_smin_v4i64:3433; GFX8-GISEL:       ; %bb.0: ; %entry3434; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3435; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[4:5]3436; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc3437; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc3438; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[6:7]3439; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v2, v6, v2, vcc3440; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v3, v7, v3, vcc3441; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]3442; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc3443; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc3444; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]3445;3446; GFX9-SDAG-LABEL: test_vector_reduce_smin_v4i64:3447; GFX9-SDAG:       ; %bb.0: ; %entry3448; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3449; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[6:7]3450; GFX9-SDAG-NEXT:    s_nop 13451; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v3, v7, v3, vcc3452; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v2, v6, v2, vcc3453; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[4:5]3454; GFX9-SDAG-NEXT:    s_nop 13455; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc3456; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc3457; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]3458; GFX9-SDAG-NEXT:    s_nop 13459; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc3460; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc3461; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]3462;3463; GFX9-GISEL-LABEL: test_vector_reduce_smin_v4i64:3464; GFX9-GISEL:       ; %bb.0: ; %entry3465; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3466; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[4:5]3467; GFX9-GISEL-NEXT:    s_nop 13468; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc3469; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc3470; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[6:7]3471; GFX9-GISEL-NEXT:    s_nop 13472; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v2, v6, v2, vcc3473; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v3, v7, v3, vcc3474; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]3475; GFX9-GISEL-NEXT:    s_nop 13476; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc3477; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc3478; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]3479;3480; GFX10-SDAG-LABEL: test_vector_reduce_smin_v4i64:3481; GFX10-SDAG:       ; %bb.0: ; %entry3482; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3483; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[2:3], v[6:7]3484; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e64 s4, v[0:1], v[4:5]3485; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v3, v7, v3, vcc_lo3486; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v2, v6, v2, vcc_lo3487; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v1, v5, v1, s43488; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v0, v4, v0, s43489; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]3490; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc_lo3491; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc_lo3492; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]3493;3494; GFX10-GISEL-LABEL: test_vector_reduce_smin_v4i64:3495; GFX10-GISEL:       ; %bb.0: ; %entry3496; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3497; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[4:5]3498; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e64 s4, v[2:3], v[6:7]3499; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc_lo3500; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc_lo3501; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v2, v6, v2, s43502; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v3, v7, v3, s43503; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]3504; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc_lo3505; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc_lo3506; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]3507;3508; GFX11-SDAG-LABEL: test_vector_reduce_smin_v4i64:3509; GFX11-SDAG:       ; %bb.0: ; %entry3510; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3511; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[2:3], v[6:7]3512; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e64 s0, v[0:1], v[4:5]3513; GFX11-SDAG-NEXT:    v_dual_cndmask_b32 v3, v7, v3 :: v_dual_cndmask_b32 v2, v6, v23514; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)3515; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v1, v5, v1, s03516; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v0, v4, v0, s03517; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]3518; GFX11-SDAG-NEXT:    v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13519; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]3520;3521; GFX11-GISEL-LABEL: test_vector_reduce_smin_v4i64:3522; GFX11-GISEL:       ; %bb.0: ; %entry3523; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3524; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[4:5]3525; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e64 s0, v[2:3], v[6:7]3526; GFX11-GISEL-NEXT:    v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v13527; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)3528; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v2, v6, v2, s03529; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v3, v7, v3, s03530; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]3531; GFX11-GISEL-NEXT:    v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13532; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]3533;3534; GFX12-SDAG-LABEL: test_vector_reduce_smin_v4i64:3535; GFX12-SDAG:       ; %bb.0: ; %entry3536; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x03537; GFX12-SDAG-NEXT:    s_wait_expcnt 0x03538; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x03539; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x03540; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x03541; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[2:3], v[6:7]3542; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e64 s0, v[0:1], v[4:5]3543; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)3544; GFX12-SDAG-NEXT:    v_dual_cndmask_b32 v3, v7, v3 :: v_dual_cndmask_b32 v2, v6, v23545; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)3546; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)3547; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v1, v5, v1, s03548; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v0, v4, v0, s03549; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]3550; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)3551; GFX12-SDAG-NEXT:    v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13552; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]3553;3554; GFX12-GISEL-LABEL: test_vector_reduce_smin_v4i64:3555; GFX12-GISEL:       ; %bb.0: ; %entry3556; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x03557; GFX12-GISEL-NEXT:    s_wait_expcnt 0x03558; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x03559; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x03560; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x03561; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[4:5]3562; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e64 s0, v[2:3], v[6:7]3563; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)3564; GFX12-GISEL-NEXT:    v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v13565; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_sdst(0)3566; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)3567; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v2, v6, v2, s03568; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v3, v7, v3, s03569; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]3570; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)3571; GFX12-GISEL-NEXT:    v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13572; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]3573entry:3574  %res = call i64 @llvm.vector.reduce.smin.v4i64(<4 x i64> %v)3575  ret i64 %res3576}3577 3578define i64 @test_vector_reduce_smin_v8i64(<8 x i64> %v) {3579; GFX7-SDAG-LABEL: test_vector_reduce_smin_v8i64:3580; GFX7-SDAG:       ; %bb.0: ; %entry3581; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3582; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[4:5], v[12:13]3583; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v5, v13, v5, vcc3584; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v4, v12, v4, vcc3585; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[8:9]3586; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v1, v9, v1, vcc3587; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v0, v8, v0, vcc3588; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[6:7], v[14:15]3589; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v7, v15, v7, vcc3590; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v6, v14, v6, vcc3591; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[10:11]3592; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v3, v11, v3, vcc3593; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v2, v10, v2, vcc3594; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[6:7]3595; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v3, v7, v3, vcc3596; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v2, v6, v2, vcc3597; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[4:5]3598; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc3599; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc3600; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]3601; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc3602; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc3603; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]3604;3605; GFX7-GISEL-LABEL: test_vector_reduce_smin_v8i64:3606; GFX7-GISEL:       ; %bb.0: ; %entry3607; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3608; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[8:9]3609; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v0, v8, v0, vcc3610; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v1, v9, v1, vcc3611; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[10:11]3612; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v2, v10, v2, vcc3613; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v3, v11, v3, vcc3614; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[4:5], v[12:13]3615; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v4, v12, v4, vcc3616; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v5, v13, v5, vcc3617; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[6:7], v[14:15]3618; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v6, v14, v6, vcc3619; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v7, v15, v7, vcc3620; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[4:5]3621; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc3622; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc3623; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[6:7]3624; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v2, v6, v2, vcc3625; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v3, v7, v3, vcc3626; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]3627; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc3628; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc3629; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]3630;3631; GFX8-SDAG-LABEL: test_vector_reduce_smin_v8i64:3632; GFX8-SDAG:       ; %bb.0: ; %entry3633; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3634; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[4:5], v[12:13]3635; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v5, v13, v5, vcc3636; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v4, v12, v4, vcc3637; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[8:9]3638; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v1, v9, v1, vcc3639; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v0, v8, v0, vcc3640; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[6:7], v[14:15]3641; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v7, v15, v7, vcc3642; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v6, v14, v6, vcc3643; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[10:11]3644; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v3, v11, v3, vcc3645; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v2, v10, v2, vcc3646; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[6:7]3647; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v3, v7, v3, vcc3648; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v2, v6, v2, vcc3649; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[4:5]3650; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc3651; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc3652; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]3653; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc3654; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc3655; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]3656;3657; GFX8-GISEL-LABEL: test_vector_reduce_smin_v8i64:3658; GFX8-GISEL:       ; %bb.0: ; %entry3659; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3660; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[8:9]3661; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v0, v8, v0, vcc3662; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v1, v9, v1, vcc3663; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[10:11]3664; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v2, v10, v2, vcc3665; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v3, v11, v3, vcc3666; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[4:5], v[12:13]3667; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v4, v12, v4, vcc3668; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v5, v13, v5, vcc3669; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[6:7], v[14:15]3670; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v6, v14, v6, vcc3671; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v7, v15, v7, vcc3672; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[4:5]3673; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc3674; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc3675; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[6:7]3676; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v2, v6, v2, vcc3677; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v3, v7, v3, vcc3678; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]3679; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc3680; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc3681; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]3682;3683; GFX9-SDAG-LABEL: test_vector_reduce_smin_v8i64:3684; GFX9-SDAG:       ; %bb.0: ; %entry3685; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3686; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[4:5], v[12:13]3687; GFX9-SDAG-NEXT:    s_nop 13688; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v5, v13, v5, vcc3689; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v4, v12, v4, vcc3690; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[8:9]3691; GFX9-SDAG-NEXT:    s_nop 13692; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v1, v9, v1, vcc3693; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v0, v8, v0, vcc3694; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[6:7], v[14:15]3695; GFX9-SDAG-NEXT:    s_nop 13696; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v7, v15, v7, vcc3697; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v6, v14, v6, vcc3698; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[10:11]3699; GFX9-SDAG-NEXT:    s_nop 13700; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v3, v11, v3, vcc3701; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v2, v10, v2, vcc3702; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[6:7]3703; GFX9-SDAG-NEXT:    s_nop 13704; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v3, v7, v3, vcc3705; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v2, v6, v2, vcc3706; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[4:5]3707; GFX9-SDAG-NEXT:    s_nop 13708; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc3709; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc3710; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]3711; GFX9-SDAG-NEXT:    s_nop 13712; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc3713; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc3714; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]3715;3716; GFX9-GISEL-LABEL: test_vector_reduce_smin_v8i64:3717; GFX9-GISEL:       ; %bb.0: ; %entry3718; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3719; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[8:9]3720; GFX9-GISEL-NEXT:    s_nop 13721; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v0, v8, v0, vcc3722; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v1, v9, v1, vcc3723; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[10:11]3724; GFX9-GISEL-NEXT:    s_nop 13725; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v2, v10, v2, vcc3726; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v3, v11, v3, vcc3727; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[4:5], v[12:13]3728; GFX9-GISEL-NEXT:    s_nop 13729; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v4, v12, v4, vcc3730; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v5, v13, v5, vcc3731; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[6:7], v[14:15]3732; GFX9-GISEL-NEXT:    s_nop 13733; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v6, v14, v6, vcc3734; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v7, v15, v7, vcc3735; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[4:5]3736; GFX9-GISEL-NEXT:    s_nop 13737; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc3738; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc3739; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[6:7]3740; GFX9-GISEL-NEXT:    s_nop 13741; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v2, v6, v2, vcc3742; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v3, v7, v3, vcc3743; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]3744; GFX9-GISEL-NEXT:    s_nop 13745; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc3746; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc3747; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]3748;3749; GFX10-SDAG-LABEL: test_vector_reduce_smin_v8i64:3750; GFX10-SDAG:       ; %bb.0: ; %entry3751; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3752; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[4:5], v[12:13]3753; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e64 s4, v[6:7], v[14:15]3754; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e64 s5, v[2:3], v[10:11]3755; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v5, v13, v5, vcc_lo3756; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v4, v12, v4, vcc_lo3757; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[8:9]3758; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v7, v15, v7, s43759; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v6, v14, v6, s43760; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v3, v11, v3, s53761; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v2, v10, v2, s53762; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v1, v9, v1, vcc_lo3763; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v0, v8, v0, vcc_lo3764; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[2:3], v[6:7]3765; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e64 s4, v[0:1], v[4:5]3766; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v3, v7, v3, vcc_lo3767; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v2, v6, v2, vcc_lo3768; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v1, v5, v1, s43769; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v0, v4, v0, s43770; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]3771; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc_lo3772; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc_lo3773; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]3774;3775; GFX10-GISEL-LABEL: test_vector_reduce_smin_v8i64:3776; GFX10-GISEL:       ; %bb.0: ; %entry3777; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3778; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[8:9]3779; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e64 s4, v[2:3], v[10:11]3780; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e64 s5, v[4:5], v[12:13]3781; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v0, v8, v0, vcc_lo3782; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v1, v9, v1, vcc_lo3783; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[6:7], v[14:15]3784; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v2, v10, v2, s43785; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v3, v11, v3, s43786; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v4, v12, v4, s53787; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v5, v13, v5, s53788; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v6, v14, v6, vcc_lo3789; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v7, v15, v7, vcc_lo3790; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[4:5]3791; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e64 s4, v[2:3], v[6:7]3792; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc_lo3793; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc_lo3794; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v2, v6, v2, s43795; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v3, v7, v3, s43796; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]3797; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc_lo3798; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc_lo3799; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]3800;3801; GFX11-SDAG-LABEL: test_vector_reduce_smin_v8i64:3802; GFX11-SDAG:       ; %bb.0: ; %entry3803; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3804; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[4:5], v[12:13]3805; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e64 s0, v[6:7], v[14:15]3806; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e64 s1, v[2:3], v[10:11]3807; GFX11-SDAG-NEXT:    v_dual_cndmask_b32 v5, v13, v5 :: v_dual_cndmask_b32 v4, v12, v43808; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[8:9]3809; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_4) | instid1(VALU_DEP_2)3810; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v7, v15, v7, s03811; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v6, v14, v6, s03812; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v3, v11, v3, s13813; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v2, v10, v2, s13814; GFX11-SDAG-NEXT:    v_dual_cndmask_b32 v1, v9, v1 :: v_dual_cndmask_b32 v0, v8, v03815; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[2:3], v[6:7]3816; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3817; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e64 s0, v[0:1], v[4:5]3818; GFX11-SDAG-NEXT:    v_dual_cndmask_b32 v3, v7, v3 :: v_dual_cndmask_b32 v2, v6, v23819; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v1, v5, v1, s03820; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v0, v4, v0, s03821; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)3822; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]3823; GFX11-SDAG-NEXT:    v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13824; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]3825;3826; GFX11-GISEL-LABEL: test_vector_reduce_smin_v8i64:3827; GFX11-GISEL:       ; %bb.0: ; %entry3828; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3829; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[8:9]3830; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e64 s0, v[2:3], v[10:11]3831; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e64 s1, v[4:5], v[12:13]3832; GFX11-GISEL-NEXT:    v_dual_cndmask_b32 v0, v8, v0 :: v_dual_cndmask_b32 v1, v9, v13833; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[6:7], v[14:15]3834; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_4) | instid1(VALU_DEP_2)3835; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v2, v10, v2, s03836; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v3, v11, v3, s03837; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v4, v12, v4, s13838; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v5, v13, v5, s13839; GFX11-GISEL-NEXT:    v_dual_cndmask_b32 v6, v14, v6 :: v_dual_cndmask_b32 v7, v15, v73840; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[4:5]3841; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3842; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e64 s0, v[2:3], v[6:7]3843; GFX11-GISEL-NEXT:    v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v13844; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v2, v6, v2, s03845; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v3, v7, v3, s03846; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)3847; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]3848; GFX11-GISEL-NEXT:    v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13849; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]3850;3851; GFX12-SDAG-LABEL: test_vector_reduce_smin_v8i64:3852; GFX12-SDAG:       ; %bb.0: ; %entry3853; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x03854; GFX12-SDAG-NEXT:    s_wait_expcnt 0x03855; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x03856; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x03857; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x03858; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[4:5], v[12:13]3859; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e64 s0, v[6:7], v[14:15]3860; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e64 s1, v[2:3], v[10:11]3861; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)3862; GFX12-SDAG-NEXT:    v_dual_cndmask_b32 v5, v13, v5 :: v_dual_cndmask_b32 v4, v12, v43863; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[8:9]3864; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)3865; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v7, v15, v7, s03866; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v6, v14, v6, s03867; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v3, v11, v3, s13868; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v2, v10, v2, s13869; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)3870; GFX12-SDAG-NEXT:    v_dual_cndmask_b32 v1, v9, v1 :: v_dual_cndmask_b32 v0, v8, v03871; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)3872; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[2:3], v[6:7]3873; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e64 s0, v[0:1], v[4:5]3874; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)3875; GFX12-SDAG-NEXT:    v_dual_cndmask_b32 v3, v7, v3 :: v_dual_cndmask_b32 v2, v6, v23876; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)3877; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)3878; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v1, v5, v1, s03879; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v0, v4, v0, s03880; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]3881; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)3882; GFX12-SDAG-NEXT:    v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13883; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]3884;3885; GFX12-GISEL-LABEL: test_vector_reduce_smin_v8i64:3886; GFX12-GISEL:       ; %bb.0: ; %entry3887; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x03888; GFX12-GISEL-NEXT:    s_wait_expcnt 0x03889; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x03890; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x03891; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x03892; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[8:9]3893; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e64 s0, v[2:3], v[10:11]3894; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e64 s1, v[4:5], v[12:13]3895; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)3896; GFX12-GISEL-NEXT:    v_dual_cndmask_b32 v0, v8, v0 :: v_dual_cndmask_b32 v1, v9, v13897; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[6:7], v[14:15]3898; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_sdst(0)3899; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v2, v10, v2, s03900; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v3, v11, v3, s03901; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v4, v12, v4, s13902; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v5, v13, v5, s13903; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)3904; GFX12-GISEL-NEXT:    v_dual_cndmask_b32 v6, v14, v6 :: v_dual_cndmask_b32 v7, v15, v73905; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)3906; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[4:5]3907; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e64 s0, v[2:3], v[6:7]3908; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)3909; GFX12-GISEL-NEXT:    v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v13910; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_sdst(0)3911; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)3912; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v2, v6, v2, s03913; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v3, v7, v3, s03914; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]3915; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)3916; GFX12-GISEL-NEXT:    v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13917; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]3918entry:3919  %res = call i64 @llvm.vector.reduce.smin.v8i64(<8 x i64> %v)3920  ret i64 %res3921}3922 3923define i64 @test_vector_reduce_smin_v16i64(<16 x i64> %v) {3924; GFX7-SDAG-LABEL: test_vector_reduce_smin_v16i64:3925; GFX7-SDAG:       ; %bb.0: ; %entry3926; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3927; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s323928; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[8:9], v[24:25]3929; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e64 s[4:5], v[10:11], v[26:27]3930; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v9, v25, v9, vcc3931; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v8, v24, v8, vcc3932; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[16:17]3933; GFX7-SDAG-NEXT:    v_cndmask_b32_e64 v11, v27, v11, s[4:5]3934; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v1, v17, v1, vcc3935; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v0, v16, v0, vcc3936; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[12:13], v[28:29]3937; GFX7-SDAG-NEXT:    v_cndmask_b32_e64 v10, v26, v10, s[4:5]3938; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v13, v29, v13, vcc3939; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v12, v28, v12, vcc3940; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[4:5], v[20:21]3941; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e64 s[6:7], v[0:1], v[8:9]3942; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v5, v21, v5, vcc3943; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v4, v20, v4, vcc3944; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[6:7], v[22:23]3945; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e64 s[4:5], v[4:5], v[12:13]3946; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v7, v23, v7, vcc3947; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v6, v22, v6, vcc3948; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[18:19]3949; GFX7-SDAG-NEXT:    v_cndmask_b32_e64 v5, v13, v5, s[4:5]3950; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v3, v19, v3, vcc3951; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v2, v18, v2, vcc3952; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[10:11]3953; GFX7-SDAG-NEXT:    v_cndmask_b32_e64 v1, v9, v1, s[6:7]3954; GFX7-SDAG-NEXT:    v_cndmask_b32_e64 v4, v12, v4, s[4:5]3955; GFX7-SDAG-NEXT:    v_cndmask_b32_e64 v0, v8, v0, s[6:7]3956; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v3, v11, v3, vcc3957; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v2, v10, v2, vcc3958; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[4:5]3959; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc3960; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc3961; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0)3962; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[14:15], v[30:31]3963; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v5, v31, v15, vcc3964; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v4, v30, v14, vcc3965; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[6:7], v[4:5]3966; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc3967; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc3968; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[4:5]3969; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v2, v4, v2, vcc3970; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v3, v5, v3, vcc3971; GFX7-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]3972; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc3973; GFX7-SDAG-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc3974; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31]3975;3976; GFX7-GISEL-LABEL: test_vector_reduce_smin_v16i64:3977; GFX7-GISEL:       ; %bb.0: ; %entry3978; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3979; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s323980; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[16:17]3981; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e64 s[4:5], v[10:11], v[26:27]3982; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v0, v16, v0, vcc3983; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v1, v17, v1, vcc3984; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[18:19]3985; GFX7-GISEL-NEXT:    v_cndmask_b32_e64 v10, v26, v10, s[4:5]3986; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v2, v18, v2, vcc3987; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v3, v19, v3, vcc3988; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[4:5], v[20:21]3989; GFX7-GISEL-NEXT:    v_cndmask_b32_e64 v11, v27, v11, s[4:5]3990; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v4, v20, v4, vcc3991; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v5, v21, v5, vcc3992; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[6:7], v[22:23]3993; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e64 s[4:5], v[2:3], v[10:11]3994; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v6, v22, v6, vcc3995; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v7, v23, v7, vcc3996; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[8:9], v[24:25]3997; GFX7-GISEL-NEXT:    v_cndmask_b32_e64 v2, v10, v2, s[4:5]3998; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v8, v24, v8, vcc3999; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v9, v25, v9, vcc4000; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[12:13], v[28:29]4001; GFX7-GISEL-NEXT:    v_cndmask_b32_e64 v3, v11, v3, s[4:5]4002; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v12, v28, v12, vcc4003; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v13, v29, v13, vcc4004; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[8:9]4005; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e64 s[6:7], v[4:5], v[12:13]4006; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v0, v8, v0, vcc4007; GFX7-GISEL-NEXT:    v_cndmask_b32_e64 v4, v12, v4, s[6:7]4008; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v1, v9, v1, vcc4009; GFX7-GISEL-NEXT:    v_cndmask_b32_e64 v5, v13, v5, s[6:7]4010; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[4:5]4011; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc4012; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc4013; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0)4014; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[14:15], v[30:31]4015; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v4, v30, v14, vcc4016; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v5, v31, v15, vcc4017; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[6:7], v[4:5]4018; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc4019; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc4020; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[4:5]4021; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v2, v4, v2, vcc4022; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v3, v5, v3, vcc4023; GFX7-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]4024; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc4025; GFX7-GISEL-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc4026; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31]4027;4028; GFX8-SDAG-LABEL: test_vector_reduce_smin_v16i64:4029; GFX8-SDAG:       ; %bb.0: ; %entry4030; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4031; GFX8-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s324032; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[8:9], v[24:25]4033; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e64 s[4:5], v[10:11], v[26:27]4034; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v9, v25, v9, vcc4035; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v8, v24, v8, vcc4036; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[16:17]4037; GFX8-SDAG-NEXT:    v_cndmask_b32_e64 v11, v27, v11, s[4:5]4038; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v1, v17, v1, vcc4039; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v0, v16, v0, vcc4040; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[12:13], v[28:29]4041; GFX8-SDAG-NEXT:    v_cndmask_b32_e64 v10, v26, v10, s[4:5]4042; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v13, v29, v13, vcc4043; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v12, v28, v12, vcc4044; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[4:5], v[20:21]4045; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e64 s[6:7], v[0:1], v[8:9]4046; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v5, v21, v5, vcc4047; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v4, v20, v4, vcc4048; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[6:7], v[22:23]4049; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e64 s[4:5], v[4:5], v[12:13]4050; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v7, v23, v7, vcc4051; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v6, v22, v6, vcc4052; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[18:19]4053; GFX8-SDAG-NEXT:    v_cndmask_b32_e64 v5, v13, v5, s[4:5]4054; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v3, v19, v3, vcc4055; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v2, v18, v2, vcc4056; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[10:11]4057; GFX8-SDAG-NEXT:    v_cndmask_b32_e64 v1, v9, v1, s[6:7]4058; GFX8-SDAG-NEXT:    v_cndmask_b32_e64 v4, v12, v4, s[4:5]4059; GFX8-SDAG-NEXT:    v_cndmask_b32_e64 v0, v8, v0, s[6:7]4060; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v3, v11, v3, vcc4061; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v2, v10, v2, vcc4062; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[4:5]4063; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc4064; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc4065; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0)4066; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[14:15], v[30:31]4067; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v5, v31, v15, vcc4068; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v4, v30, v14, vcc4069; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[6:7], v[4:5]4070; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc4071; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc4072; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[4:5]4073; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v2, v4, v2, vcc4074; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v3, v5, v3, vcc4075; GFX8-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]4076; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc4077; GFX8-SDAG-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc4078; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]4079;4080; GFX8-GISEL-LABEL: test_vector_reduce_smin_v16i64:4081; GFX8-GISEL:       ; %bb.0: ; %entry4082; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4083; GFX8-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s324084; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[16:17]4085; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e64 s[4:5], v[10:11], v[26:27]4086; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v0, v16, v0, vcc4087; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v1, v17, v1, vcc4088; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[18:19]4089; GFX8-GISEL-NEXT:    v_cndmask_b32_e64 v10, v26, v10, s[4:5]4090; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v2, v18, v2, vcc4091; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v3, v19, v3, vcc4092; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[4:5], v[20:21]4093; GFX8-GISEL-NEXT:    v_cndmask_b32_e64 v11, v27, v11, s[4:5]4094; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v4, v20, v4, vcc4095; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v5, v21, v5, vcc4096; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[6:7], v[22:23]4097; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e64 s[4:5], v[2:3], v[10:11]4098; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v6, v22, v6, vcc4099; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v7, v23, v7, vcc4100; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[8:9], v[24:25]4101; GFX8-GISEL-NEXT:    v_cndmask_b32_e64 v2, v10, v2, s[4:5]4102; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v8, v24, v8, vcc4103; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v9, v25, v9, vcc4104; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[12:13], v[28:29]4105; GFX8-GISEL-NEXT:    v_cndmask_b32_e64 v3, v11, v3, s[4:5]4106; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v12, v28, v12, vcc4107; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v13, v29, v13, vcc4108; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[8:9]4109; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e64 s[6:7], v[4:5], v[12:13]4110; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v0, v8, v0, vcc4111; GFX8-GISEL-NEXT:    v_cndmask_b32_e64 v4, v12, v4, s[6:7]4112; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v1, v9, v1, vcc4113; GFX8-GISEL-NEXT:    v_cndmask_b32_e64 v5, v13, v5, s[6:7]4114; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[4:5]4115; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc4116; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc4117; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0)4118; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[14:15], v[30:31]4119; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v4, v30, v14, vcc4120; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v5, v31, v15, vcc4121; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[6:7], v[4:5]4122; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc4123; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc4124; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[4:5]4125; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v2, v4, v2, vcc4126; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v3, v5, v3, vcc4127; GFX8-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]4128; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc4129; GFX8-GISEL-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc4130; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]4131;4132; GFX9-SDAG-LABEL: test_vector_reduce_smin_v16i64:4133; GFX9-SDAG:       ; %bb.0: ; %entry4134; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4135; GFX9-SDAG-NEXT:    scratch_load_dword v31, off, s324136; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[8:9], v[24:25]4137; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e64 s[0:1], v[0:1], v[16:17]4138; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e64 s[2:3], v[12:13], v[28:29]4139; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e64 s[4:5], v[4:5], v[20:21]4140; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e64 s[6:7], v[6:7], v[22:23]4141; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e64 s[8:9], v[10:11], v[26:27]4142; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e64 s[10:11], v[2:3], v[18:19]4143; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v9, v25, v9, vcc4144; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v1, v17, v1, s[0:1]4145; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v13, v29, v13, s[2:3]4146; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v17, v21, v5, s[4:5]4147; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v5, v23, v7, s[6:7]4148; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v7, v27, v11, s[8:9]4149; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v3, v19, v3, s[10:11]4150; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v8, v24, v8, vcc4151; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v0, v16, v0, s[0:1]4152; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v12, v28, v12, s[2:3]4153; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v16, v20, v4, s[4:5]4154; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v4, v22, v6, s[6:7]4155; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v6, v26, v10, s[8:9]4156; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v2, v18, v2, s[10:11]4157; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[6:7]4158; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e64 s[0:1], v[16:17], v[12:13]4159; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e64 s[2:3], v[0:1], v[8:9]4160; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v3, v7, v3, vcc4161; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v7, v13, v17, s[0:1]4162; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v1, v9, v1, s[2:3]4163; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v2, v6, v2, vcc4164; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v6, v12, v16, s[0:1]4165; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v0, v8, v0, s[2:3]4166; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[6:7]4167; GFX9-SDAG-NEXT:    s_nop 14168; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v1, v7, v1, vcc4169; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v0, v6, v0, vcc4170; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0)4171; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[14:15], v[30:31]4172; GFX9-SDAG-NEXT:    s_nop 14173; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v7, v31, v15, vcc4174; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v6, v30, v14, vcc4175; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[4:5], v[6:7]4176; GFX9-SDAG-NEXT:    s_nop 14177; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v5, v7, v5, vcc4178; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v4, v6, v4, vcc4179; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[4:5]4180; GFX9-SDAG-NEXT:    s_nop 14181; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v2, v4, v2, vcc4182; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v3, v5, v3, vcc4183; GFX9-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]4184; GFX9-SDAG-NEXT:    s_nop 14185; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc4186; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc4187; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]4188;4189; GFX9-GISEL-LABEL: test_vector_reduce_smin_v16i64:4190; GFX9-GISEL:       ; %bb.0: ; %entry4191; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4192; GFX9-GISEL-NEXT:    scratch_load_dword v31, off, s324193; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[16:17]4194; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e64 s[2:3], v[4:5], v[20:21]4195; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e64 s[6:7], v[8:9], v[24:25]4196; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e64 s[10:11], v[12:13], v[28:29]4197; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v0, v16, v0, vcc4198; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v4, v20, v4, s[2:3]4199; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v8, v24, v8, s[6:7]4200; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v12, v28, v12, s[10:11]4201; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v1, v17, v1, vcc4202; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v5, v21, v5, s[2:3]4203; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v9, v25, v9, s[6:7]4204; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v13, v29, v13, s[10:11]4205; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[8:9]4206; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e64 s[2:3], v[4:5], v[12:13]4207; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e64 s[0:1], v[2:3], v[18:19]4208; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v0, v8, v0, vcc4209; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v4, v12, v4, s[2:3]4210; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v1, v9, v1, vcc4211; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v5, v13, v5, s[2:3]4212; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[4:5]4213; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e64 s[4:5], v[6:7], v[22:23]4214; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e64 s[8:9], v[10:11], v[26:27]4215; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc4216; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc4217; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v2, v18, v2, s[0:1]4218; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v6, v22, v6, s[4:5]4219; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v10, v26, v10, s[8:9]4220; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v3, v19, v3, s[0:1]4221; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v7, v23, v7, s[4:5]4222; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v11, v27, v11, s[8:9]4223; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e64 s[0:1], v[2:3], v[10:11]4224; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0)4225; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[14:15], v[30:31]4226; GFX9-GISEL-NEXT:    s_nop 14227; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v4, v30, v14, vcc4228; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v5, v31, v15, vcc4229; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[6:7], v[4:5]4230; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v2, v10, v2, s[0:1]4231; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v3, v11, v3, s[0:1]4232; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc4233; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc4234; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[2:3], v[4:5]4235; GFX9-GISEL-NEXT:    s_nop 14236; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v2, v4, v2, vcc4237; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v3, v5, v3, vcc4238; GFX9-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc, v[0:1], v[2:3]4239; GFX9-GISEL-NEXT:    s_nop 14240; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc4241; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc4242; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]4243;4244; GFX10-SDAG-LABEL: test_vector_reduce_smin_v16i64:4245; GFX10-SDAG:       ; %bb.0: ; %entry4246; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4247; GFX10-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s324248; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[8:9], v[24:25]4249; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e64 s4, v[0:1], v[16:17]4250; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e64 s5, v[12:13], v[28:29]4251; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e64 s6, v[6:7], v[22:23]4252; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v9, v25, v9, vcc_lo4253; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v8, v24, v8, vcc_lo4254; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v1, v17, v1, s44255; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v0, v16, v0, s44256; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[10:11], v[26:27]4257; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e64 s4, v[2:3], v[18:19]4258; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v13, v29, v13, s54259; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v12, v28, v12, s54260; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e64 s5, v[4:5], v[20:21]4261; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v7, v23, v7, s64262; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v11, v27, v11, vcc_lo4263; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v10, v26, v10, vcc_lo4264; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v3, v19, v3, s44265; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v2, v18, v2, s44266; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v5, v21, v5, s54267; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v4, v20, v4, s54268; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v6, v22, v6, s64269; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e64 s5, v[0:1], v[8:9]4270; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e64 s4, v[2:3], v[10:11]4271; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v1, v9, v1, s54272; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v3, v11, v3, s44273; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v2, v10, v2, s44274; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v0, v8, v0, s54275; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0)4276; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[14:15], v[30:31]4277; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v15, v31, v15, vcc_lo4278; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v14, v30, v14, vcc_lo4279; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[4:5], v[12:13]4280; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e64 s4, v[6:7], v[14:15]4281; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v5, v13, v5, vcc_lo4282; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v4, v12, v4, vcc_lo4283; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v7, v15, v7, s44284; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v6, v14, v6, s44285; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[4:5]4286; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e64 s4, v[2:3], v[6:7]4287; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc_lo4288; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc_lo4289; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v2, v6, v2, s44290; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v3, v7, v3, s44291; GFX10-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]4292; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc_lo4293; GFX10-SDAG-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc_lo4294; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]4295;4296; GFX10-GISEL-LABEL: test_vector_reduce_smin_v16i64:4297; GFX10-GISEL:       ; %bb.0: ; %entry4298; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4299; GFX10-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s324300; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[16:17]4301; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e64 s4, v[2:3], v[18:19]4302; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e64 s5, v[4:5], v[20:21]4303; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v0, v16, v0, vcc_lo4304; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v1, v17, v1, vcc_lo4305; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[6:7], v[22:23]4306; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v2, v18, v2, s44307; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v3, v19, v3, s44308; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e64 s4, v[8:9], v[24:25]4309; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v4, v20, v4, s54310; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v5, v21, v5, s54311; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v6, v22, v6, vcc_lo4312; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v7, v23, v7, vcc_lo4313; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[10:11], v[26:27]4314; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v8, v24, v8, s44315; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e64 s5, v[12:13], v[28:29]4316; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v9, v25, v9, s44317; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v10, v26, v10, vcc_lo4318; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v11, v27, v11, vcc_lo4319; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[8:9]4320; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v12, v28, v12, s54321; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v13, v29, v13, s54322; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v0, v8, v0, vcc_lo4323; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e64 s5, v[4:5], v[12:13]4324; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v1, v9, v1, vcc_lo4325; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v4, v12, v4, s54326; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v5, v13, v5, s54327; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0)4328; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e64 s4, v[14:15], v[30:31]4329; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v14, v30, v14, s44330; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v15, v31, v15, s44331; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e64 s4, v[2:3], v[10:11]4332; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[6:7], v[14:15]4333; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v2, v10, v2, s44334; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v3, v11, v3, s44335; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v6, v14, v6, vcc_lo4336; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v7, v15, v7, vcc_lo4337; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[4:5]4338; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e64 s4, v[2:3], v[6:7]4339; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc_lo4340; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc_lo4341; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v2, v6, v2, s44342; GFX10-GISEL-NEXT:    v_cndmask_b32_e64 v3, v7, v3, s44343; GFX10-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]4344; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc_lo4345; GFX10-GISEL-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc_lo4346; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]4347;4348; GFX11-SDAG-LABEL: test_vector_reduce_smin_v16i64:4349; GFX11-SDAG:       ; %bb.0: ; %entry4350; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4351; GFX11-SDAG-NEXT:    scratch_load_b32 v31, off, s324352; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[8:9], v[24:25]4353; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e64 s0, v[0:1], v[16:17]4354; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e64 s1, v[12:13], v[28:29]4355; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e64 s2, v[6:7], v[22:23]4356; GFX11-SDAG-NEXT:    v_dual_cndmask_b32 v9, v25, v9 :: v_dual_cndmask_b32 v8, v24, v84357; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4)4358; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v1, v17, v1, s04359; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v0, v16, v0, s04360; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[10:11], v[26:27]4361; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e64 s0, v[2:3], v[18:19]4362; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v13, v29, v13, s14363; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v12, v28, v12, s14364; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e64 s1, v[4:5], v[20:21]4365; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v7, v23, v7, s24366; GFX11-SDAG-NEXT:    v_dual_cndmask_b32 v11, v27, v11 :: v_dual_cndmask_b32 v10, v26, v104367; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v3, v19, v3, s04368; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v2, v18, v2, s04369; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v5, v21, v5, s14370; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v4, v20, v4, s14371; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v6, v22, v6, s24372; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e64 s1, v[0:1], v[8:9]4373; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e64 s0, v[2:3], v[10:11]4374; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)4375; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v1, v9, v1, s14376; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v3, v11, v3, s04377; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v2, v10, v2, s04378; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v0, v8, v0, s14379; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0)4380; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[14:15], v[30:31]4381; GFX11-SDAG-NEXT:    v_dual_cndmask_b32 v15, v31, v15 :: v_dual_cndmask_b32 v14, v30, v144382; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[4:5], v[12:13]4383; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)4384; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e64 s0, v[6:7], v[14:15]4385; GFX11-SDAG-NEXT:    v_dual_cndmask_b32 v5, v13, v5 :: v_dual_cndmask_b32 v4, v12, v44386; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v7, v15, v7, s04387; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v6, v14, v6, s04388; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)4389; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[4:5]4390; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e64 s0, v[2:3], v[6:7]4391; GFX11-SDAG-NEXT:    v_dual_cndmask_b32 v1, v5, v1 :: v_dual_cndmask_b32 v0, v4, v04392; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)4393; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v2, v6, v2, s04394; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v3, v7, v3, s04395; GFX11-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]4396; GFX11-SDAG-NEXT:    v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v14397; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]4398;4399; GFX11-GISEL-LABEL: test_vector_reduce_smin_v16i64:4400; GFX11-GISEL:       ; %bb.0: ; %entry4401; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4402; GFX11-GISEL-NEXT:    scratch_load_b32 v31, off, s324403; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[16:17]4404; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e64 s0, v[2:3], v[18:19]4405; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e64 s1, v[4:5], v[20:21]4406; GFX11-GISEL-NEXT:    v_dual_cndmask_b32 v0, v16, v0 :: v_dual_cndmask_b32 v1, v17, v14407; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[6:7], v[22:23]4408; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4)4409; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v2, v18, v2, s04410; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v3, v19, v3, s04411; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e64 s0, v[8:9], v[24:25]4412; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v4, v20, v4, s14413; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v5, v21, v5, s14414; GFX11-GISEL-NEXT:    v_dual_cndmask_b32 v6, v22, v6 :: v_dual_cndmask_b32 v7, v23, v74415; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[10:11], v[26:27]4416; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v8, v24, v8, s04417; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e64 s1, v[12:13], v[28:29]4418; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v9, v25, v9, s04419; GFX11-GISEL-NEXT:    v_dual_cndmask_b32 v10, v26, v10 :: v_dual_cndmask_b32 v11, v27, v114420; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_4)4421; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[8:9]4422; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v12, v28, v12, s14423; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v13, v29, v13, s14424; GFX11-GISEL-NEXT:    v_dual_cndmask_b32 v0, v8, v0 :: v_dual_cndmask_b32 v1, v9, v14425; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4426; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e64 s1, v[4:5], v[12:13]4427; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v4, v12, v4, s14428; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v5, v13, v5, s14429; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0)4430; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e64 s0, v[14:15], v[30:31]4431; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)4432; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v14, v30, v14, s04433; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v15, v31, v15, s04434; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e64 s0, v[2:3], v[10:11]4435; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[6:7], v[14:15]4436; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_2)4437; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v2, v10, v2, s04438; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v3, v11, v3, s04439; GFX11-GISEL-NEXT:    v_dual_cndmask_b32 v6, v14, v6 :: v_dual_cndmask_b32 v7, v15, v74440; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[4:5]4441; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e64 s0, v[2:3], v[6:7]4442; GFX11-GISEL-NEXT:    v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v14443; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)4444; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v2, v6, v2, s04445; GFX11-GISEL-NEXT:    v_cndmask_b32_e64 v3, v7, v3, s04446; GFX11-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]4447; GFX11-GISEL-NEXT:    v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v14448; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]4449;4450; GFX12-SDAG-LABEL: test_vector_reduce_smin_v16i64:4451; GFX12-SDAG:       ; %bb.0: ; %entry4452; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x04453; GFX12-SDAG-NEXT:    s_wait_expcnt 0x04454; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x04455; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x04456; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x04457; GFX12-SDAG-NEXT:    scratch_load_b32 v31, off, s324458; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[8:9], v[24:25]4459; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e64 s0, v[0:1], v[16:17]4460; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e64 s1, v[12:13], v[28:29]4461; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e64 s2, v[6:7], v[22:23]4462; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)4463; GFX12-SDAG-NEXT:    v_dual_cndmask_b32 v9, v25, v9 :: v_dual_cndmask_b32 v8, v24, v84464; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)4465; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v1, v17, v1, s04466; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v0, v16, v0, s04467; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[10:11], v[26:27]4468; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e64 s0, v[2:3], v[18:19]4469; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v13, v29, v13, s14470; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v12, v28, v12, s14471; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e64 s1, v[4:5], v[20:21]4472; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v7, v23, v7, s24473; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)4474; GFX12-SDAG-NEXT:    v_dual_cndmask_b32 v11, v27, v11 :: v_dual_cndmask_b32 v10, v26, v104475; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)4476; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v3, v19, v3, s04477; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v2, v18, v2, s04478; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v5, v21, v5, s14479; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v4, v20, v4, s14480; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v6, v22, v6, s24481; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e64 s1, v[0:1], v[8:9]4482; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e64 s0, v[2:3], v[10:11]4483; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)4484; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)4485; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v1, v9, v1, s14486; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v3, v11, v3, s04487; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v2, v10, v2, s04488; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v0, v8, v0, s14489; GFX12-SDAG-NEXT:    s_wait_loadcnt 0x04490; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[14:15], v[30:31]4491; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)4492; GFX12-SDAG-NEXT:    v_dual_cndmask_b32 v15, v31, v15 :: v_dual_cndmask_b32 v14, v30, v144493; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[4:5], v[12:13]4494; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_2)4495; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e64 s0, v[6:7], v[14:15]4496; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)4497; GFX12-SDAG-NEXT:    v_dual_cndmask_b32 v5, v13, v5 :: v_dual_cndmask_b32 v4, v12, v44498; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)4499; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v7, v15, v7, s04500; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v6, v14, v6, s04501; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)4502; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[4:5]4503; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e64 s0, v[2:3], v[6:7]4504; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)4505; GFX12-SDAG-NEXT:    v_dual_cndmask_b32 v1, v5, v1 :: v_dual_cndmask_b32 v0, v4, v04506; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)4507; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)4508; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v2, v6, v2, s04509; GFX12-SDAG-NEXT:    v_cndmask_b32_e64 v3, v7, v3, s04510; GFX12-SDAG-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]4511; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)4512; GFX12-SDAG-NEXT:    v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v14513; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]4514;4515; GFX12-GISEL-LABEL: test_vector_reduce_smin_v16i64:4516; GFX12-GISEL:       ; %bb.0: ; %entry4517; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x04518; GFX12-GISEL-NEXT:    s_wait_expcnt 0x04519; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x04520; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x04521; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x04522; GFX12-GISEL-NEXT:    scratch_load_b32 v31, off, s324523; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[16:17]4524; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e64 s0, v[2:3], v[18:19]4525; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e64 s1, v[4:5], v[20:21]4526; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)4527; GFX12-GISEL-NEXT:    v_dual_cndmask_b32 v0, v16, v0 :: v_dual_cndmask_b32 v1, v17, v14528; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[6:7], v[22:23]4529; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_sdst(0)4530; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v2, v18, v2, s04531; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v3, v19, v3, s04532; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e64 s0, v[8:9], v[24:25]4533; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v4, v20, v4, s14534; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v5, v21, v5, s14535; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)4536; GFX12-GISEL-NEXT:    v_dual_cndmask_b32 v6, v22, v6 :: v_dual_cndmask_b32 v7, v23, v74537; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[10:11], v[26:27]4538; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_sdst(0)4539; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v8, v24, v8, s04540; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e64 s1, v[12:13], v[28:29]4541; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v9, v25, v9, s04542; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)4543; GFX12-GISEL-NEXT:    v_dual_cndmask_b32 v10, v26, v10 :: v_dual_cndmask_b32 v11, v27, v114544; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2)4545; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[8:9]4546; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_sdst(0)4547; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v12, v28, v12, s14548; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v13, v29, v13, s14549; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)4550; GFX12-GISEL-NEXT:    v_dual_cndmask_b32 v0, v8, v0 :: v_dual_cndmask_b32 v1, v9, v14551; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)4552; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e64 s1, v[4:5], v[12:13]4553; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_sdst(0)4554; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v4, v12, v4, s14555; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v5, v13, v5, s14556; GFX12-GISEL-NEXT:    s_wait_loadcnt 0x04557; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e64 s0, v[14:15], v[30:31]4558; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_sdst(0)4559; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)4560; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v14, v30, v14, s04561; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v15, v31, v15, s04562; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e64 s0, v[2:3], v[10:11]4563; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[6:7], v[14:15]4564; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_sdst(0)4565; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(VALU_DEP_2)4566; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v2, v10, v2, s04567; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v3, v11, v3, s04568; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)4569; GFX12-GISEL-NEXT:    v_dual_cndmask_b32 v6, v14, v6 :: v_dual_cndmask_b32 v7, v15, v74570; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[4:5]4571; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e64 s0, v[2:3], v[6:7]4572; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)4573; GFX12-GISEL-NEXT:    v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v14574; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_sdst(0)4575; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)4576; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v2, v6, v2, s04577; GFX12-GISEL-NEXT:    v_cndmask_b32_e64 v3, v7, v3, s04578; GFX12-GISEL-NEXT:    v_cmp_lt_i64_e32 vcc_lo, v[0:1], v[2:3]4579; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)4580; GFX12-GISEL-NEXT:    v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v14581; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]4582entry:4583  %res = call i64 @llvm.vector.reduce.smin.v16i64(<16 x i64> %v)4584  ret i64 %res4585}4586 4587declare i8 @llvm.vector.reduce.smin.v2i8(<2 x i8>)4588declare i8 @llvm.vector.reduce.smin.v3i8(<3 x i8>)4589declare i8 @llvm.vector.reduce.smin.v4i8(<4 x i8>)4590declare i8 @llvm.vector.reduce.smin.v8i8(<8 x i8>)4591declare i8 @llvm.vector.reduce.smin.v16i8(<16 x i8>)4592 4593declare i16 @llvm.vector.reduce.smin.v2i16(<2 x i16>)4594declare i16 @llvm.vector.reduce.smin.v3i16(<3 x i16>)4595declare i16 @llvm.vector.reduce.smin.v4i16(<4 x i16>)4596declare i16 @llvm.vector.reduce.smin.v8i16(<8 x i16>)4597declare i16 @llvm.vector.reduce.smin.v16i16(<16 x i16>)4598 4599declare i32 @llvm.vector.reduce.smin.v2i32(<2 x i32>)4600declare i32 @llvm.vector.reduce.smin.v3i32(<3 x i32>)4601declare i32 @llvm.vector.reduce.smin.v4i32(<4 x i32>)4602declare i32 @llvm.vector.reduce.smin.v8i32(<8 x i32>)4603declare i32 @llvm.vector.reduce.smin.v16i32(<16 x i32>)4604 4605declare i64 @llvm.vector.reduce.smin.v2i64(<2 x i64>)4606declare i64 @llvm.vector.reduce.smin.v3i64(<3 x i64>)4607declare i64 @llvm.vector.reduce.smin.v4i64(<4 x i64>)4608declare i64 @llvm.vector.reduce.smin.v8i64(<8 x i64>)4609declare i64 @llvm.vector.reduce.smin.v16i64(<16 x i64>)4610;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:4611; GFX11-GISEL-FAKE16: {{.*}}4612; GFX12-GISEL-FAKE16: {{.*}}4613