4226 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_umin_v2i8(<2 x i8> %v) {21; GFX7-SDAG-LABEL: test_vector_reduce_umin_v2i8:22; GFX7-SDAG: ; %bb.0: ; %entry23; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)24; GFX7-SDAG-NEXT: v_and_b32_e32 v1, 0xff, v125; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 0xff, v026; GFX7-SDAG-NEXT: v_min_u32_e32 v0, v0, v127; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]28;29; GFX7-GISEL-LABEL: test_vector_reduce_umin_v2i8:30; GFX7-GISEL: ; %bb.0: ; %entry31; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)32; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v033; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v134; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v135; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]36;37; GFX8-LABEL: test_vector_reduce_umin_v2i8:38; GFX8: ; %bb.0: ; %entry39; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)40; GFX8-NEXT: v_min_u16_sdwa v0, v0, 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_umin_v2i8:44; GFX9: ; %bb.0: ; %entry45; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)46; GFX9-NEXT: v_min_u16_sdwa v0, v0, 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_umin_v2i8:50; GFX10-SDAG: ; %bb.0: ; %entry51; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)52; GFX10-SDAG-NEXT: v_and_b32_e32 v1, 0xff, v153; GFX10-SDAG-NEXT: v_and_b32_e32 v0, 0xff, v054; GFX10-SDAG-NEXT: v_min_u16 v0, v0, v155; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]56;57; GFX10-GISEL-LABEL: test_vector_reduce_umin_v2i8:58; GFX10-GISEL: ; %bb.0: ; %entry59; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)60; GFX10-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v061; GFX10-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v162; GFX10-GISEL-NEXT: v_min_u16 v0, v0, v163; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]64;65; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_umin_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_and_b16 v0.h, 0xff, v1.l69; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v0.l, 0xff, v0.l70; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)71; GFX11-SDAG-TRUE16-NEXT: v_min_u16 v0.l, v0.l, v0.h72; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]73;74; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_umin_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_and_b32_e32 v1, 0xff, v178; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 0xff, v079; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)80; GFX11-SDAG-FAKE16-NEXT: v_min_u16 v0, v0, v181; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]82;83; GFX11-GISEL-LABEL: test_vector_reduce_umin_v2i8:84; GFX11-GISEL: ; %bb.0: ; %entry85; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)86; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v087; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v188; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)89; GFX11-GISEL-NEXT: v_min_u16 v0, v0, v190; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]91;92; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_umin_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_and_b16 v0.h, 0xff, v1.l100; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v0.l, 0xff, v0.l101; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)102; GFX12-SDAG-TRUE16-NEXT: v_min_u16 v0.l, v0.l, v0.h103; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]104;105; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_umin_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_and_b32_e32 v1, 0xff, v1113; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 0xff, v0114; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)115; GFX12-SDAG-FAKE16-NEXT: v_min_u16 v0, v0, v1116; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]117;118; GFX12-GISEL-LABEL: test_vector_reduce_umin_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_and_b32_e32 v0, 0xff, v0126; GFX12-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v1127; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)128; GFX12-GISEL-NEXT: v_min_u16 v0, v0, v1129; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]130entry:131 %res = call i8 @llvm.vector.reduce.umin.v2i8(<2 x i8> %v)132 ret i8 %res133}134 135define i8 @test_vector_reduce_umin_v3i8(<3 x i8> %v) {136; GFX7-SDAG-LABEL: test_vector_reduce_umin_v3i8:137; GFX7-SDAG: ; %bb.0: ; %entry138; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)139; GFX7-SDAG-NEXT: v_and_b32_e32 v2, 0xff, v2140; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 0xff, v0141; GFX7-SDAG-NEXT: v_and_b32_e32 v1, 0xff, v1142; GFX7-SDAG-NEXT: v_min3_u32 v0, v1, v0, v2143; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]144;145; GFX7-GISEL-LABEL: test_vector_reduce_umin_v3i8:146; GFX7-GISEL: ; %bb.0: ; %entry147; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)148; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v0149; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v1150; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v1151; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v2152; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v1153; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]154;155; GFX8-SDAG-LABEL: test_vector_reduce_umin_v3i8:156; GFX8-SDAG: ; %bb.0: ; %entry157; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)158; GFX8-SDAG-NEXT: v_min_u16_sdwa v0, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0159; GFX8-SDAG-NEXT: v_min_u16_sdwa v0, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD160; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]161;162; GFX8-GISEL-LABEL: test_vector_reduce_umin_v3i8:163; GFX8-GISEL: ; %bb.0: ; %entry164; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)165; GFX8-GISEL-NEXT: v_min_u16_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0166; GFX8-GISEL-NEXT: v_min_u16_sdwa v0, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0167; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]168;169; GFX9-SDAG-LABEL: test_vector_reduce_umin_v3i8:170; GFX9-SDAG: ; %bb.0: ; %entry171; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)172; GFX9-SDAG-NEXT: v_and_b32_e32 v2, 0xff, v2173; GFX9-SDAG-NEXT: v_and_b32_e32 v0, 0xff, v0174; GFX9-SDAG-NEXT: v_and_b32_e32 v1, 0xff, v1175; GFX9-SDAG-NEXT: v_min3_u16 v0, v1, v0, v2176; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]177;178; GFX9-GISEL-LABEL: test_vector_reduce_umin_v3i8:179; GFX9-GISEL: ; %bb.0: ; %entry180; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)181; GFX9-GISEL-NEXT: v_min_u16_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0182; GFX9-GISEL-NEXT: v_min_u16_sdwa v0, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0183; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]184;185; GFX10-SDAG-LABEL: test_vector_reduce_umin_v3i8:186; GFX10-SDAG: ; %bb.0: ; %entry187; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)188; GFX10-SDAG-NEXT: v_and_b32_e32 v2, 0xff, v2189; GFX10-SDAG-NEXT: v_and_b32_e32 v0, 0xff, v0190; GFX10-SDAG-NEXT: v_and_b32_e32 v1, 0xff, v1191; GFX10-SDAG-NEXT: v_min3_u16 v0, v1, v0, v2192; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]193;194; GFX10-GISEL-LABEL: test_vector_reduce_umin_v3i8:195; GFX10-GISEL: ; %bb.0: ; %entry196; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)197; GFX10-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v0198; GFX10-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v1199; GFX10-GISEL-NEXT: v_min_u16 v0, v0, v1200; GFX10-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v2201; GFX10-GISEL-NEXT: v_min_u16 v0, v0, v1202; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]203;204; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_umin_v3i8:205; GFX11-SDAG-TRUE16: ; %bb.0: ; %entry206; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)207; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v0.h, 0xff, v2.l208; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v0.l, 0xff, v0.l209; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v1.l, 0xff, v1.l210; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)211; GFX11-SDAG-TRUE16-NEXT: v_min3_u16 v0.l, v1.l, v0.l, v0.h212; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]213;214; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_umin_v3i8:215; GFX11-SDAG-FAKE16: ; %bb.0: ; %entry216; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)217; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v2, 0xff, v2218; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 0xff, v0219; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xff, v1220; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)221; GFX11-SDAG-FAKE16-NEXT: v_min3_u16 v0, v1, v0, v2222; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]223;224; GFX11-GISEL-LABEL: test_vector_reduce_umin_v3i8:225; GFX11-GISEL: ; %bb.0: ; %entry226; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)227; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v0228; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v1229; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)230; GFX11-GISEL-NEXT: v_min_u16 v0, v0, v1231; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v2232; GFX11-GISEL-NEXT: v_min_u16 v0, v0, v1233; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]234;235; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_umin_v3i8:236; GFX12-SDAG-TRUE16: ; %bb.0: ; %entry237; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0238; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x0239; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x0240; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x0241; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0242; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v0.h, 0xff, v2.l243; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v0.l, 0xff, v0.l244; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v1.l, 0xff, v1.l245; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)246; GFX12-SDAG-TRUE16-NEXT: v_min3_u16 v0.l, v1.l, v0.l, v0.h247; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]248;249; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_umin_v3i8:250; GFX12-SDAG-FAKE16: ; %bb.0: ; %entry251; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0252; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x0253; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x0254; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x0255; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x0256; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v2, 0xff, v2257; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 0xff, v0258; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xff, v1259; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)260; GFX12-SDAG-FAKE16-NEXT: v_min3_u16 v0, v1, v0, v2261; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]262;263; GFX12-GISEL-LABEL: test_vector_reduce_umin_v3i8:264; GFX12-GISEL: ; %bb.0: ; %entry265; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0266; GFX12-GISEL-NEXT: s_wait_expcnt 0x0267; GFX12-GISEL-NEXT: s_wait_samplecnt 0x0268; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x0269; GFX12-GISEL-NEXT: s_wait_kmcnt 0x0270; GFX12-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v0271; GFX12-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v1272; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)273; GFX12-GISEL-NEXT: v_min_u16 v0, v0, v1274; GFX12-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v2275; GFX12-GISEL-NEXT: v_min_u16 v0, v0, v1276; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]277entry:278 %res = call i8 @llvm.vector.reduce.umin.v3i8(<3 x i8> %v)279 ret i8 %res280}281 282define i8 @test_vector_reduce_umin_v4i8(<4 x i8> %v) {283; GFX7-SDAG-LABEL: test_vector_reduce_umin_v4i8:284; GFX7-SDAG: ; %bb.0: ; %entry285; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)286; GFX7-SDAG-NEXT: v_and_b32_e32 v3, 0xff, v3287; GFX7-SDAG-NEXT: v_and_b32_e32 v1, 0xff, v1288; GFX7-SDAG-NEXT: v_and_b32_e32 v2, 0xff, v2289; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 0xff, v0290; GFX7-SDAG-NEXT: v_min_u32_e32 v1, v1, v3291; GFX7-SDAG-NEXT: v_min3_u32 v0, v0, v2, v1292; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]293;294; GFX7-GISEL-LABEL: test_vector_reduce_umin_v4i8:295; GFX7-GISEL: ; %bb.0: ; %entry296; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)297; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v0298; GFX7-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v2299; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v2300; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v1301; GFX7-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v3302; GFX7-GISEL-NEXT: v_min_u32_e32 v1, v1, v2303; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v1304; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]305;306; GFX8-SDAG-LABEL: test_vector_reduce_umin_v4i8:307; GFX8-SDAG: ; %bb.0: ; %entry308; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)309; GFX8-SDAG-NEXT: v_min_u16_sdwa v1, v1, v3 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0310; GFX8-SDAG-NEXT: v_min_u16_sdwa v0, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0311; GFX8-SDAG-NEXT: v_lshrrev_b32_e32 v1, 8, v1312; GFX8-SDAG-NEXT: v_min_u16_e32 v0, v0, v1313; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]314;315; GFX8-GISEL-LABEL: test_vector_reduce_umin_v4i8:316; GFX8-GISEL: ; %bb.0: ; %entry317; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)318; GFX8-GISEL-NEXT: v_min_u16_sdwa v0, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0319; GFX8-GISEL-NEXT: v_min_u16_sdwa v1, v1, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0320; GFX8-GISEL-NEXT: v_min_u16_e32 v0, v0, v1321; GFX8-GISEL-NEXT: v_bfe_u32 v0, v0, 0, 8322; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]323;324; GFX9-SDAG-LABEL: test_vector_reduce_umin_v4i8:325; GFX9-SDAG: ; %bb.0: ; %entry326; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)327; GFX9-SDAG-NEXT: v_min_u16_sdwa v1, v1, v3 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0328; GFX9-SDAG-NEXT: v_and_b32_e32 v2, 0xff, v2329; GFX9-SDAG-NEXT: v_and_b32_e32 v0, 0xff, v0330; GFX9-SDAG-NEXT: v_lshrrev_b32_e32 v1, 8, v1331; GFX9-SDAG-NEXT: v_min3_u16 v0, v0, v2, v1332; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]333;334; GFX9-GISEL-LABEL: test_vector_reduce_umin_v4i8:335; GFX9-GISEL: ; %bb.0: ; %entry336; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)337; GFX9-GISEL-NEXT: v_min_u16_sdwa v0, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0338; GFX9-GISEL-NEXT: v_min_u16_sdwa v1, v1, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0339; GFX9-GISEL-NEXT: v_min_u16_e32 v0, v0, v1340; GFX9-GISEL-NEXT: v_bfe_u32 v0, v0, 0, 8341; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]342;343; GFX10-SDAG-LABEL: test_vector_reduce_umin_v4i8:344; GFX10-SDAG: ; %bb.0: ; %entry345; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)346; GFX10-SDAG-NEXT: v_and_b32_e32 v3, 0xff, v3347; GFX10-SDAG-NEXT: v_and_b32_e32 v1, 0xff, v1348; GFX10-SDAG-NEXT: v_and_b32_e32 v2, 0xff, v2349; GFX10-SDAG-NEXT: v_and_b32_e32 v0, 0xff, v0350; GFX10-SDAG-NEXT: v_min_u16 v1, v1, v3351; GFX10-SDAG-NEXT: v_mov_b32_e32 v3, 8352; GFX10-SDAG-NEXT: v_lshlrev_b16 v1, 8, v1353; GFX10-SDAG-NEXT: v_lshrrev_b32_sdwa v1, v3, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0354; GFX10-SDAG-NEXT: v_min3_u16 v0, v0, v2, v1355; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]356;357; GFX10-GISEL-LABEL: test_vector_reduce_umin_v4i8:358; GFX10-GISEL: ; %bb.0: ; %entry359; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)360; GFX10-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v0361; GFX10-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v2362; GFX10-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v1363; GFX10-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v3364; GFX10-GISEL-NEXT: v_min_u16 v0, v0, v2365; GFX10-GISEL-NEXT: v_min_u16 v1, v1, v3366; GFX10-GISEL-NEXT: v_min_u16 v0, v0, v1367; GFX10-GISEL-NEXT: v_bfe_u32 v0, v0, 0, 8368; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]369;370; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_umin_v4i8:371; GFX11-SDAG-TRUE16: ; %bb.0: ; %entry372; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)373; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v1.h, 0xff, v3.l374; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v1.l, 0xff, v1.l375; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v0.h, 0xff, v2.l376; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v0.l, 0xff, v0.l377; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)378; GFX11-SDAG-TRUE16-NEXT: v_min_u16 v1.l, v1.l, v1.h379; GFX11-SDAG-TRUE16-NEXT: v_mov_b16_e32 v1.h, 0380; GFX11-SDAG-TRUE16-NEXT: v_lshlrev_b16 v1.l, 8, v1.l381; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)382; GFX11-SDAG-TRUE16-NEXT: v_lshrrev_b32_e32 v1, 8, v1383; GFX11-SDAG-TRUE16-NEXT: v_min3_u16 v0.l, v0.l, v0.h, v1.l384; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]385;386; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_umin_v4i8:387; GFX11-SDAG-FAKE16: ; %bb.0: ; %entry388; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)389; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v3, 0xff, v3390; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xff, v1391; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v2, 0xff, v2392; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 0xff, v0393; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)394; GFX11-SDAG-FAKE16-NEXT: v_min_u16 v1, v1, v3395; GFX11-SDAG-FAKE16-NEXT: v_lshlrev_b16 v1, 8, v1396; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)397; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xffff, v1398; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 8, v1399; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)400; GFX11-SDAG-FAKE16-NEXT: v_min3_u16 v0, v0, v2, v1401; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]402;403; GFX11-GISEL-LABEL: test_vector_reduce_umin_v4i8:404; GFX11-GISEL: ; %bb.0: ; %entry405; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)406; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v0407; GFX11-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v2408; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v1409; GFX11-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v3410; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)411; GFX11-GISEL-NEXT: v_min_u16 v0, v0, v2412; GFX11-GISEL-NEXT: v_min_u16 v1, v1, v3413; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)414; GFX11-GISEL-NEXT: v_min_u16 v0, v0, v1415; GFX11-GISEL-NEXT: v_bfe_u32 v0, v0, 0, 8416; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]417;418; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_umin_v4i8:419; GFX12-SDAG-TRUE16: ; %bb.0: ; %entry420; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0421; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x0422; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x0423; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x0424; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0425; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v1.h, 0xff, v3.l426; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v1.l, 0xff, v1.l427; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v0.h, 0xff, v2.l428; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v0.l, 0xff, v0.l429; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)430; GFX12-SDAG-TRUE16-NEXT: v_min_u16 v1.l, v1.l, v1.h431; GFX12-SDAG-TRUE16-NEXT: v_mov_b16_e32 v1.h, 0432; GFX12-SDAG-TRUE16-NEXT: v_lshlrev_b16 v1.l, 8, v1.l433; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)434; GFX12-SDAG-TRUE16-NEXT: v_lshrrev_b32_e32 v1, 8, v1435; GFX12-SDAG-TRUE16-NEXT: v_min3_u16 v0.l, v0.l, v0.h, v1.l436; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]437;438; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_umin_v4i8:439; GFX12-SDAG-FAKE16: ; %bb.0: ; %entry440; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0441; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x0442; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x0443; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x0444; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x0445; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v3, 0xff, v3446; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xff, v1447; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v2, 0xff, v2448; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 0xff, v0449; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)450; GFX12-SDAG-FAKE16-NEXT: v_min_u16 v1, v1, v3451; GFX12-SDAG-FAKE16-NEXT: v_lshlrev_b16 v1, 8, v1452; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)453; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xffff, v1454; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 8, v1455; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)456; GFX12-SDAG-FAKE16-NEXT: v_min3_u16 v0, v0, v2, v1457; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]458;459; GFX12-GISEL-LABEL: test_vector_reduce_umin_v4i8:460; GFX12-GISEL: ; %bb.0: ; %entry461; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0462; GFX12-GISEL-NEXT: s_wait_expcnt 0x0463; GFX12-GISEL-NEXT: s_wait_samplecnt 0x0464; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x0465; GFX12-GISEL-NEXT: s_wait_kmcnt 0x0466; GFX12-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v0467; GFX12-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v2468; GFX12-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v1469; GFX12-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v3470; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)471; GFX12-GISEL-NEXT: v_min_u16 v0, v0, v2472; GFX12-GISEL-NEXT: v_min_u16 v1, v1, v3473; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)474; GFX12-GISEL-NEXT: v_min_u16 v0, v0, v1475; GFX12-GISEL-NEXT: v_bfe_u32 v0, v0, 0, 8476; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]477entry:478 %res = call i8 @llvm.vector.reduce.umin.v4i8(<4 x i8> %v)479 ret i8 %res480}481 482define i8 @test_vector_reduce_umin_v8i8(<8 x i8> %v) {483; GFX7-SDAG-LABEL: test_vector_reduce_umin_v8i8:484; GFX7-SDAG: ; %bb.0: ; %entry485; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)486; GFX7-SDAG-NEXT: v_and_b32_e32 v5, 0xff, v5487; GFX7-SDAG-NEXT: v_and_b32_e32 v1, 0xff, v1488; GFX7-SDAG-NEXT: v_and_b32_e32 v4, 0xff, v4489; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 0xff, v0490; GFX7-SDAG-NEXT: v_and_b32_e32 v6, 0xff, v6491; GFX7-SDAG-NEXT: v_and_b32_e32 v2, 0xff, v2492; GFX7-SDAG-NEXT: v_and_b32_e32 v7, 0xff, v7493; GFX7-SDAG-NEXT: v_and_b32_e32 v3, 0xff, v3494; GFX7-SDAG-NEXT: v_min_u32_e32 v0, v0, v4495; GFX7-SDAG-NEXT: v_min_u32_e32 v1, v1, v5496; GFX7-SDAG-NEXT: v_min3_u32 v1, v1, v3, v7497; GFX7-SDAG-NEXT: v_min3_u32 v0, v0, v2, v6498; GFX7-SDAG-NEXT: v_min_u32_e32 v0, v0, v1499; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]500;501; GFX7-GISEL-LABEL: test_vector_reduce_umin_v8i8:502; GFX7-GISEL: ; %bb.0: ; %entry503; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)504; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v0505; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v4506; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v4507; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v1508; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v5509; GFX7-GISEL-NEXT: v_min_u32_e32 v1, v1, v4510; GFX7-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v2511; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v6512; GFX7-GISEL-NEXT: v_min_u32_e32 v2, v2, v4513; GFX7-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v3514; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v7515; GFX7-GISEL-NEXT: v_min_u32_e32 v3, v3, v4516; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v2517; GFX7-GISEL-NEXT: v_min_u32_e32 v1, v1, v3518; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v1519; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]520;521; GFX8-SDAG-LABEL: test_vector_reduce_umin_v8i8:522; GFX8-SDAG: ; %bb.0: ; %entry523; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)524; GFX8-SDAG-NEXT: v_min_u16_sdwa v3, v3, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0525; GFX8-SDAG-NEXT: v_min_u16_sdwa v1, v1, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0526; GFX8-SDAG-NEXT: v_min_u16_sdwa v2, v2, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0527; GFX8-SDAG-NEXT: v_min_u16_sdwa v0, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0528; GFX8-SDAG-NEXT: v_min_u16_sdwa v1, v1, v3 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD529; GFX8-SDAG-NEXT: v_min_u16_e32 v0, v0, v2530; GFX8-SDAG-NEXT: v_lshrrev_b32_e32 v1, 8, v1531; GFX8-SDAG-NEXT: v_min_u16_e32 v0, v0, v1532; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]533;534; GFX8-GISEL-LABEL: test_vector_reduce_umin_v8i8:535; GFX8-GISEL: ; %bb.0: ; %entry536; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)537; GFX8-GISEL-NEXT: v_min_u16_sdwa v0, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0538; GFX8-GISEL-NEXT: v_min_u16_sdwa v1, v1, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0539; GFX8-GISEL-NEXT: v_min_u16_sdwa v2, v2, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0540; GFX8-GISEL-NEXT: v_min_u16_sdwa v3, v3, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0541; GFX8-GISEL-NEXT: v_min_u16_e32 v0, v0, v2542; GFX8-GISEL-NEXT: v_min_u16_e32 v1, v1, v3543; GFX8-GISEL-NEXT: v_min_u16_e32 v0, v0, v1544; GFX8-GISEL-NEXT: v_bfe_u32 v0, v0, 0, 8545; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]546;547; GFX9-SDAG-LABEL: test_vector_reduce_umin_v8i8:548; GFX9-SDAG: ; %bb.0: ; %entry549; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)550; GFX9-SDAG-NEXT: v_and_b32_e32 v7, 0xff, v7551; GFX9-SDAG-NEXT: v_and_b32_e32 v3, 0xff, v3552; GFX9-SDAG-NEXT: v_min_u16_sdwa v1, v1, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0553; GFX9-SDAG-NEXT: v_min3_u16 v1, v1, v3, v7554; GFX9-SDAG-NEXT: v_and_b32_e32 v6, 0xff, v6555; GFX9-SDAG-NEXT: v_and_b32_e32 v2, 0xff, v2556; GFX9-SDAG-NEXT: v_min_u16_sdwa v0, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0557; GFX9-SDAG-NEXT: v_lshlrev_b16_e32 v1, 8, v1558; GFX9-SDAG-NEXT: v_min3_u16 v0, v0, v2, v6559; GFX9-SDAG-NEXT: v_lshrrev_b32_e32 v1, 8, v1560; GFX9-SDAG-NEXT: v_min_u16_e32 v0, v0, v1561; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]562;563; GFX9-GISEL-LABEL: test_vector_reduce_umin_v8i8:564; GFX9-GISEL: ; %bb.0: ; %entry565; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)566; GFX9-GISEL-NEXT: v_min_u16_sdwa v0, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0567; GFX9-GISEL-NEXT: v_min_u16_sdwa v1, v1, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0568; GFX9-GISEL-NEXT: v_min_u16_sdwa v2, v2, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0569; GFX9-GISEL-NEXT: v_min_u16_sdwa v3, v3, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0570; GFX9-GISEL-NEXT: v_min_u16_e32 v0, v0, v2571; GFX9-GISEL-NEXT: v_min_u16_e32 v1, v1, v3572; GFX9-GISEL-NEXT: v_min_u16_e32 v0, v0, v1573; GFX9-GISEL-NEXT: v_bfe_u32 v0, v0, 0, 8574; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]575;576; GFX10-SDAG-LABEL: test_vector_reduce_umin_v8i8:577; GFX10-SDAG: ; %bb.0: ; %entry578; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)579; GFX10-SDAG-NEXT: v_and_b32_e32 v5, 0xff, v5580; GFX10-SDAG-NEXT: v_and_b32_e32 v1, 0xff, v1581; GFX10-SDAG-NEXT: v_and_b32_e32 v7, 0xff, v7582; GFX10-SDAG-NEXT: v_and_b32_e32 v3, 0xff, v3583; GFX10-SDAG-NEXT: v_and_b32_e32 v4, 0xff, v4584; GFX10-SDAG-NEXT: v_and_b32_e32 v0, 0xff, v0585; GFX10-SDAG-NEXT: v_min_u16 v1, v1, v5586; GFX10-SDAG-NEXT: v_and_b32_e32 v2, 0xff, v2587; GFX10-SDAG-NEXT: v_min_u16 v0, v0, v4588; GFX10-SDAG-NEXT: v_min3_u16 v1, v1, v3, v7589; GFX10-SDAG-NEXT: v_and_b32_e32 v3, 0xff, v6590; GFX10-SDAG-NEXT: v_mov_b32_e32 v4, 8591; GFX10-SDAG-NEXT: v_lshlrev_b16 v1, 8, v1592; GFX10-SDAG-NEXT: v_min3_u16 v0, v0, v2, v3593; GFX10-SDAG-NEXT: v_lshrrev_b32_sdwa v1, v4, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0594; GFX10-SDAG-NEXT: v_min_u16 v0, v0, v1595; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]596;597; GFX10-GISEL-LABEL: test_vector_reduce_umin_v8i8:598; GFX10-GISEL: ; %bb.0: ; %entry599; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)600; GFX10-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v0601; GFX10-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v4602; GFX10-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v1603; GFX10-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v5604; GFX10-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v2605; GFX10-GISEL-NEXT: v_and_b32_e32 v6, 0xff, v6606; GFX10-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v3607; GFX10-GISEL-NEXT: v_and_b32_e32 v7, 0xff, v7608; GFX10-GISEL-NEXT: v_min_u16 v0, v0, v4609; GFX10-GISEL-NEXT: v_min_u16 v1, v1, v5610; GFX10-GISEL-NEXT: v_min_u16 v2, v2, v6611; GFX10-GISEL-NEXT: v_min_u16 v3, v3, v7612; GFX10-GISEL-NEXT: v_min_u16 v0, v0, v2613; GFX10-GISEL-NEXT: v_min_u16 v1, v1, v3614; GFX10-GISEL-NEXT: v_min_u16 v0, v0, v1615; GFX10-GISEL-NEXT: v_bfe_u32 v0, v0, 0, 8616; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]617;618; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_umin_v8i8:619; GFX11-SDAG-TRUE16: ; %bb.0: ; %entry620; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)621; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v1.h, 0xff, v5.l622; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v1.l, 0xff, v1.l623; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v3.h, 0xff, v7.l624; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v3.l, 0xff, v3.l625; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v0.l, 0xff, v0.l626; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v2.l, 0xff, v2.l627; GFX11-SDAG-TRUE16-NEXT: v_min_u16 v0.h, v1.l, v1.h628; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v1.l, 0xff, v4.l629; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v1.h, 0xff, v6.l630; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)631; GFX11-SDAG-TRUE16-NEXT: v_min3_u16 v0.h, v0.h, v3.l, v3.h632; GFX11-SDAG-TRUE16-NEXT: v_min_u16 v0.l, v0.l, v1.l633; GFX11-SDAG-TRUE16-NEXT: v_mov_b16_e32 v3.h, 0634; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)635; GFX11-SDAG-TRUE16-NEXT: v_lshlrev_b16 v3.l, 8, v0.h636; GFX11-SDAG-TRUE16-NEXT: v_min3_u16 v0.l, v0.l, v2.l, v1.h637; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)638; GFX11-SDAG-TRUE16-NEXT: v_lshrrev_b32_e32 v1, 8, v3639; GFX11-SDAG-TRUE16-NEXT: v_min_u16 v0.l, v0.l, v1.l640; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]641;642; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_umin_v8i8:643; GFX11-SDAG-FAKE16: ; %bb.0: ; %entry644; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)645; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v5, 0xff, v5646; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xff, v1647; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v7, 0xff, v7648; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v3, 0xff, v3649; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 0xff, v0650; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v2, 0xff, v2651; GFX11-SDAG-FAKE16-NEXT: v_min_u16 v1, v1, v5652; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)653; GFX11-SDAG-FAKE16-NEXT: v_min3_u16 v1, v1, v3, v7654; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v3, 0xff, v4655; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v4, 0xff, v6656; GFX11-SDAG-FAKE16-NEXT: v_lshlrev_b16 v1, 8, v1657; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)658; GFX11-SDAG-FAKE16-NEXT: v_min_u16 v0, v0, v3659; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xffff, v1660; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)661; GFX11-SDAG-FAKE16-NEXT: v_min3_u16 v0, v0, v2, v4662; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 8, v1663; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)664; GFX11-SDAG-FAKE16-NEXT: v_min_u16 v0, v0, v1665; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]666;667; GFX11-GISEL-LABEL: test_vector_reduce_umin_v8i8:668; GFX11-GISEL: ; %bb.0: ; %entry669; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)670; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v0671; GFX11-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v4672; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v1673; GFX11-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v5674; GFX11-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v2675; GFX11-GISEL-NEXT: v_and_b32_e32 v6, 0xff, v6676; GFX11-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v3677; GFX11-GISEL-NEXT: v_and_b32_e32 v7, 0xff, v7678; GFX11-GISEL-NEXT: v_min_u16 v0, v0, v4679; GFX11-GISEL-NEXT: v_min_u16 v1, v1, v5680; GFX11-GISEL-NEXT: v_min_u16 v2, v2, v6681; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)682; GFX11-GISEL-NEXT: v_min_u16 v3, v3, v7683; GFX11-GISEL-NEXT: v_min_u16 v0, v0, v2684; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)685; GFX11-GISEL-NEXT: v_min_u16 v1, v1, v3686; GFX11-GISEL-NEXT: v_min_u16 v0, v0, v1687; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)688; GFX11-GISEL-NEXT: v_bfe_u32 v0, v0, 0, 8689; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]690;691; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_umin_v8i8:692; GFX12-SDAG-TRUE16: ; %bb.0: ; %entry693; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0694; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x0695; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x0696; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x0697; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0698; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v1.h, 0xff, v5.l699; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v1.l, 0xff, v1.l700; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v3.h, 0xff, v7.l701; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v3.l, 0xff, v3.l702; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v0.l, 0xff, v0.l703; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v2.l, 0xff, v2.l704; GFX12-SDAG-TRUE16-NEXT: v_min_u16 v0.h, v1.l, v1.h705; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v1.l, 0xff, v4.l706; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v1.h, 0xff, v6.l707; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)708; GFX12-SDAG-TRUE16-NEXT: v_min3_u16 v0.h, v0.h, v3.l, v3.h709; GFX12-SDAG-TRUE16-NEXT: v_min_u16 v0.l, v0.l, v1.l710; GFX12-SDAG-TRUE16-NEXT: v_mov_b16_e32 v3.h, 0711; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)712; GFX12-SDAG-TRUE16-NEXT: v_lshlrev_b16 v3.l, 8, v0.h713; GFX12-SDAG-TRUE16-NEXT: v_min3_u16 v0.l, v0.l, v2.l, v1.h714; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)715; GFX12-SDAG-TRUE16-NEXT: v_lshrrev_b32_e32 v1, 8, v3716; GFX12-SDAG-TRUE16-NEXT: v_min_u16 v0.l, v0.l, v1.l717; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]718;719; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_umin_v8i8:720; GFX12-SDAG-FAKE16: ; %bb.0: ; %entry721; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0722; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x0723; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x0724; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x0725; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x0726; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v5, 0xff, v5727; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xff, v1728; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v7, 0xff, v7729; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v3, 0xff, v3730; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 0xff, v0731; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v2, 0xff, v2732; GFX12-SDAG-FAKE16-NEXT: v_min_u16 v1, v1, v5733; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)734; GFX12-SDAG-FAKE16-NEXT: v_min3_u16 v1, v1, v3, v7735; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v3, 0xff, v4736; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v4, 0xff, v6737; GFX12-SDAG-FAKE16-NEXT: v_lshlrev_b16 v1, 8, v1738; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)739; GFX12-SDAG-FAKE16-NEXT: v_min_u16 v0, v0, v3740; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xffff, v1741; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)742; GFX12-SDAG-FAKE16-NEXT: v_min3_u16 v0, v0, v2, v4743; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 8, v1744; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)745; GFX12-SDAG-FAKE16-NEXT: v_min_u16 v0, v0, v1746; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]747;748; GFX12-GISEL-LABEL: test_vector_reduce_umin_v8i8:749; GFX12-GISEL: ; %bb.0: ; %entry750; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0751; GFX12-GISEL-NEXT: s_wait_expcnt 0x0752; GFX12-GISEL-NEXT: s_wait_samplecnt 0x0753; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x0754; GFX12-GISEL-NEXT: s_wait_kmcnt 0x0755; GFX12-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v0756; GFX12-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v4757; GFX12-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v1758; GFX12-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v5759; GFX12-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v2760; GFX12-GISEL-NEXT: v_and_b32_e32 v6, 0xff, v6761; GFX12-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v3762; GFX12-GISEL-NEXT: v_and_b32_e32 v7, 0xff, v7763; GFX12-GISEL-NEXT: v_min_u16 v0, v0, v4764; GFX12-GISEL-NEXT: v_min_u16 v1, v1, v5765; GFX12-GISEL-NEXT: v_min_u16 v2, v2, v6766; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)767; GFX12-GISEL-NEXT: v_min_u16 v3, v3, v7768; GFX12-GISEL-NEXT: v_min_u16 v0, v0, v2769; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)770; GFX12-GISEL-NEXT: v_min_u16 v1, v1, v3771; GFX12-GISEL-NEXT: v_min_u16 v0, v0, v1772; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)773; GFX12-GISEL-NEXT: v_bfe_u32 v0, v0, 0, 8774; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]775entry:776 %res = call i8 @llvm.vector.reduce.umin.v8i8(<8 x i8> %v)777 ret i8 %res778}779 780define i8 @test_vector_reduce_umin_v16i8(<16 x i8> %v) {781; GFX7-SDAG-LABEL: test_vector_reduce_umin_v16i8:782; GFX7-SDAG: ; %bb.0: ; %entry783; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)784; GFX7-SDAG-NEXT: v_and_b32_e32 v8, 0xff, v8785; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 0xff, v0786; GFX7-SDAG-NEXT: v_and_b32_e32 v9, 0xff, v9787; GFX7-SDAG-NEXT: v_and_b32_e32 v1, 0xff, v1788; GFX7-SDAG-NEXT: v_and_b32_e32 v13, 0xff, v13789; GFX7-SDAG-NEXT: v_and_b32_e32 v5, 0xff, v5790; GFX7-SDAG-NEXT: v_and_b32_e32 v12, 0xff, v12791; GFX7-SDAG-NEXT: v_and_b32_e32 v4, 0xff, v4792; GFX7-SDAG-NEXT: v_and_b32_e32 v11, 0xff, v11793; GFX7-SDAG-NEXT: v_and_b32_e32 v3, 0xff, v3794; GFX7-SDAG-NEXT: v_and_b32_e32 v15, 0xff, v15795; GFX7-SDAG-NEXT: v_and_b32_e32 v7, 0xff, v7796; GFX7-SDAG-NEXT: v_and_b32_e32 v10, 0xff, v10797; GFX7-SDAG-NEXT: v_and_b32_e32 v2, 0xff, v2798; GFX7-SDAG-NEXT: v_and_b32_e32 v14, 0xff, v14799; GFX7-SDAG-NEXT: v_and_b32_e32 v6, 0xff, v6800; GFX7-SDAG-NEXT: v_min_u32_e32 v1, v1, v9801; GFX7-SDAG-NEXT: v_min_u32_e32 v0, v0, v8802; GFX7-SDAG-NEXT: v_min_u32_e32 v6, v6, v14803; GFX7-SDAG-NEXT: v_min_u32_e32 v2, v2, v10804; GFX7-SDAG-NEXT: v_min_u32_e32 v7, v7, v15805; GFX7-SDAG-NEXT: v_min_u32_e32 v3, v3, v11806; GFX7-SDAG-NEXT: v_min3_u32 v0, v0, v4, v12807; GFX7-SDAG-NEXT: v_min3_u32 v1, v1, v5, v13808; GFX7-SDAG-NEXT: v_min3_u32 v1, v1, v3, v7809; GFX7-SDAG-NEXT: v_min3_u32 v0, v0, v2, v6810; GFX7-SDAG-NEXT: v_min_u32_e32 v0, v0, v1811; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]812;813; GFX7-GISEL-LABEL: test_vector_reduce_umin_v16i8:814; GFX7-GISEL: ; %bb.0: ; %entry815; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)816; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v0817; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v8818; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v8819; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v1820; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v9821; GFX7-GISEL-NEXT: v_min_u32_e32 v1, v1, v8822; GFX7-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v2823; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v10824; GFX7-GISEL-NEXT: v_min_u32_e32 v2, v2, v8825; GFX7-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v3826; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v11827; GFX7-GISEL-NEXT: v_min_u32_e32 v3, v3, v8828; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v4829; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v12830; GFX7-GISEL-NEXT: v_min_u32_e32 v4, v4, v8831; GFX7-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v5832; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v13833; GFX7-GISEL-NEXT: v_min_u32_e32 v5, v5, v8834; GFX7-GISEL-NEXT: v_and_b32_e32 v6, 0xff, v6835; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v14836; GFX7-GISEL-NEXT: v_min_u32_e32 v6, v6, v8837; GFX7-GISEL-NEXT: v_and_b32_e32 v7, 0xff, v7838; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v15839; GFX7-GISEL-NEXT: v_min_u32_e32 v7, v7, v8840; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v4841; GFX7-GISEL-NEXT: v_min_u32_e32 v1, v1, v5842; GFX7-GISEL-NEXT: v_min_u32_e32 v2, v2, v6843; GFX7-GISEL-NEXT: v_min_u32_e32 v3, v3, v7844; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v2845; GFX7-GISEL-NEXT: v_min_u32_e32 v1, v1, v3846; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v1847; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]848;849; GFX8-SDAG-LABEL: test_vector_reduce_umin_v16i8:850; GFX8-SDAG: ; %bb.0: ; %entry851; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)852; GFX8-SDAG-NEXT: v_min_u16_sdwa v4, v4, v12 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0853; GFX8-SDAG-NEXT: v_min_u16_sdwa v0, v0, v8 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0854; GFX8-SDAG-NEXT: v_min_u16_sdwa v6, v6, v14 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0855; GFX8-SDAG-NEXT: v_min_u16_sdwa v2, v2, v10 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0856; GFX8-SDAG-NEXT: v_min_u16_sdwa v5, v5, v13 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0857; GFX8-SDAG-NEXT: v_min_u16_sdwa v1, v1, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0858; GFX8-SDAG-NEXT: v_min_u16_sdwa v7, v7, v15 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0859; GFX8-SDAG-NEXT: v_min_u16_sdwa v3, v3, v11 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0860; GFX8-SDAG-NEXT: v_min_u16_e32 v3, v3, v7861; GFX8-SDAG-NEXT: v_min_u16_e32 v1, v1, v5862; GFX8-SDAG-NEXT: v_min_u16_e32 v2, v2, v6863; GFX8-SDAG-NEXT: v_min_u16_e32 v0, v0, v4864; GFX8-SDAG-NEXT: v_min_u16_e32 v0, v0, v2865; GFX8-SDAG-NEXT: v_min_u16_sdwa v1, v1, v3 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD866; GFX8-SDAG-NEXT: v_or_b32_e32 v0, v0, v1867; GFX8-SDAG-NEXT: v_mov_b32_e32 v1, 8868; GFX8-SDAG-NEXT: v_lshrrev_b32_sdwa v1, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0869; GFX8-SDAG-NEXT: v_min_u16_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD870; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]871;872; GFX8-GISEL-LABEL: test_vector_reduce_umin_v16i8:873; GFX8-GISEL: ; %bb.0: ; %entry874; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)875; GFX8-GISEL-NEXT: v_min_u16_sdwa v0, v0, v8 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0876; GFX8-GISEL-NEXT: v_min_u16_sdwa v1, v1, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0877; GFX8-GISEL-NEXT: v_min_u16_sdwa v2, v2, v10 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0878; GFX8-GISEL-NEXT: v_min_u16_sdwa v3, v3, v11 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0879; GFX8-GISEL-NEXT: v_min_u16_sdwa v4, v4, v12 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0880; GFX8-GISEL-NEXT: v_min_u16_sdwa v5, v5, v13 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0881; GFX8-GISEL-NEXT: v_min_u16_sdwa v6, v6, v14 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0882; GFX8-GISEL-NEXT: v_min_u16_sdwa v7, v7, v15 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0883; GFX8-GISEL-NEXT: v_min_u16_e32 v0, v0, v4884; GFX8-GISEL-NEXT: v_min_u16_e32 v1, v1, v5885; GFX8-GISEL-NEXT: v_min_u16_e32 v2, v2, v6886; GFX8-GISEL-NEXT: v_min_u16_e32 v3, v3, v7887; GFX8-GISEL-NEXT: v_min_u16_e32 v0, v0, v2888; GFX8-GISEL-NEXT: v_min_u16_e32 v1, v1, v3889; GFX8-GISEL-NEXT: v_min_u16_e32 v0, v0, v1890; GFX8-GISEL-NEXT: v_bfe_u32 v0, v0, 0, 8891; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]892;893; GFX9-SDAG-LABEL: test_vector_reduce_umin_v16i8:894; GFX9-SDAG: ; %bb.0: ; %entry895; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)896; GFX9-SDAG-NEXT: v_and_b32_e32 v13, 0xff, v13897; GFX9-SDAG-NEXT: v_and_b32_e32 v5, 0xff, v5898; GFX9-SDAG-NEXT: v_min_u16_sdwa v1, v1, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0899; GFX9-SDAG-NEXT: v_and_b32_e32 v12, 0xff, v12900; GFX9-SDAG-NEXT: v_and_b32_e32 v4, 0xff, v4901; GFX9-SDAG-NEXT: v_min_u16_sdwa v7, v7, v15 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0902; GFX9-SDAG-NEXT: v_min_u16_sdwa v3, v3, v11 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0903; GFX9-SDAG-NEXT: v_min_u16_sdwa v0, v0, v8 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0904; GFX9-SDAG-NEXT: v_min3_u16 v1, v1, v5, v13905; GFX9-SDAG-NEXT: v_min_u16_sdwa v6, v6, v14 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0906; GFX9-SDAG-NEXT: v_min_u16_sdwa v2, v2, v10 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0907; GFX9-SDAG-NEXT: v_min3_u16 v0, v0, v4, v12908; GFX9-SDAG-NEXT: v_min3_u16 v1, v1, v3, v7909; GFX9-SDAG-NEXT: v_min3_u16 v0, v0, v2, v6910; GFX9-SDAG-NEXT: v_lshlrev_b16_e32 v1, 8, v1911; GFX9-SDAG-NEXT: v_or_b32_e32 v0, v0, v1912; GFX9-SDAG-NEXT: v_mov_b32_e32 v1, 8913; GFX9-SDAG-NEXT: v_lshrrev_b32_sdwa v1, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0914; GFX9-SDAG-NEXT: v_min_u16_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD915; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]916;917; GFX9-GISEL-LABEL: test_vector_reduce_umin_v16i8:918; GFX9-GISEL: ; %bb.0: ; %entry919; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)920; GFX9-GISEL-NEXT: v_min_u16_sdwa v0, v0, v8 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0921; GFX9-GISEL-NEXT: v_min_u16_sdwa v1, v1, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0922; GFX9-GISEL-NEXT: v_min_u16_sdwa v2, v2, v10 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0923; GFX9-GISEL-NEXT: v_min_u16_sdwa v3, v3, v11 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0924; GFX9-GISEL-NEXT: v_min_u16_sdwa v4, v4, v12 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0925; GFX9-GISEL-NEXT: v_min_u16_sdwa v5, v5, v13 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0926; GFX9-GISEL-NEXT: v_min_u16_sdwa v6, v6, v14 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0927; GFX9-GISEL-NEXT: v_min_u16_sdwa v7, v7, v15 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0928; GFX9-GISEL-NEXT: v_min_u16_e32 v0, v0, v4929; GFX9-GISEL-NEXT: v_min_u16_e32 v1, v1, v5930; GFX9-GISEL-NEXT: v_min_u16_e32 v2, v2, v6931; GFX9-GISEL-NEXT: v_min_u16_e32 v3, v3, v7932; GFX9-GISEL-NEXT: v_min_u16_e32 v0, v0, v2933; GFX9-GISEL-NEXT: v_min_u16_e32 v1, v1, v3934; GFX9-GISEL-NEXT: v_min_u16_e32 v0, v0, v1935; GFX9-GISEL-NEXT: v_bfe_u32 v0, v0, 0, 8936; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]937;938; GFX10-SDAG-LABEL: test_vector_reduce_umin_v16i8:939; GFX10-SDAG: ; %bb.0: ; %entry940; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)941; GFX10-SDAG-NEXT: v_and_b32_e32 v9, 0xff, v9942; GFX10-SDAG-NEXT: v_and_b32_e32 v1, 0xff, v1943; GFX10-SDAG-NEXT: v_and_b32_e32 v13, 0xff, v13944; GFX10-SDAG-NEXT: v_and_b32_e32 v5, 0xff, v5945; GFX10-SDAG-NEXT: v_and_b32_e32 v8, 0xff, v8946; GFX10-SDAG-NEXT: v_and_b32_e32 v0, 0xff, v0947; GFX10-SDAG-NEXT: v_and_b32_e32 v11, 0xff, v11948; GFX10-SDAG-NEXT: v_and_b32_e32 v15, 0xff, v15949; GFX10-SDAG-NEXT: v_and_b32_e32 v7, 0xff, v7950; GFX10-SDAG-NEXT: v_and_b32_e32 v3, 0xff, v3951; GFX10-SDAG-NEXT: v_min_u16 v1, v1, v9952; GFX10-SDAG-NEXT: v_and_b32_e32 v12, 0xff, v12953; GFX10-SDAG-NEXT: v_and_b32_e32 v4, 0xff, v4954; GFX10-SDAG-NEXT: v_and_b32_e32 v10, 0xff, v10955; GFX10-SDAG-NEXT: v_and_b32_e32 v2, 0xff, v2956; GFX10-SDAG-NEXT: v_and_b32_e32 v14, 0xff, v14957; GFX10-SDAG-NEXT: v_and_b32_e32 v6, 0xff, v6958; GFX10-SDAG-NEXT: v_min_u16 v7, v7, v15959; GFX10-SDAG-NEXT: v_min_u16 v3, v3, v11960; GFX10-SDAG-NEXT: v_min_u16 v0, v0, v8961; GFX10-SDAG-NEXT: v_min3_u16 v1, v1, v5, v13962; GFX10-SDAG-NEXT: v_min_u16 v5, v6, v14963; GFX10-SDAG-NEXT: v_min_u16 v2, v2, v10964; GFX10-SDAG-NEXT: v_min3_u16 v0, v0, v4, v12965; GFX10-SDAG-NEXT: v_min3_u16 v1, v1, v3, v7966; GFX10-SDAG-NEXT: v_min3_u16 v0, v0, v2, v5967; GFX10-SDAG-NEXT: v_lshlrev_b16 v1, 8, v1968; GFX10-SDAG-NEXT: v_or_b32_e32 v0, v0, v1969; GFX10-SDAG-NEXT: v_mov_b32_e32 v1, 8970; GFX10-SDAG-NEXT: v_and_b32_e32 v2, 0xff, v0971; GFX10-SDAG-NEXT: v_lshrrev_b32_sdwa v0, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0972; GFX10-SDAG-NEXT: v_min_u16 v0, v2, v0973; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]974;975; GFX10-GISEL-LABEL: test_vector_reduce_umin_v16i8:976; GFX10-GISEL: ; %bb.0: ; %entry977; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)978; GFX10-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v0979; GFX10-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v8980; GFX10-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v1981; GFX10-GISEL-NEXT: v_and_b32_e32 v9, 0xff, v9982; GFX10-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v2983; GFX10-GISEL-NEXT: v_and_b32_e32 v10, 0xff, v10984; GFX10-GISEL-NEXT: v_min_u16 v0, v0, v8985; GFX10-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v3986; GFX10-GISEL-NEXT: v_min_u16 v1, v1, v9987; GFX10-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v11988; GFX10-GISEL-NEXT: v_min_u16 v2, v2, v10989; GFX10-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v4990; GFX10-GISEL-NEXT: v_and_b32_e32 v9, 0xff, v12991; GFX10-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v5992; GFX10-GISEL-NEXT: v_and_b32_e32 v10, 0xff, v13993; GFX10-GISEL-NEXT: v_and_b32_e32 v6, 0xff, v6994; GFX10-GISEL-NEXT: v_and_b32_e32 v11, 0xff, v14995; GFX10-GISEL-NEXT: v_and_b32_e32 v7, 0xff, v7996; GFX10-GISEL-NEXT: v_and_b32_e32 v12, 0xff, v15997; GFX10-GISEL-NEXT: v_min_u16 v3, v3, v8998; GFX10-GISEL-NEXT: v_min_u16 v4, v4, v9999; GFX10-GISEL-NEXT: v_min_u16 v5, v5, v101000; GFX10-GISEL-NEXT: v_min_u16 v6, v6, v111001; GFX10-GISEL-NEXT: v_min_u16 v7, v7, v121002; GFX10-GISEL-NEXT: v_min_u16 v0, v0, v41003; GFX10-GISEL-NEXT: v_min_u16 v1, v1, v51004; GFX10-GISEL-NEXT: v_min_u16 v2, v2, v61005; GFX10-GISEL-NEXT: v_min_u16 v3, v3, v71006; GFX10-GISEL-NEXT: v_min_u16 v0, v0, v21007; GFX10-GISEL-NEXT: v_min_u16 v1, v1, v31008; GFX10-GISEL-NEXT: v_min_u16 v0, v0, v11009; GFX10-GISEL-NEXT: v_bfe_u32 v0, v0, 0, 81010; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]1011;1012; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_umin_v16i8:1013; GFX11-SDAG-TRUE16: ; %bb.0: ; %entry1014; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1015; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v9.l, 0xff, v9.l1016; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v0.h, 0xff, v1.l1017; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v5.h, 0xff, v13.l1018; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v5.l, 0xff, v5.l1019; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v1.l, 0xff, v8.l1020; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v0.l, 0xff, v0.l1021; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v2.h, 0xff, v11.l1022; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v3.h, 0xff, v15.l1023; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v6.h, 0xff, v7.l1024; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v3.l, 0xff, v3.l1025; GFX11-SDAG-TRUE16-NEXT: v_min_u16 v0.h, v0.h, v9.l1026; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v4.h, 0xff, v12.l1027; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v4.l, 0xff, v4.l1028; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v1.h, 0xff, v10.l1029; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v2.l, 0xff, v2.l1030; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v7.l, 0xff, v14.l1031; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v6.l, 0xff, v6.l1032; GFX11-SDAG-TRUE16-NEXT: v_min_u16 v3.h, v6.h, v3.h1033; GFX11-SDAG-TRUE16-NEXT: v_min_u16 v2.h, v3.l, v2.h1034; GFX11-SDAG-TRUE16-NEXT: v_min_u16 v0.l, v0.l, v1.l1035; GFX11-SDAG-TRUE16-NEXT: v_min3_u16 v0.h, v0.h, v5.l, v5.h1036; GFX11-SDAG-TRUE16-NEXT: v_min_u16 v1.l, v6.l, v7.l1037; GFX11-SDAG-TRUE16-NEXT: v_min_u16 v1.h, v2.l, v1.h1038; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1039; GFX11-SDAG-TRUE16-NEXT: v_min3_u16 v0.l, v0.l, v4.l, v4.h1040; GFX11-SDAG-TRUE16-NEXT: v_min3_u16 v0.h, v0.h, v2.h, v3.h1041; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1042; GFX11-SDAG-TRUE16-NEXT: v_min3_u16 v0.l, v0.l, v1.h, v1.l1043; GFX11-SDAG-TRUE16-NEXT: v_lshlrev_b16 v0.h, 8, v0.h1044; GFX11-SDAG-TRUE16-NEXT: v_mov_b16_e32 v1.h, 01045; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1046; GFX11-SDAG-TRUE16-NEXT: v_or_b16 v1.l, v0.l, v0.h1047; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v0.l, 0xff, v1.l1048; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)1049; GFX11-SDAG-TRUE16-NEXT: v_lshrrev_b32_e32 v1, 8, v11050; GFX11-SDAG-TRUE16-NEXT: v_min_u16 v0.l, v0.l, v1.l1051; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1052;1053; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_umin_v16i8:1054; GFX11-SDAG-FAKE16: ; %bb.0: ; %entry1055; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1056; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v9, 0xff, v91057; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xff, v11058; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v13, 0xff, v131059; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v5, 0xff, v51060; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v8, 0xff, v81061; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 0xff, v01062; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v11, 0xff, v111063; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v15, 0xff, v151064; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v7, 0xff, v71065; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v3, 0xff, v31066; GFX11-SDAG-FAKE16-NEXT: v_min_u16 v1, v1, v91067; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v12, 0xff, v121068; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v4, 0xff, v41069; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v10, 0xff, v101070; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v2, 0xff, v21071; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v14, 0xff, v141072; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v6, 0xff, v61073; GFX11-SDAG-FAKE16-NEXT: v_min_u16 v7, v7, v151074; GFX11-SDAG-FAKE16-NEXT: v_min_u16 v3, v3, v111075; GFX11-SDAG-FAKE16-NEXT: v_min_u16 v0, v0, v81076; GFX11-SDAG-FAKE16-NEXT: v_min3_u16 v1, v1, v5, v131077; GFX11-SDAG-FAKE16-NEXT: v_min_u16 v5, v6, v141078; GFX11-SDAG-FAKE16-NEXT: v_min_u16 v2, v2, v101079; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1080; GFX11-SDAG-FAKE16-NEXT: v_min3_u16 v0, v0, v4, v121081; GFX11-SDAG-FAKE16-NEXT: v_min3_u16 v1, v1, v3, v71082; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1083; GFX11-SDAG-FAKE16-NEXT: v_min3_u16 v0, v0, v2, v51084; GFX11-SDAG-FAKE16-NEXT: v_lshlrev_b16 v1, 8, v11085; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1086; GFX11-SDAG-FAKE16-NEXT: v_or_b32_e32 v0, v0, v11087; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xffff, v01088; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 0xff, v01089; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1090; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 8, v11091; GFX11-SDAG-FAKE16-NEXT: v_min_u16 v0, v0, v11092; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1093;1094; GFX11-GISEL-LABEL: test_vector_reduce_umin_v16i8:1095; GFX11-GISEL: ; %bb.0: ; %entry1096; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1097; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v01098; GFX11-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v81099; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v11100; GFX11-GISEL-NEXT: v_and_b32_e32 v9, 0xff, v91101; GFX11-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v21102; GFX11-GISEL-NEXT: v_and_b32_e32 v10, 0xff, v101103; GFX11-GISEL-NEXT: v_min_u16 v0, v0, v81104; GFX11-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v31105; GFX11-GISEL-NEXT: v_min_u16 v1, v1, v91106; GFX11-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v111107; GFX11-GISEL-NEXT: v_min_u16 v2, v2, v101108; GFX11-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v41109; GFX11-GISEL-NEXT: v_and_b32_e32 v9, 0xff, v121110; GFX11-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v51111; GFX11-GISEL-NEXT: v_and_b32_e32 v10, 0xff, v131112; GFX11-GISEL-NEXT: v_and_b32_e32 v6, 0xff, v61113; GFX11-GISEL-NEXT: v_and_b32_e32 v11, 0xff, v141114; GFX11-GISEL-NEXT: v_and_b32_e32 v7, 0xff, v71115; GFX11-GISEL-NEXT: v_and_b32_e32 v12, 0xff, v151116; GFX11-GISEL-NEXT: v_min_u16 v3, v3, v81117; GFX11-GISEL-NEXT: v_min_u16 v4, v4, v91118; GFX11-GISEL-NEXT: v_min_u16 v5, v5, v101119; GFX11-GISEL-NEXT: v_min_u16 v6, v6, v111120; GFX11-GISEL-NEXT: v_min_u16 v7, v7, v121121; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1122; GFX11-GISEL-NEXT: v_min_u16 v0, v0, v41123; GFX11-GISEL-NEXT: v_min_u16 v1, v1, v51124; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1125; GFX11-GISEL-NEXT: v_min_u16 v2, v2, v61126; GFX11-GISEL-NEXT: v_min_u16 v3, v3, v71127; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1128; GFX11-GISEL-NEXT: v_min_u16 v0, v0, v21129; GFX11-GISEL-NEXT: v_min_u16 v1, v1, v31130; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1131; GFX11-GISEL-NEXT: v_min_u16 v0, v0, v11132; GFX11-GISEL-NEXT: v_bfe_u32 v0, v0, 0, 81133; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1134;1135; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_umin_v16i8:1136; GFX12-SDAG-TRUE16: ; %bb.0: ; %entry1137; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01138; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x01139; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x01140; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x01141; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x01142; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v9.l, 0xff, v9.l1143; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v0.h, 0xff, v1.l1144; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v5.h, 0xff, v13.l1145; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v5.l, 0xff, v5.l1146; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v1.l, 0xff, v8.l1147; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v0.l, 0xff, v0.l1148; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v2.h, 0xff, v11.l1149; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v3.h, 0xff, v15.l1150; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v6.h, 0xff, v7.l1151; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v3.l, 0xff, v3.l1152; GFX12-SDAG-TRUE16-NEXT: v_min_u16 v0.h, v0.h, v9.l1153; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v4.h, 0xff, v12.l1154; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v4.l, 0xff, v4.l1155; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v1.h, 0xff, v10.l1156; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v2.l, 0xff, v2.l1157; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v7.l, 0xff, v14.l1158; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v6.l, 0xff, v6.l1159; GFX12-SDAG-TRUE16-NEXT: v_min_u16 v3.h, v6.h, v3.h1160; GFX12-SDAG-TRUE16-NEXT: v_min_u16 v2.h, v3.l, v2.h1161; GFX12-SDAG-TRUE16-NEXT: v_min_u16 v0.l, v0.l, v1.l1162; GFX12-SDAG-TRUE16-NEXT: v_min3_u16 v0.h, v0.h, v5.l, v5.h1163; GFX12-SDAG-TRUE16-NEXT: v_min_u16 v1.l, v6.l, v7.l1164; GFX12-SDAG-TRUE16-NEXT: v_min_u16 v1.h, v2.l, v1.h1165; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1166; GFX12-SDAG-TRUE16-NEXT: v_min3_u16 v0.l, v0.l, v4.l, v4.h1167; GFX12-SDAG-TRUE16-NEXT: v_min3_u16 v0.h, v0.h, v2.h, v3.h1168; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1169; GFX12-SDAG-TRUE16-NEXT: v_min3_u16 v0.l, v0.l, v1.h, v1.l1170; GFX12-SDAG-TRUE16-NEXT: v_lshlrev_b16 v0.h, 8, v0.h1171; GFX12-SDAG-TRUE16-NEXT: v_mov_b16_e32 v1.h, 01172; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1173; GFX12-SDAG-TRUE16-NEXT: v_or_b16 v1.l, v0.l, v0.h1174; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v0.l, 0xff, v1.l1175; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)1176; GFX12-SDAG-TRUE16-NEXT: v_lshrrev_b32_e32 v1, 8, v11177; GFX12-SDAG-TRUE16-NEXT: v_min_u16 v0.l, v0.l, v1.l1178; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1179;1180; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_umin_v16i8:1181; GFX12-SDAG-FAKE16: ; %bb.0: ; %entry1182; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01183; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x01184; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x01185; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x01186; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x01187; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v9, 0xff, v91188; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xff, v11189; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v13, 0xff, v131190; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v5, 0xff, v51191; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v8, 0xff, v81192; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 0xff, v01193; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v11, 0xff, v111194; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v15, 0xff, v151195; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v7, 0xff, v71196; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v3, 0xff, v31197; GFX12-SDAG-FAKE16-NEXT: v_min_u16 v1, v1, v91198; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v12, 0xff, v121199; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v4, 0xff, v41200; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v10, 0xff, v101201; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v2, 0xff, v21202; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v14, 0xff, v141203; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v6, 0xff, v61204; GFX12-SDAG-FAKE16-NEXT: v_min_u16 v7, v7, v151205; GFX12-SDAG-FAKE16-NEXT: v_min_u16 v3, v3, v111206; GFX12-SDAG-FAKE16-NEXT: v_min_u16 v0, v0, v81207; GFX12-SDAG-FAKE16-NEXT: v_min3_u16 v1, v1, v5, v131208; GFX12-SDAG-FAKE16-NEXT: v_min_u16 v5, v6, v141209; GFX12-SDAG-FAKE16-NEXT: v_min_u16 v2, v2, v101210; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1211; GFX12-SDAG-FAKE16-NEXT: v_min3_u16 v0, v0, v4, v121212; GFX12-SDAG-FAKE16-NEXT: v_min3_u16 v1, v1, v3, v71213; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1214; GFX12-SDAG-FAKE16-NEXT: v_min3_u16 v0, v0, v2, v51215; GFX12-SDAG-FAKE16-NEXT: v_lshlrev_b16 v1, 8, v11216; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1217; GFX12-SDAG-FAKE16-NEXT: v_or_b32_e32 v0, v0, v11218; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xffff, v01219; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 0xff, v01220; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1221; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 8, v11222; GFX12-SDAG-FAKE16-NEXT: v_min_u16 v0, v0, v11223; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1224;1225; GFX12-GISEL-LABEL: test_vector_reduce_umin_v16i8:1226; GFX12-GISEL: ; %bb.0: ; %entry1227; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01228; GFX12-GISEL-NEXT: s_wait_expcnt 0x01229; GFX12-GISEL-NEXT: s_wait_samplecnt 0x01230; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x01231; GFX12-GISEL-NEXT: s_wait_kmcnt 0x01232; GFX12-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v01233; GFX12-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v81234; GFX12-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v11235; GFX12-GISEL-NEXT: v_and_b32_e32 v9, 0xff, v91236; GFX12-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v21237; GFX12-GISEL-NEXT: v_and_b32_e32 v10, 0xff, v101238; GFX12-GISEL-NEXT: v_min_u16 v0, v0, v81239; GFX12-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v31240; GFX12-GISEL-NEXT: v_min_u16 v1, v1, v91241; GFX12-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v111242; GFX12-GISEL-NEXT: v_min_u16 v2, v2, v101243; GFX12-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v41244; GFX12-GISEL-NEXT: v_and_b32_e32 v9, 0xff, v121245; GFX12-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v51246; GFX12-GISEL-NEXT: v_and_b32_e32 v10, 0xff, v131247; GFX12-GISEL-NEXT: v_and_b32_e32 v6, 0xff, v61248; GFX12-GISEL-NEXT: v_and_b32_e32 v11, 0xff, v141249; GFX12-GISEL-NEXT: v_and_b32_e32 v7, 0xff, v71250; GFX12-GISEL-NEXT: v_and_b32_e32 v12, 0xff, v151251; GFX12-GISEL-NEXT: v_min_u16 v3, v3, v81252; GFX12-GISEL-NEXT: v_min_u16 v4, v4, v91253; GFX12-GISEL-NEXT: v_min_u16 v5, v5, v101254; GFX12-GISEL-NEXT: v_min_u16 v6, v6, v111255; GFX12-GISEL-NEXT: v_min_u16 v7, v7, v121256; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1257; GFX12-GISEL-NEXT: v_min_u16 v0, v0, v41258; GFX12-GISEL-NEXT: v_min_u16 v1, v1, v51259; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1260; GFX12-GISEL-NEXT: v_min_u16 v2, v2, v61261; GFX12-GISEL-NEXT: v_min_u16 v3, v3, v71262; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1263; GFX12-GISEL-NEXT: v_min_u16 v0, v0, v21264; GFX12-GISEL-NEXT: v_min_u16 v1, v1, v31265; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1266; GFX12-GISEL-NEXT: v_min_u16 v0, v0, v11267; GFX12-GISEL-NEXT: v_bfe_u32 v0, v0, 0, 81268; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]1269entry:1270 %res = call i8 @llvm.vector.reduce.umin.v16i8(<16 x i8> %v)1271 ret i8 %res1272}1273 1274; FIXME: With -new-reg-bank-select, v_alignbit_b32 is regression. Need pattern to look through COPY.1275define i16 @test_vector_reduce_umin_v2i16(<2 x i16> %v) {1276; GFX7-SDAG-LABEL: test_vector_reduce_umin_v2i16:1277; GFX7-SDAG: ; %bb.0: ; %entry1278; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1279; GFX7-SDAG-NEXT: v_and_b32_e32 v1, 0xffff, v11280; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 0xffff, v01281; GFX7-SDAG-NEXT: v_min_u32_e32 v0, v0, v11282; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]1283;1284; GFX7-GISEL-LABEL: test_vector_reduce_umin_v2i16:1285; GFX7-GISEL: ; %bb.0: ; %entry1286; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1287; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0xffff, v01288; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xffff, v11289; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v11290; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]1291;1292; GFX8-SDAG-LABEL: test_vector_reduce_umin_v2i16:1293; GFX8-SDAG: ; %bb.0: ; %entry1294; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1295; GFX8-SDAG-NEXT: v_min_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11296; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]1297;1298; GFX8-GISEL-LABEL: test_vector_reduce_umin_v2i16:1299; GFX8-GISEL: ; %bb.0: ; %entry1300; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1301; GFX8-GISEL-NEXT: v_mov_b32_e32 v2, s41302; GFX8-GISEL-NEXT: v_min_u16_sdwa v1, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11303; GFX8-GISEL-NEXT: v_min_u16_sdwa v0, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD1304; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v1, v01305; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]1306;1307; GFX9-SDAG-LABEL: test_vector_reduce_umin_v2i16:1308; GFX9-SDAG: ; %bb.0: ; %entry1309; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1310; GFX9-SDAG-NEXT: v_min_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11311; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]1312;1313; GFX9-GISEL-LABEL: test_vector_reduce_umin_v2i16:1314; GFX9-GISEL: ; %bb.0: ; %entry1315; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1316; GFX9-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 161317; GFX9-GISEL-NEXT: v_pk_min_u16 v0, v0, v11318; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]1319;1320; GFX10-SDAG-LABEL: test_vector_reduce_umin_v2i16:1321; GFX10-SDAG: ; %bb.0: ; %entry1322; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1323; GFX10-SDAG-NEXT: v_lshrrev_b32_e32 v1, 16, v01324; GFX10-SDAG-NEXT: v_min_u16 v0, v0, v11325; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]1326;1327; GFX10-GISEL-LABEL: test_vector_reduce_umin_v2i16:1328; GFX10-GISEL: ; %bb.0: ; %entry1329; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1330; GFX10-GISEL-NEXT: v_alignbit_b32 v1, s4, v0, 161331; GFX10-GISEL-NEXT: v_pk_min_u16 v0, v0, v11332; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]1333;1334; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_umin_v2i16:1335; GFX11-SDAG-TRUE16: ; %bb.0: ; %entry1336; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1337; GFX11-SDAG-TRUE16-NEXT: v_min_u16 v0.l, v0.l, v0.h1338; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1339;1340; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_umin_v2i16:1341; GFX11-SDAG-FAKE16: ; %bb.0: ; %entry1342; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1343; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v01344; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1345; GFX11-SDAG-FAKE16-NEXT: v_min_u16 v0, v0, v11346; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1347;1348; GFX11-GISEL-LABEL: test_vector_reduce_umin_v2i16:1349; GFX11-GISEL: ; %bb.0: ; %entry1350; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1351; GFX11-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 161352; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)1353; GFX11-GISEL-NEXT: v_pk_min_u16 v0, v0, v11354; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1355;1356; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_umin_v2i16:1357; GFX12-SDAG-TRUE16: ; %bb.0: ; %entry1358; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01359; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x01360; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x01361; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x01362; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x01363; GFX12-SDAG-TRUE16-NEXT: v_min_u16 v0.l, v0.l, v0.h1364; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1365;1366; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_umin_v2i16:1367; GFX12-SDAG-FAKE16: ; %bb.0: ; %entry1368; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01369; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x01370; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x01371; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x01372; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x01373; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v01374; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1375; GFX12-SDAG-FAKE16-NEXT: v_min_u16 v0, v0, v11376; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1377;1378; GFX12-GISEL-LABEL: test_vector_reduce_umin_v2i16:1379; GFX12-GISEL: ; %bb.0: ; %entry1380; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01381; GFX12-GISEL-NEXT: s_wait_expcnt 0x01382; GFX12-GISEL-NEXT: s_wait_samplecnt 0x01383; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x01384; GFX12-GISEL-NEXT: s_wait_kmcnt 0x01385; GFX12-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 161386; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)1387; GFX12-GISEL-NEXT: v_pk_min_u16 v0, v0, v11388; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]1389entry:1390 %res = call i16 @llvm.vector.reduce.umin.v2i16(<2 x i16> %v)1391 ret i16 %res1392}1393 1394define i16 @test_vector_reduce_umin_v3i16(<3 x i16> %v) {1395; GFX7-SDAG-LABEL: test_vector_reduce_umin_v3i16:1396; GFX7-SDAG: ; %bb.0: ; %entry1397; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1398; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 0xffff, v01399; GFX7-SDAG-NEXT: v_and_b32_e32 v2, 0xffff, v21400; GFX7-SDAG-NEXT: s_mov_b32 s4, 0xffff1401; GFX7-SDAG-NEXT: v_min_u32_e32 v0, v0, v21402; GFX7-SDAG-NEXT: v_and_b32_e32 v1, 0xffff, v11403; GFX7-SDAG-NEXT: v_min3_u32 v0, v0, v1, s41404; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]1405;1406; GFX7-GISEL-LABEL: test_vector_reduce_umin_v3i16:1407; GFX7-GISEL: ; %bb.0: ; %entry1408; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1409; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0xffff, v01410; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xffff, v11411; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v11412; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xffff, v21413; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v11414; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]1415;1416; GFX8-LABEL: test_vector_reduce_umin_v3i16:1417; GFX8: ; %bb.0: ; %entry1418; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1419; GFX8-NEXT: v_min_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11420; GFX8-NEXT: v_min_u16_e32 v0, v0, v11421; GFX8-NEXT: s_setpc_b64 s[30:31]1422;1423; GFX9-SDAG-LABEL: test_vector_reduce_umin_v3i16:1424; GFX9-SDAG: ; %bb.0: ; %entry1425; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1426; GFX9-SDAG-NEXT: v_mov_b32_e32 v2, 0x50401001427; GFX9-SDAG-NEXT: v_perm_b32 v1, -1, v1, v21428; GFX9-SDAG-NEXT: v_pk_min_u16 v0, v0, v11429; GFX9-SDAG-NEXT: s_nop 01430; GFX9-SDAG-NEXT: v_min_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11431; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]1432;1433; GFX9-GISEL-LABEL: test_vector_reduce_umin_v3i16:1434; GFX9-GISEL: ; %bb.0: ; %entry1435; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1436; GFX9-GISEL-NEXT: v_min_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11437; GFX9-GISEL-NEXT: v_min_u16_e32 v0, v0, v11438; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]1439;1440; GFX10-SDAG-LABEL: test_vector_reduce_umin_v3i16:1441; GFX10-SDAG: ; %bb.0: ; %entry1442; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1443; GFX10-SDAG-NEXT: v_perm_b32 v1, -1, v1, 0x50401001444; GFX10-SDAG-NEXT: v_pk_min_u16 v0, v0, v11445; GFX10-SDAG-NEXT: v_lshrrev_b32_e32 v1, 16, v01446; GFX10-SDAG-NEXT: v_min_u16 v0, v0, v11447; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]1448;1449; GFX10-GISEL-LABEL: test_vector_reduce_umin_v3i16:1450; GFX10-GISEL: ; %bb.0: ; %entry1451; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1452; GFX10-GISEL-NEXT: v_lshrrev_b32_e32 v2, 16, v01453; GFX10-GISEL-NEXT: v_min_u16 v0, v0, v21454; GFX10-GISEL-NEXT: v_min_u16 v0, v0, v11455; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]1456;1457; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_umin_v3i16:1458; GFX11-SDAG-TRUE16: ; %bb.0: ; %entry1459; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1460; GFX11-SDAG-TRUE16-NEXT: v_mov_b16_e32 v1.h, -11461; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1462; GFX11-SDAG-TRUE16-NEXT: v_pk_min_u16 v0, v0, v11463; GFX11-SDAG-TRUE16-NEXT: v_min_u16 v0.l, v0.l, v0.h1464; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1465;1466; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_umin_v3i16:1467; GFX11-SDAG-FAKE16: ; %bb.0: ; %entry1468; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1469; GFX11-SDAG-FAKE16-NEXT: v_perm_b32 v1, -1, v1, 0x50401001470; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1471; GFX11-SDAG-FAKE16-NEXT: v_pk_min_u16 v0, v0, v11472; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v01473; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1474; GFX11-SDAG-FAKE16-NEXT: v_min_u16 v0, v0, v11475; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1476;1477; GFX11-GISEL-LABEL: test_vector_reduce_umin_v3i16:1478; GFX11-GISEL: ; %bb.0: ; %entry1479; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1480; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v2, 16, v01481; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1482; GFX11-GISEL-NEXT: v_min_u16 v0, v0, v21483; GFX11-GISEL-NEXT: v_min_u16 v0, v0, v11484; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1485;1486; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_umin_v3i16:1487; GFX12-SDAG-TRUE16: ; %bb.0: ; %entry1488; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01489; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x01490; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x01491; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x01492; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x01493; GFX12-SDAG-TRUE16-NEXT: v_mov_b16_e32 v1.h, -11494; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1495; GFX12-SDAG-TRUE16-NEXT: v_pk_min_u16 v0, v0, v11496; GFX12-SDAG-TRUE16-NEXT: v_min_u16 v0.l, v0.l, v0.h1497; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1498;1499; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_umin_v3i16:1500; GFX12-SDAG-FAKE16: ; %bb.0: ; %entry1501; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01502; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x01503; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x01504; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x01505; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x01506; GFX12-SDAG-FAKE16-NEXT: v_perm_b32 v1, -1, v1, 0x50401001507; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1508; GFX12-SDAG-FAKE16-NEXT: v_pk_min_u16 v0, v0, v11509; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v01510; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1511; GFX12-SDAG-FAKE16-NEXT: v_min_u16 v0, v0, v11512; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1513;1514; GFX12-GISEL-LABEL: test_vector_reduce_umin_v3i16:1515; GFX12-GISEL: ; %bb.0: ; %entry1516; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01517; GFX12-GISEL-NEXT: s_wait_expcnt 0x01518; GFX12-GISEL-NEXT: s_wait_samplecnt 0x01519; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x01520; GFX12-GISEL-NEXT: s_wait_kmcnt 0x01521; GFX12-GISEL-NEXT: v_lshrrev_b32_e32 v2, 16, v01522; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1523; GFX12-GISEL-NEXT: v_min_u16 v0, v0, v21524; GFX12-GISEL-NEXT: v_min_u16 v0, v0, v11525; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]1526entry:1527 %res = call i16 @llvm.vector.reduce.umin.v3i16(<3 x i16> %v)1528 ret i16 %res1529}1530 1531; FIXME: With -new-reg-bank-select, v_alignbit_b32 is regression. Need pattern to look through COPY.1532define i16 @test_vector_reduce_umin_v4i16(<4 x i16> %v) {1533; GFX7-SDAG-LABEL: test_vector_reduce_umin_v4i16:1534; GFX7-SDAG: ; %bb.0: ; %entry1535; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1536; GFX7-SDAG-NEXT: v_and_b32_e32 v3, 0xffff, v31537; GFX7-SDAG-NEXT: v_and_b32_e32 v1, 0xffff, v11538; GFX7-SDAG-NEXT: v_and_b32_e32 v2, 0xffff, v21539; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 0xffff, v01540; GFX7-SDAG-NEXT: v_min_u32_e32 v1, v1, v31541; GFX7-SDAG-NEXT: v_min3_u32 v0, v0, v2, v11542; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]1543;1544; GFX7-GISEL-LABEL: test_vector_reduce_umin_v4i16:1545; GFX7-GISEL: ; %bb.0: ; %entry1546; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1547; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0xffff, v01548; GFX7-GISEL-NEXT: v_and_b32_e32 v2, 0xffff, v21549; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v21550; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xffff, v11551; GFX7-GISEL-NEXT: v_and_b32_e32 v2, 0xffff, v31552; GFX7-GISEL-NEXT: v_min_u32_e32 v1, v1, v21553; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v11554; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]1555;1556; GFX8-SDAG-LABEL: test_vector_reduce_umin_v4i16:1557; GFX8-SDAG: ; %bb.0: ; %entry1558; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1559; GFX8-SDAG-NEXT: v_min_u16_sdwa v2, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11560; GFX8-SDAG-NEXT: v_min_u16_e32 v0, v0, v11561; GFX8-SDAG-NEXT: v_min_u16_e32 v0, v0, v21562; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]1563;1564; GFX8-GISEL-LABEL: test_vector_reduce_umin_v4i16:1565; GFX8-GISEL: ; %bb.0: ; %entry1566; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1567; GFX8-GISEL-NEXT: v_min_u16_e32 v2, v0, v11568; GFX8-GISEL-NEXT: v_min_u16_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11569; GFX8-GISEL-NEXT: v_min_u16_e32 v1, v2, v01570; GFX8-GISEL-NEXT: v_mov_b32_e32 v2, s41571; GFX8-GISEL-NEXT: v_min_u16_sdwa v0, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD1572; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v1, v01573; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]1574;1575; GFX9-SDAG-LABEL: test_vector_reduce_umin_v4i16:1576; GFX9-SDAG: ; %bb.0: ; %entry1577; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1578; GFX9-SDAG-NEXT: v_pk_min_u16 v0, v0, v11579; GFX9-SDAG-NEXT: s_nop 01580; GFX9-SDAG-NEXT: v_min_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11581; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]1582;1583; GFX9-GISEL-LABEL: test_vector_reduce_umin_v4i16:1584; GFX9-GISEL: ; %bb.0: ; %entry1585; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1586; GFX9-GISEL-NEXT: v_pk_min_u16 v0, v0, v11587; GFX9-GISEL-NEXT: s_nop 01588; GFX9-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 161589; GFX9-GISEL-NEXT: v_pk_min_u16 v0, v0, v11590; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]1591;1592; GFX10-SDAG-LABEL: test_vector_reduce_umin_v4i16:1593; GFX10-SDAG: ; %bb.0: ; %entry1594; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1595; GFX10-SDAG-NEXT: v_pk_min_u16 v0, v0, v11596; GFX10-SDAG-NEXT: v_lshrrev_b32_e32 v1, 16, v01597; GFX10-SDAG-NEXT: v_min_u16 v0, v0, v11598; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]1599;1600; GFX10-GISEL-LABEL: test_vector_reduce_umin_v4i16:1601; GFX10-GISEL: ; %bb.0: ; %entry1602; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1603; GFX10-GISEL-NEXT: v_pk_min_u16 v0, v0, v11604; GFX10-GISEL-NEXT: v_alignbit_b32 v1, s4, v0, 161605; GFX10-GISEL-NEXT: v_pk_min_u16 v0, v0, v11606; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]1607;1608; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_umin_v4i16:1609; GFX11-SDAG-TRUE16: ; %bb.0: ; %entry1610; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1611; GFX11-SDAG-TRUE16-NEXT: v_pk_min_u16 v0, v0, v11612; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1613; GFX11-SDAG-TRUE16-NEXT: v_min_u16 v0.l, v0.l, v0.h1614; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1615;1616; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_umin_v4i16:1617; GFX11-SDAG-FAKE16: ; %bb.0: ; %entry1618; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1619; GFX11-SDAG-FAKE16-NEXT: v_pk_min_u16 v0, v0, v11620; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1621; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v01622; GFX11-SDAG-FAKE16-NEXT: v_min_u16 v0, v0, v11623; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1624;1625; GFX11-GISEL-LABEL: test_vector_reduce_umin_v4i16:1626; GFX11-GISEL: ; %bb.0: ; %entry1627; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1628; GFX11-GISEL-NEXT: v_pk_min_u16 v0, v0, v11629; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1630; GFX11-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 161631; GFX11-GISEL-NEXT: v_pk_min_u16 v0, v0, v11632; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1633;1634; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_umin_v4i16:1635; GFX12-SDAG-TRUE16: ; %bb.0: ; %entry1636; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01637; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x01638; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x01639; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x01640; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x01641; GFX12-SDAG-TRUE16-NEXT: v_pk_min_u16 v0, v0, v11642; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1643; GFX12-SDAG-TRUE16-NEXT: v_min_u16 v0.l, v0.l, v0.h1644; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1645;1646; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_umin_v4i16:1647; GFX12-SDAG-FAKE16: ; %bb.0: ; %entry1648; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01649; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x01650; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x01651; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x01652; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x01653; GFX12-SDAG-FAKE16-NEXT: v_pk_min_u16 v0, v0, v11654; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1655; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v01656; GFX12-SDAG-FAKE16-NEXT: v_min_u16 v0, v0, v11657; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1658;1659; GFX12-GISEL-LABEL: test_vector_reduce_umin_v4i16:1660; GFX12-GISEL: ; %bb.0: ; %entry1661; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01662; GFX12-GISEL-NEXT: s_wait_expcnt 0x01663; GFX12-GISEL-NEXT: s_wait_samplecnt 0x01664; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x01665; GFX12-GISEL-NEXT: s_wait_kmcnt 0x01666; GFX12-GISEL-NEXT: v_pk_min_u16 v0, v0, v11667; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1668; GFX12-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 161669; GFX12-GISEL-NEXT: v_pk_min_u16 v0, v0, v11670; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]1671entry:1672 %res = call i16 @llvm.vector.reduce.umin.v4i16(<4 x i16> %v)1673 ret i16 %res1674}1675 1676; FIXME: With -new-reg-bank-select, v_alignbit_b32 is regression. Need pattern to look through COPY.1677define i16 @test_vector_reduce_umin_v8i16(<8 x i16> %v) {1678; GFX7-SDAG-LABEL: test_vector_reduce_umin_v8i16:1679; GFX7-SDAG: ; %bb.0: ; %entry1680; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1681; GFX7-SDAG-NEXT: v_and_b32_e32 v5, 0xffff, v51682; GFX7-SDAG-NEXT: v_and_b32_e32 v1, 0xffff, v11683; GFX7-SDAG-NEXT: v_and_b32_e32 v4, 0xffff, v41684; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 0xffff, v01685; GFX7-SDAG-NEXT: v_and_b32_e32 v6, 0xffff, v61686; GFX7-SDAG-NEXT: v_and_b32_e32 v2, 0xffff, v21687; GFX7-SDAG-NEXT: v_and_b32_e32 v7, 0xffff, v71688; GFX7-SDAG-NEXT: v_and_b32_e32 v3, 0xffff, v31689; GFX7-SDAG-NEXT: v_min_u32_e32 v0, v0, v41690; GFX7-SDAG-NEXT: v_min_u32_e32 v1, v1, v51691; GFX7-SDAG-NEXT: v_min3_u32 v1, v1, v3, v71692; GFX7-SDAG-NEXT: v_min3_u32 v0, v0, v2, v61693; GFX7-SDAG-NEXT: v_min_u32_e32 v0, v0, v11694; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]1695;1696; GFX7-GISEL-LABEL: test_vector_reduce_umin_v8i16:1697; GFX7-GISEL: ; %bb.0: ; %entry1698; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1699; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0xffff, v01700; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xffff, v41701; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v41702; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xffff, v11703; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xffff, v51704; GFX7-GISEL-NEXT: v_min_u32_e32 v1, v1, v41705; GFX7-GISEL-NEXT: v_and_b32_e32 v2, 0xffff, v21706; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xffff, v61707; GFX7-GISEL-NEXT: v_min_u32_e32 v2, v2, v41708; GFX7-GISEL-NEXT: v_and_b32_e32 v3, 0xffff, v31709; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xffff, v71710; GFX7-GISEL-NEXT: v_min_u32_e32 v3, v3, v41711; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v21712; GFX7-GISEL-NEXT: v_min_u32_e32 v1, v1, v31713; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v11714; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]1715;1716; GFX8-SDAG-LABEL: test_vector_reduce_umin_v8i16:1717; GFX8-SDAG: ; %bb.0: ; %entry1718; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1719; GFX8-SDAG-NEXT: v_min_u16_sdwa v4, v1, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11720; GFX8-SDAG-NEXT: v_min_u16_sdwa v5, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11721; GFX8-SDAG-NEXT: v_min_u16_e32 v1, v1, v31722; GFX8-SDAG-NEXT: v_min_u16_e32 v0, v0, v21723; GFX8-SDAG-NEXT: v_min_u16_e32 v2, v5, v41724; GFX8-SDAG-NEXT: v_min_u16_e32 v0, v0, v11725; GFX8-SDAG-NEXT: v_min_u16_e32 v0, v0, v21726; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]1727;1728; GFX8-GISEL-LABEL: test_vector_reduce_umin_v8i16:1729; GFX8-GISEL: ; %bb.0: ; %entry1730; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1731; GFX8-GISEL-NEXT: v_min_u16_e32 v4, v0, v21732; GFX8-GISEL-NEXT: v_min_u16_sdwa v0, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11733; GFX8-GISEL-NEXT: v_min_u16_e32 v2, v1, v31734; GFX8-GISEL-NEXT: v_min_u16_sdwa v1, v1, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11735; GFX8-GISEL-NEXT: v_min_u16_e32 v2, v4, v21736; GFX8-GISEL-NEXT: v_min_u16_e32 v0, v0, v11737; GFX8-GISEL-NEXT: v_min_u16_e32 v1, v2, v01738; GFX8-GISEL-NEXT: v_mov_b32_e32 v2, s41739; GFX8-GISEL-NEXT: v_min_u16_sdwa v0, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD1740; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v1, v01741; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]1742;1743; GFX9-SDAG-LABEL: test_vector_reduce_umin_v8i16:1744; GFX9-SDAG: ; %bb.0: ; %entry1745; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1746; GFX9-SDAG-NEXT: v_pk_min_u16 v1, v1, v31747; GFX9-SDAG-NEXT: v_pk_min_u16 v0, v0, v21748; GFX9-SDAG-NEXT: s_nop 01749; GFX9-SDAG-NEXT: v_pk_min_u16 v0, v0, v11750; GFX9-SDAG-NEXT: s_nop 01751; GFX9-SDAG-NEXT: v_min_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11752; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]1753;1754; GFX9-GISEL-LABEL: test_vector_reduce_umin_v8i16:1755; GFX9-GISEL: ; %bb.0: ; %entry1756; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1757; GFX9-GISEL-NEXT: v_pk_min_u16 v0, v0, v21758; GFX9-GISEL-NEXT: v_pk_min_u16 v1, v1, v31759; GFX9-GISEL-NEXT: s_nop 01760; GFX9-GISEL-NEXT: v_pk_min_u16 v0, v0, v11761; GFX9-GISEL-NEXT: s_nop 01762; GFX9-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 161763; GFX9-GISEL-NEXT: v_pk_min_u16 v0, v0, v11764; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]1765;1766; GFX10-SDAG-LABEL: test_vector_reduce_umin_v8i16:1767; GFX10-SDAG: ; %bb.0: ; %entry1768; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1769; GFX10-SDAG-NEXT: v_pk_min_u16 v1, v1, v31770; GFX10-SDAG-NEXT: v_pk_min_u16 v0, v0, v21771; GFX10-SDAG-NEXT: v_pk_min_u16 v0, v0, v11772; GFX10-SDAG-NEXT: v_lshrrev_b32_e32 v1, 16, v01773; GFX10-SDAG-NEXT: v_min_u16 v0, v0, v11774; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]1775;1776; GFX10-GISEL-LABEL: test_vector_reduce_umin_v8i16:1777; GFX10-GISEL: ; %bb.0: ; %entry1778; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1779; GFX10-GISEL-NEXT: v_pk_min_u16 v0, v0, v21780; GFX10-GISEL-NEXT: v_pk_min_u16 v1, v1, v31781; GFX10-GISEL-NEXT: v_pk_min_u16 v0, v0, v11782; GFX10-GISEL-NEXT: v_alignbit_b32 v1, s4, v0, 161783; GFX10-GISEL-NEXT: v_pk_min_u16 v0, v0, v11784; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]1785;1786; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_umin_v8i16:1787; GFX11-SDAG-TRUE16: ; %bb.0: ; %entry1788; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1789; GFX11-SDAG-TRUE16-NEXT: v_pk_min_u16 v1, v1, v31790; GFX11-SDAG-TRUE16-NEXT: v_pk_min_u16 v0, v0, v21791; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1792; GFX11-SDAG-TRUE16-NEXT: v_pk_min_u16 v0, v0, v11793; GFX11-SDAG-TRUE16-NEXT: v_min_u16 v0.l, v0.l, v0.h1794; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1795;1796; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_umin_v8i16:1797; GFX11-SDAG-FAKE16: ; %bb.0: ; %entry1798; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1799; GFX11-SDAG-FAKE16-NEXT: v_pk_min_u16 v1, v1, v31800; GFX11-SDAG-FAKE16-NEXT: v_pk_min_u16 v0, v0, v21801; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1802; GFX11-SDAG-FAKE16-NEXT: v_pk_min_u16 v0, v0, v11803; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v01804; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1805; GFX11-SDAG-FAKE16-NEXT: v_min_u16 v0, v0, v11806; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1807;1808; GFX11-GISEL-LABEL: test_vector_reduce_umin_v8i16:1809; GFX11-GISEL: ; %bb.0: ; %entry1810; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1811; GFX11-GISEL-NEXT: v_pk_min_u16 v0, v0, v21812; GFX11-GISEL-NEXT: v_pk_min_u16 v1, v1, v31813; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1814; GFX11-GISEL-NEXT: v_pk_min_u16 v0, v0, v11815; GFX11-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 161816; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)1817; GFX11-GISEL-NEXT: v_pk_min_u16 v0, v0, v11818; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1819;1820; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_umin_v8i16:1821; GFX12-SDAG-TRUE16: ; %bb.0: ; %entry1822; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01823; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x01824; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x01825; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x01826; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x01827; GFX12-SDAG-TRUE16-NEXT: v_pk_min_u16 v1, v1, v31828; GFX12-SDAG-TRUE16-NEXT: v_pk_min_u16 v0, v0, v21829; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1830; GFX12-SDAG-TRUE16-NEXT: v_pk_min_u16 v0, v0, v11831; GFX12-SDAG-TRUE16-NEXT: v_min_u16 v0.l, v0.l, v0.h1832; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1833;1834; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_umin_v8i16:1835; GFX12-SDAG-FAKE16: ; %bb.0: ; %entry1836; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01837; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x01838; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x01839; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x01840; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x01841; GFX12-SDAG-FAKE16-NEXT: v_pk_min_u16 v1, v1, v31842; GFX12-SDAG-FAKE16-NEXT: v_pk_min_u16 v0, v0, v21843; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1844; GFX12-SDAG-FAKE16-NEXT: v_pk_min_u16 v0, v0, v11845; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v01846; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1847; GFX12-SDAG-FAKE16-NEXT: v_min_u16 v0, v0, v11848; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1849;1850; GFX12-GISEL-LABEL: test_vector_reduce_umin_v8i16:1851; GFX12-GISEL: ; %bb.0: ; %entry1852; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01853; GFX12-GISEL-NEXT: s_wait_expcnt 0x01854; GFX12-GISEL-NEXT: s_wait_samplecnt 0x01855; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x01856; GFX12-GISEL-NEXT: s_wait_kmcnt 0x01857; GFX12-GISEL-NEXT: v_pk_min_u16 v0, v0, v21858; GFX12-GISEL-NEXT: v_pk_min_u16 v1, v1, v31859; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1860; GFX12-GISEL-NEXT: v_pk_min_u16 v0, v0, v11861; GFX12-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 161862; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)1863; GFX12-GISEL-NEXT: v_pk_min_u16 v0, v0, v11864; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]1865entry:1866 %res = call i16 @llvm.vector.reduce.umin.v8i16(<8 x i16> %v)1867 ret i16 %res1868}1869 1870; FIXME: With -new-reg-bank-select, v_alignbit_b32 is regression. Need pattern to look through COPY.1871define i16 @test_vector_reduce_umin_v16i16(<16 x i16> %v) {1872; GFX7-SDAG-LABEL: test_vector_reduce_umin_v16i16:1873; GFX7-SDAG: ; %bb.0: ; %entry1874; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1875; GFX7-SDAG-NEXT: v_and_b32_e32 v8, 0xffff, v81876; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 0xffff, v01877; GFX7-SDAG-NEXT: v_and_b32_e32 v9, 0xffff, v91878; GFX7-SDAG-NEXT: v_and_b32_e32 v1, 0xffff, v11879; GFX7-SDAG-NEXT: v_and_b32_e32 v13, 0xffff, v131880; GFX7-SDAG-NEXT: v_and_b32_e32 v5, 0xffff, v51881; GFX7-SDAG-NEXT: v_and_b32_e32 v12, 0xffff, v121882; GFX7-SDAG-NEXT: v_and_b32_e32 v4, 0xffff, v41883; GFX7-SDAG-NEXT: v_and_b32_e32 v11, 0xffff, v111884; GFX7-SDAG-NEXT: v_and_b32_e32 v3, 0xffff, v31885; GFX7-SDAG-NEXT: v_and_b32_e32 v15, 0xffff, v151886; GFX7-SDAG-NEXT: v_and_b32_e32 v7, 0xffff, v71887; GFX7-SDAG-NEXT: v_and_b32_e32 v10, 0xffff, v101888; GFX7-SDAG-NEXT: v_and_b32_e32 v2, 0xffff, v21889; GFX7-SDAG-NEXT: v_and_b32_e32 v14, 0xffff, v141890; GFX7-SDAG-NEXT: v_and_b32_e32 v6, 0xffff, v61891; GFX7-SDAG-NEXT: v_min_u32_e32 v1, v1, v91892; GFX7-SDAG-NEXT: v_min_u32_e32 v0, v0, v81893; GFX7-SDAG-NEXT: v_min_u32_e32 v6, v6, v141894; GFX7-SDAG-NEXT: v_min_u32_e32 v2, v2, v101895; GFX7-SDAG-NEXT: v_min_u32_e32 v7, v7, v151896; GFX7-SDAG-NEXT: v_min_u32_e32 v3, v3, v111897; GFX7-SDAG-NEXT: v_min3_u32 v0, v0, v4, v121898; GFX7-SDAG-NEXT: v_min3_u32 v1, v1, v5, v131899; GFX7-SDAG-NEXT: v_min3_u32 v1, v1, v3, v71900; GFX7-SDAG-NEXT: v_min3_u32 v0, v0, v2, v61901; GFX7-SDAG-NEXT: v_min_u32_e32 v0, v0, v11902; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]1903;1904; GFX7-GISEL-LABEL: test_vector_reduce_umin_v16i16:1905; GFX7-GISEL: ; %bb.0: ; %entry1906; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1907; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0xffff, v01908; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xffff, v81909; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v81910; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xffff, v11911; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xffff, v91912; GFX7-GISEL-NEXT: v_min_u32_e32 v1, v1, v81913; GFX7-GISEL-NEXT: v_and_b32_e32 v2, 0xffff, v21914; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xffff, v101915; GFX7-GISEL-NEXT: v_min_u32_e32 v2, v2, v81916; GFX7-GISEL-NEXT: v_and_b32_e32 v3, 0xffff, v31917; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xffff, v111918; GFX7-GISEL-NEXT: v_min_u32_e32 v3, v3, v81919; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xffff, v41920; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xffff, v121921; GFX7-GISEL-NEXT: v_min_u32_e32 v4, v4, v81922; GFX7-GISEL-NEXT: v_and_b32_e32 v5, 0xffff, v51923; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xffff, v131924; GFX7-GISEL-NEXT: v_min_u32_e32 v5, v5, v81925; GFX7-GISEL-NEXT: v_and_b32_e32 v6, 0xffff, v61926; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xffff, v141927; GFX7-GISEL-NEXT: v_min_u32_e32 v6, v6, v81928; GFX7-GISEL-NEXT: v_and_b32_e32 v7, 0xffff, v71929; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xffff, v151930; GFX7-GISEL-NEXT: v_min_u32_e32 v7, v7, v81931; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v41932; GFX7-GISEL-NEXT: v_min_u32_e32 v1, v1, v51933; GFX7-GISEL-NEXT: v_min_u32_e32 v2, v2, v61934; GFX7-GISEL-NEXT: v_min_u32_e32 v3, v3, v71935; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v21936; GFX7-GISEL-NEXT: v_min_u32_e32 v1, v1, v31937; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v11938; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]1939;1940; GFX8-SDAG-LABEL: test_vector_reduce_umin_v16i16:1941; GFX8-SDAG: ; %bb.0: ; %entry1942; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1943; GFX8-SDAG-NEXT: v_min_u16_sdwa v8, v2, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11944; GFX8-SDAG-NEXT: v_min_u16_sdwa v9, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11945; GFX8-SDAG-NEXT: v_min_u16_sdwa v10, v3, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11946; GFX8-SDAG-NEXT: v_min_u16_sdwa v11, v1, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11947; GFX8-SDAG-NEXT: v_min_u16_e32 v2, v2, v61948; GFX8-SDAG-NEXT: v_min_u16_e32 v0, v0, v41949; GFX8-SDAG-NEXT: v_min_u16_e32 v3, v3, v71950; GFX8-SDAG-NEXT: v_min_u16_e32 v1, v1, v51951; GFX8-SDAG-NEXT: v_min_u16_e32 v4, v11, v101952; GFX8-SDAG-NEXT: v_min_u16_e32 v5, v9, v81953; GFX8-SDAG-NEXT: v_min_u16_e32 v1, v1, v31954; GFX8-SDAG-NEXT: v_min_u16_e32 v0, v0, v21955; GFX8-SDAG-NEXT: v_min_u16_e32 v2, v5, v41956; GFX8-SDAG-NEXT: v_min_u16_e32 v0, v0, v11957; GFX8-SDAG-NEXT: v_min_u16_e32 v0, v0, v21958; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]1959;1960; GFX8-GISEL-LABEL: test_vector_reduce_umin_v16i16:1961; GFX8-GISEL: ; %bb.0: ; %entry1962; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1963; GFX8-GISEL-NEXT: v_min_u16_e32 v8, v0, v41964; GFX8-GISEL-NEXT: v_min_u16_sdwa v0, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11965; GFX8-GISEL-NEXT: v_min_u16_e32 v4, v1, v51966; GFX8-GISEL-NEXT: v_min_u16_sdwa v1, v1, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11967; GFX8-GISEL-NEXT: v_min_u16_e32 v5, v2, v61968; GFX8-GISEL-NEXT: v_min_u16_sdwa v2, v2, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11969; GFX8-GISEL-NEXT: v_min_u16_e32 v6, v3, v71970; GFX8-GISEL-NEXT: v_min_u16_sdwa v3, v3, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11971; GFX8-GISEL-NEXT: v_min_u16_e32 v5, v8, v51972; GFX8-GISEL-NEXT: v_min_u16_e32 v0, v0, v21973; GFX8-GISEL-NEXT: v_min_u16_e32 v2, v4, v61974; GFX8-GISEL-NEXT: v_min_u16_e32 v1, v1, v31975; GFX8-GISEL-NEXT: v_min_u16_e32 v2, v5, v21976; GFX8-GISEL-NEXT: v_min_u16_e32 v0, v0, v11977; GFX8-GISEL-NEXT: v_min_u16_e32 v1, v2, v01978; GFX8-GISEL-NEXT: v_mov_b32_e32 v2, s41979; GFX8-GISEL-NEXT: v_min_u16_sdwa v0, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD1980; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v1, v01981; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]1982;1983; GFX9-SDAG-LABEL: test_vector_reduce_umin_v16i16:1984; GFX9-SDAG: ; %bb.0: ; %entry1985; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1986; GFX9-SDAG-NEXT: v_pk_min_u16 v2, v2, v61987; GFX9-SDAG-NEXT: v_pk_min_u16 v0, v0, v41988; GFX9-SDAG-NEXT: v_pk_min_u16 v3, v3, v71989; GFX9-SDAG-NEXT: v_pk_min_u16 v1, v1, v51990; GFX9-SDAG-NEXT: v_pk_min_u16 v0, v0, v21991; GFX9-SDAG-NEXT: v_pk_min_u16 v1, v1, v31992; GFX9-SDAG-NEXT: s_nop 01993; GFX9-SDAG-NEXT: v_pk_min_u16 v0, v0, v11994; GFX9-SDAG-NEXT: s_nop 01995; GFX9-SDAG-NEXT: v_min_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11996; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]1997;1998; GFX9-GISEL-LABEL: test_vector_reduce_umin_v16i16:1999; GFX9-GISEL: ; %bb.0: ; %entry2000; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2001; GFX9-GISEL-NEXT: v_pk_min_u16 v0, v0, v42002; GFX9-GISEL-NEXT: v_pk_min_u16 v1, v1, v52003; GFX9-GISEL-NEXT: v_pk_min_u16 v2, v2, v62004; GFX9-GISEL-NEXT: v_pk_min_u16 v3, v3, v72005; GFX9-GISEL-NEXT: v_pk_min_u16 v0, v0, v22006; GFX9-GISEL-NEXT: v_pk_min_u16 v1, v1, v32007; GFX9-GISEL-NEXT: s_nop 02008; GFX9-GISEL-NEXT: v_pk_min_u16 v0, v0, v12009; GFX9-GISEL-NEXT: s_nop 02010; GFX9-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 162011; GFX9-GISEL-NEXT: v_pk_min_u16 v0, v0, v12012; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2013;2014; GFX10-SDAG-LABEL: test_vector_reduce_umin_v16i16:2015; GFX10-SDAG: ; %bb.0: ; %entry2016; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2017; GFX10-SDAG-NEXT: v_pk_min_u16 v2, v2, v62018; GFX10-SDAG-NEXT: v_pk_min_u16 v3, v3, v72019; GFX10-SDAG-NEXT: v_pk_min_u16 v1, v1, v52020; GFX10-SDAG-NEXT: v_pk_min_u16 v0, v0, v42021; GFX10-SDAG-NEXT: v_pk_min_u16 v1, v1, v32022; GFX10-SDAG-NEXT: v_pk_min_u16 v0, v0, v22023; GFX10-SDAG-NEXT: v_pk_min_u16 v0, v0, v12024; GFX10-SDAG-NEXT: v_lshrrev_b32_e32 v1, 16, v02025; GFX10-SDAG-NEXT: v_min_u16 v0, v0, v12026; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]2027;2028; GFX10-GISEL-LABEL: test_vector_reduce_umin_v16i16:2029; GFX10-GISEL: ; %bb.0: ; %entry2030; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2031; GFX10-GISEL-NEXT: v_pk_min_u16 v0, v0, v42032; GFX10-GISEL-NEXT: v_pk_min_u16 v1, v1, v52033; GFX10-GISEL-NEXT: v_pk_min_u16 v2, v2, v62034; GFX10-GISEL-NEXT: v_pk_min_u16 v3, v3, v72035; GFX10-GISEL-NEXT: v_pk_min_u16 v0, v0, v22036; GFX10-GISEL-NEXT: v_pk_min_u16 v1, v1, v32037; GFX10-GISEL-NEXT: v_pk_min_u16 v0, v0, v12038; GFX10-GISEL-NEXT: v_alignbit_b32 v1, s4, v0, 162039; GFX10-GISEL-NEXT: v_pk_min_u16 v0, v0, v12040; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]2041;2042; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_umin_v16i16:2043; GFX11-SDAG-TRUE16: ; %bb.0: ; %entry2044; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2045; GFX11-SDAG-TRUE16-NEXT: v_pk_min_u16 v2, v2, v62046; GFX11-SDAG-TRUE16-NEXT: v_pk_min_u16 v3, v3, v72047; GFX11-SDAG-TRUE16-NEXT: v_pk_min_u16 v1, v1, v52048; GFX11-SDAG-TRUE16-NEXT: v_pk_min_u16 v0, v0, v42049; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2050; GFX11-SDAG-TRUE16-NEXT: v_pk_min_u16 v1, v1, v32051; GFX11-SDAG-TRUE16-NEXT: v_pk_min_u16 v0, v0, v22052; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2053; GFX11-SDAG-TRUE16-NEXT: v_pk_min_u16 v0, v0, v12054; GFX11-SDAG-TRUE16-NEXT: v_min_u16 v0.l, v0.l, v0.h2055; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]2056;2057; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_umin_v16i16:2058; GFX11-SDAG-FAKE16: ; %bb.0: ; %entry2059; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2060; GFX11-SDAG-FAKE16-NEXT: v_pk_min_u16 v2, v2, v62061; GFX11-SDAG-FAKE16-NEXT: v_pk_min_u16 v3, v3, v72062; GFX11-SDAG-FAKE16-NEXT: v_pk_min_u16 v1, v1, v52063; GFX11-SDAG-FAKE16-NEXT: v_pk_min_u16 v0, v0, v42064; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2065; GFX11-SDAG-FAKE16-NEXT: v_pk_min_u16 v1, v1, v32066; GFX11-SDAG-FAKE16-NEXT: v_pk_min_u16 v0, v0, v22067; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2068; GFX11-SDAG-FAKE16-NEXT: v_pk_min_u16 v0, v0, v12069; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v02070; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)2071; GFX11-SDAG-FAKE16-NEXT: v_min_u16 v0, v0, v12072; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]2073;2074; GFX11-GISEL-LABEL: test_vector_reduce_umin_v16i16:2075; GFX11-GISEL: ; %bb.0: ; %entry2076; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2077; GFX11-GISEL-NEXT: v_pk_min_u16 v0, v0, v42078; GFX11-GISEL-NEXT: v_pk_min_u16 v1, v1, v52079; GFX11-GISEL-NEXT: v_pk_min_u16 v2, v2, v62080; GFX11-GISEL-NEXT: v_pk_min_u16 v3, v3, v72081; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2082; GFX11-GISEL-NEXT: v_pk_min_u16 v0, v0, v22083; GFX11-GISEL-NEXT: v_pk_min_u16 v1, v1, v32084; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2085; GFX11-GISEL-NEXT: v_pk_min_u16 v0, v0, v12086; GFX11-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 162087; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2088; GFX11-GISEL-NEXT: v_pk_min_u16 v0, v0, v12089; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2090;2091; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_umin_v16i16:2092; GFX12-SDAG-TRUE16: ; %bb.0: ; %entry2093; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x02094; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x02095; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x02096; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x02097; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x02098; GFX12-SDAG-TRUE16-NEXT: v_pk_min_u16 v2, v2, v62099; GFX12-SDAG-TRUE16-NEXT: v_pk_min_u16 v3, v3, v72100; GFX12-SDAG-TRUE16-NEXT: v_pk_min_u16 v1, v1, v52101; GFX12-SDAG-TRUE16-NEXT: v_pk_min_u16 v0, v0, v42102; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2103; GFX12-SDAG-TRUE16-NEXT: v_pk_min_u16 v1, v1, v32104; GFX12-SDAG-TRUE16-NEXT: v_pk_min_u16 v0, v0, v22105; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2106; GFX12-SDAG-TRUE16-NEXT: v_pk_min_u16 v0, v0, v12107; GFX12-SDAG-TRUE16-NEXT: v_min_u16 v0.l, v0.l, v0.h2108; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]2109;2110; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_umin_v16i16:2111; GFX12-SDAG-FAKE16: ; %bb.0: ; %entry2112; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x02113; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x02114; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x02115; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x02116; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x02117; GFX12-SDAG-FAKE16-NEXT: v_pk_min_u16 v2, v2, v62118; GFX12-SDAG-FAKE16-NEXT: v_pk_min_u16 v3, v3, v72119; GFX12-SDAG-FAKE16-NEXT: v_pk_min_u16 v1, v1, v52120; GFX12-SDAG-FAKE16-NEXT: v_pk_min_u16 v0, v0, v42121; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2122; GFX12-SDAG-FAKE16-NEXT: v_pk_min_u16 v1, v1, v32123; GFX12-SDAG-FAKE16-NEXT: v_pk_min_u16 v0, v0, v22124; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2125; GFX12-SDAG-FAKE16-NEXT: v_pk_min_u16 v0, v0, v12126; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v02127; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)2128; GFX12-SDAG-FAKE16-NEXT: v_min_u16 v0, v0, v12129; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]2130;2131; GFX12-GISEL-LABEL: test_vector_reduce_umin_v16i16:2132; GFX12-GISEL: ; %bb.0: ; %entry2133; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02134; GFX12-GISEL-NEXT: s_wait_expcnt 0x02135; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02136; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02137; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02138; GFX12-GISEL-NEXT: v_pk_min_u16 v0, v0, v42139; GFX12-GISEL-NEXT: v_pk_min_u16 v1, v1, v52140; GFX12-GISEL-NEXT: v_pk_min_u16 v2, v2, v62141; GFX12-GISEL-NEXT: v_pk_min_u16 v3, v3, v72142; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2143; GFX12-GISEL-NEXT: v_pk_min_u16 v0, v0, v22144; GFX12-GISEL-NEXT: v_pk_min_u16 v1, v1, v32145; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2146; GFX12-GISEL-NEXT: v_pk_min_u16 v0, v0, v12147; GFX12-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 162148; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2149; GFX12-GISEL-NEXT: v_pk_min_u16 v0, v0, v12150; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2151entry:2152 %res = call i16 @llvm.vector.reduce.umin.v16i16(<16 x i16> %v)2153 ret i16 %res2154}2155 2156 2157define i32 @test_vector_reduce_umin_v2i32(<2 x i32> %v) {2158; GFX7-LABEL: test_vector_reduce_umin_v2i32:2159; GFX7: ; %bb.0: ; %entry2160; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2161; GFX7-NEXT: v_min_u32_e32 v0, v0, v12162; GFX7-NEXT: s_setpc_b64 s[30:31]2163;2164; GFX8-LABEL: test_vector_reduce_umin_v2i32:2165; GFX8: ; %bb.0: ; %entry2166; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2167; GFX8-NEXT: v_min_u32_e32 v0, v0, v12168; GFX8-NEXT: s_setpc_b64 s[30:31]2169;2170; GFX9-LABEL: test_vector_reduce_umin_v2i32:2171; GFX9: ; %bb.0: ; %entry2172; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2173; GFX9-NEXT: v_min_u32_e32 v0, v0, v12174; GFX9-NEXT: s_setpc_b64 s[30:31]2175;2176; GFX10-LABEL: test_vector_reduce_umin_v2i32:2177; GFX10: ; %bb.0: ; %entry2178; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2179; GFX10-NEXT: v_min_u32_e32 v0, v0, v12180; GFX10-NEXT: s_setpc_b64 s[30:31]2181;2182; GFX11-LABEL: test_vector_reduce_umin_v2i32:2183; GFX11: ; %bb.0: ; %entry2184; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2185; GFX11-NEXT: v_min_u32_e32 v0, v0, v12186; GFX11-NEXT: s_setpc_b64 s[30:31]2187;2188; GFX12-LABEL: test_vector_reduce_umin_v2i32:2189; GFX12: ; %bb.0: ; %entry2190; GFX12-NEXT: s_wait_loadcnt_dscnt 0x02191; GFX12-NEXT: s_wait_expcnt 0x02192; GFX12-NEXT: s_wait_samplecnt 0x02193; GFX12-NEXT: s_wait_bvhcnt 0x02194; GFX12-NEXT: s_wait_kmcnt 0x02195; GFX12-NEXT: v_min_u32_e32 v0, v0, v12196; GFX12-NEXT: s_setpc_b64 s[30:31]2197entry:2198 %res = call i32 @llvm.vector.reduce.umin.v2i32(<2 x i32> %v)2199 ret i32 %res2200}2201 2202define i32 @test_vector_reduce_umin_v3i32(<3 x i32> %v) {2203; GFX7-SDAG-LABEL: test_vector_reduce_umin_v3i32:2204; GFX7-SDAG: ; %bb.0: ; %entry2205; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2206; GFX7-SDAG-NEXT: v_min3_u32 v0, v0, v1, v22207; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]2208;2209; GFX7-GISEL-LABEL: test_vector_reduce_umin_v3i32:2210; GFX7-GISEL: ; %bb.0: ; %entry2211; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2212; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v12213; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v22214; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]2215;2216; GFX8-SDAG-LABEL: test_vector_reduce_umin_v3i32:2217; GFX8-SDAG: ; %bb.0: ; %entry2218; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2219; GFX8-SDAG-NEXT: v_min3_u32 v0, v0, v1, v22220; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]2221;2222; GFX8-GISEL-LABEL: test_vector_reduce_umin_v3i32:2223; GFX8-GISEL: ; %bb.0: ; %entry2224; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2225; GFX8-GISEL-NEXT: v_min_u32_e32 v0, v0, v12226; GFX8-GISEL-NEXT: v_min_u32_e32 v0, v0, v22227; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]2228;2229; GFX9-SDAG-LABEL: test_vector_reduce_umin_v3i32:2230; GFX9-SDAG: ; %bb.0: ; %entry2231; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2232; GFX9-SDAG-NEXT: v_min3_u32 v0, v0, v1, v22233; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]2234;2235; GFX9-GISEL-LABEL: test_vector_reduce_umin_v3i32:2236; GFX9-GISEL: ; %bb.0: ; %entry2237; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2238; GFX9-GISEL-NEXT: v_min_u32_e32 v0, v0, v12239; GFX9-GISEL-NEXT: v_min_u32_e32 v0, v0, v22240; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2241;2242; GFX10-SDAG-LABEL: test_vector_reduce_umin_v3i32:2243; GFX10-SDAG: ; %bb.0: ; %entry2244; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2245; GFX10-SDAG-NEXT: v_min3_u32 v0, v0, v1, v22246; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]2247;2248; GFX10-GISEL-LABEL: test_vector_reduce_umin_v3i32:2249; GFX10-GISEL: ; %bb.0: ; %entry2250; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2251; GFX10-GISEL-NEXT: v_min_u32_e32 v0, v0, v12252; GFX10-GISEL-NEXT: v_min_u32_e32 v0, v0, v22253; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]2254;2255; GFX11-SDAG-LABEL: test_vector_reduce_umin_v3i32:2256; GFX11-SDAG: ; %bb.0: ; %entry2257; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2258; GFX11-SDAG-NEXT: v_min3_u32 v0, v0, v1, v22259; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]2260;2261; GFX11-GISEL-LABEL: test_vector_reduce_umin_v3i32:2262; GFX11-GISEL: ; %bb.0: ; %entry2263; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2264; GFX11-GISEL-NEXT: v_min_u32_e32 v0, v0, v12265; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2266; GFX11-GISEL-NEXT: v_min_u32_e32 v0, v0, v22267; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2268;2269; GFX12-SDAG-LABEL: test_vector_reduce_umin_v3i32:2270; GFX12-SDAG: ; %bb.0: ; %entry2271; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x02272; GFX12-SDAG-NEXT: s_wait_expcnt 0x02273; GFX12-SDAG-NEXT: s_wait_samplecnt 0x02274; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x02275; GFX12-SDAG-NEXT: s_wait_kmcnt 0x02276; GFX12-SDAG-NEXT: v_min3_u32 v0, v0, v1, v22277; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]2278;2279; GFX12-GISEL-LABEL: test_vector_reduce_umin_v3i32:2280; GFX12-GISEL: ; %bb.0: ; %entry2281; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02282; GFX12-GISEL-NEXT: s_wait_expcnt 0x02283; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02284; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02285; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02286; GFX12-GISEL-NEXT: v_min_u32_e32 v0, v0, v12287; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2288; GFX12-GISEL-NEXT: v_min_u32_e32 v0, v0, v22289; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2290entry:2291 %res = call i32 @llvm.vector.reduce.umin.v3i32(<3 x i32> %v)2292 ret i32 %res2293}2294 2295define i32 @test_vector_reduce_umin_v4i32(<4 x i32> %v) {2296; GFX7-SDAG-LABEL: test_vector_reduce_umin_v4i32:2297; GFX7-SDAG: ; %bb.0: ; %entry2298; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2299; GFX7-SDAG-NEXT: v_min_u32_e32 v1, v1, v32300; GFX7-SDAG-NEXT: v_min3_u32 v0, v0, v2, v12301; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]2302;2303; GFX7-GISEL-LABEL: test_vector_reduce_umin_v4i32:2304; GFX7-GISEL: ; %bb.0: ; %entry2305; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2306; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v22307; GFX7-GISEL-NEXT: v_min_u32_e32 v1, v1, v32308; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v12309; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]2310;2311; GFX8-SDAG-LABEL: test_vector_reduce_umin_v4i32:2312; GFX8-SDAG: ; %bb.0: ; %entry2313; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2314; GFX8-SDAG-NEXT: v_min_u32_e32 v1, v1, v32315; GFX8-SDAG-NEXT: v_min3_u32 v0, v0, v2, v12316; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]2317;2318; GFX8-GISEL-LABEL: test_vector_reduce_umin_v4i32:2319; GFX8-GISEL: ; %bb.0: ; %entry2320; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2321; GFX8-GISEL-NEXT: v_min_u32_e32 v0, v0, v22322; GFX8-GISEL-NEXT: v_min_u32_e32 v1, v1, v32323; GFX8-GISEL-NEXT: v_min_u32_e32 v0, v0, v12324; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]2325;2326; GFX9-SDAG-LABEL: test_vector_reduce_umin_v4i32:2327; GFX9-SDAG: ; %bb.0: ; %entry2328; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2329; GFX9-SDAG-NEXT: v_min_u32_e32 v1, v1, v32330; GFX9-SDAG-NEXT: v_min3_u32 v0, v0, v2, v12331; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]2332;2333; GFX9-GISEL-LABEL: test_vector_reduce_umin_v4i32:2334; GFX9-GISEL: ; %bb.0: ; %entry2335; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2336; GFX9-GISEL-NEXT: v_min_u32_e32 v0, v0, v22337; GFX9-GISEL-NEXT: v_min_u32_e32 v1, v1, v32338; GFX9-GISEL-NEXT: v_min_u32_e32 v0, v0, v12339; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2340;2341; GFX10-SDAG-LABEL: test_vector_reduce_umin_v4i32:2342; GFX10-SDAG: ; %bb.0: ; %entry2343; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2344; GFX10-SDAG-NEXT: v_min_u32_e32 v1, v1, v32345; GFX10-SDAG-NEXT: v_min3_u32 v0, v0, v2, v12346; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]2347;2348; GFX10-GISEL-LABEL: test_vector_reduce_umin_v4i32:2349; GFX10-GISEL: ; %bb.0: ; %entry2350; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2351; GFX10-GISEL-NEXT: v_min_u32_e32 v0, v0, v22352; GFX10-GISEL-NEXT: v_min_u32_e32 v1, v1, v32353; GFX10-GISEL-NEXT: v_min_u32_e32 v0, v0, v12354; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]2355;2356; GFX11-SDAG-LABEL: test_vector_reduce_umin_v4i32:2357; GFX11-SDAG: ; %bb.0: ; %entry2358; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2359; GFX11-SDAG-NEXT: v_min_u32_e32 v1, v1, v32360; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)2361; GFX11-SDAG-NEXT: v_min3_u32 v0, v0, v2, v12362; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]2363;2364; GFX11-GISEL-LABEL: test_vector_reduce_umin_v4i32:2365; GFX11-GISEL: ; %bb.0: ; %entry2366; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2367; GFX11-GISEL-NEXT: v_min_u32_e32 v0, v0, v22368; GFX11-GISEL-NEXT: v_min_u32_e32 v1, v1, v32369; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2370; GFX11-GISEL-NEXT: v_min_u32_e32 v0, v0, v12371; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2372;2373; GFX12-SDAG-LABEL: test_vector_reduce_umin_v4i32:2374; GFX12-SDAG: ; %bb.0: ; %entry2375; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x02376; GFX12-SDAG-NEXT: s_wait_expcnt 0x02377; GFX12-SDAG-NEXT: s_wait_samplecnt 0x02378; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x02379; GFX12-SDAG-NEXT: s_wait_kmcnt 0x02380; GFX12-SDAG-NEXT: v_min_u32_e32 v1, v1, v32381; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)2382; GFX12-SDAG-NEXT: v_min3_u32 v0, v0, v2, v12383; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]2384;2385; GFX12-GISEL-LABEL: test_vector_reduce_umin_v4i32:2386; GFX12-GISEL: ; %bb.0: ; %entry2387; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02388; GFX12-GISEL-NEXT: s_wait_expcnt 0x02389; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02390; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02391; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02392; GFX12-GISEL-NEXT: v_min_u32_e32 v0, v0, v22393; GFX12-GISEL-NEXT: v_min_u32_e32 v1, v1, v32394; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2395; GFX12-GISEL-NEXT: v_min_u32_e32 v0, v0, v12396; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2397entry:2398 %res = call i32 @llvm.vector.reduce.umin.v4i32(<4 x i32> %v)2399 ret i32 %res2400}2401 2402define i32 @test_vector_reduce_umin_v8i32(<8 x i32> %v) {2403; GFX7-SDAG-LABEL: test_vector_reduce_umin_v8i32:2404; GFX7-SDAG: ; %bb.0: ; %entry2405; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2406; GFX7-SDAG-NEXT: v_min_u32_e32 v2, v2, v62407; GFX7-SDAG-NEXT: v_min_u32_e32 v3, v3, v72408; GFX7-SDAG-NEXT: v_min3_u32 v1, v1, v5, v32409; GFX7-SDAG-NEXT: v_min3_u32 v0, v0, v4, v22410; GFX7-SDAG-NEXT: v_min_u32_e32 v0, v0, v12411; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]2412;2413; GFX7-GISEL-LABEL: test_vector_reduce_umin_v8i32:2414; GFX7-GISEL: ; %bb.0: ; %entry2415; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2416; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v42417; GFX7-GISEL-NEXT: v_min_u32_e32 v1, v1, v52418; GFX7-GISEL-NEXT: v_min_u32_e32 v2, v2, v62419; GFX7-GISEL-NEXT: v_min_u32_e32 v3, v3, v72420; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v22421; GFX7-GISEL-NEXT: v_min_u32_e32 v1, v1, v32422; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v12423; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]2424;2425; GFX8-SDAG-LABEL: test_vector_reduce_umin_v8i32:2426; GFX8-SDAG: ; %bb.0: ; %entry2427; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2428; GFX8-SDAG-NEXT: v_min_u32_e32 v2, v2, v62429; GFX8-SDAG-NEXT: v_min_u32_e32 v3, v3, v72430; GFX8-SDAG-NEXT: v_min3_u32 v1, v1, v5, v32431; GFX8-SDAG-NEXT: v_min3_u32 v0, v0, v4, v22432; GFX8-SDAG-NEXT: v_min_u32_e32 v0, v0, v12433; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]2434;2435; GFX8-GISEL-LABEL: test_vector_reduce_umin_v8i32:2436; GFX8-GISEL: ; %bb.0: ; %entry2437; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2438; GFX8-GISEL-NEXT: v_min_u32_e32 v0, v0, v42439; GFX8-GISEL-NEXT: v_min_u32_e32 v1, v1, v52440; GFX8-GISEL-NEXT: v_min_u32_e32 v2, v2, v62441; GFX8-GISEL-NEXT: v_min_u32_e32 v3, v3, v72442; GFX8-GISEL-NEXT: v_min_u32_e32 v0, v0, v22443; GFX8-GISEL-NEXT: v_min_u32_e32 v1, v1, v32444; GFX8-GISEL-NEXT: v_min_u32_e32 v0, v0, v12445; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]2446;2447; GFX9-SDAG-LABEL: test_vector_reduce_umin_v8i32:2448; GFX9-SDAG: ; %bb.0: ; %entry2449; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2450; GFX9-SDAG-NEXT: v_min_u32_e32 v2, v2, v62451; GFX9-SDAG-NEXT: v_min_u32_e32 v3, v3, v72452; GFX9-SDAG-NEXT: v_min3_u32 v1, v1, v5, v32453; GFX9-SDAG-NEXT: v_min3_u32 v0, v0, v4, v22454; GFX9-SDAG-NEXT: v_min_u32_e32 v0, v0, v12455; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]2456;2457; GFX9-GISEL-LABEL: test_vector_reduce_umin_v8i32:2458; GFX9-GISEL: ; %bb.0: ; %entry2459; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2460; GFX9-GISEL-NEXT: v_min_u32_e32 v0, v0, v42461; GFX9-GISEL-NEXT: v_min_u32_e32 v1, v1, v52462; GFX9-GISEL-NEXT: v_min_u32_e32 v2, v2, v62463; GFX9-GISEL-NEXT: v_min_u32_e32 v3, v3, v72464; GFX9-GISEL-NEXT: v_min_u32_e32 v0, v0, v22465; GFX9-GISEL-NEXT: v_min_u32_e32 v1, v1, v32466; GFX9-GISEL-NEXT: v_min_u32_e32 v0, v0, v12467; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2468;2469; GFX10-SDAG-LABEL: test_vector_reduce_umin_v8i32:2470; GFX10-SDAG: ; %bb.0: ; %entry2471; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2472; GFX10-SDAG-NEXT: v_min_u32_e32 v3, v3, v72473; GFX10-SDAG-NEXT: v_min_u32_e32 v2, v2, v62474; GFX10-SDAG-NEXT: v_min3_u32 v1, v1, v5, v32475; GFX10-SDAG-NEXT: v_min3_u32 v0, v0, v4, v22476; GFX10-SDAG-NEXT: v_min_u32_e32 v0, v0, v12477; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]2478;2479; GFX10-GISEL-LABEL: test_vector_reduce_umin_v8i32:2480; GFX10-GISEL: ; %bb.0: ; %entry2481; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2482; GFX10-GISEL-NEXT: v_min_u32_e32 v0, v0, v42483; GFX10-GISEL-NEXT: v_min_u32_e32 v1, v1, v52484; GFX10-GISEL-NEXT: v_min_u32_e32 v2, v2, v62485; GFX10-GISEL-NEXT: v_min_u32_e32 v3, v3, v72486; GFX10-GISEL-NEXT: v_min_u32_e32 v0, v0, v22487; GFX10-GISEL-NEXT: v_min_u32_e32 v1, v1, v32488; GFX10-GISEL-NEXT: v_min_u32_e32 v0, v0, v12489; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]2490;2491; GFX11-SDAG-LABEL: test_vector_reduce_umin_v8i32:2492; GFX11-SDAG: ; %bb.0: ; %entry2493; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2494; GFX11-SDAG-NEXT: v_min_u32_e32 v3, v3, v72495; GFX11-SDAG-NEXT: v_min_u32_e32 v2, v2, v62496; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2497; GFX11-SDAG-NEXT: v_min3_u32 v1, v1, v5, v32498; GFX11-SDAG-NEXT: v_min3_u32 v0, v0, v4, v22499; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)2500; GFX11-SDAG-NEXT: v_min_u32_e32 v0, v0, v12501; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]2502;2503; GFX11-GISEL-LABEL: test_vector_reduce_umin_v8i32:2504; GFX11-GISEL: ; %bb.0: ; %entry2505; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2506; GFX11-GISEL-NEXT: v_min_u32_e32 v0, v0, v42507; GFX11-GISEL-NEXT: v_min_u32_e32 v1, v1, v52508; GFX11-GISEL-NEXT: v_min_u32_e32 v2, v2, v62509; GFX11-GISEL-NEXT: v_min_u32_e32 v3, v3, v72510; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2511; GFX11-GISEL-NEXT: v_min_u32_e32 v0, v0, v22512; GFX11-GISEL-NEXT: v_min_u32_e32 v1, v1, v32513; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2514; GFX11-GISEL-NEXT: v_min_u32_e32 v0, v0, v12515; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2516;2517; GFX12-SDAG-LABEL: test_vector_reduce_umin_v8i32:2518; GFX12-SDAG: ; %bb.0: ; %entry2519; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x02520; GFX12-SDAG-NEXT: s_wait_expcnt 0x02521; GFX12-SDAG-NEXT: s_wait_samplecnt 0x02522; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x02523; GFX12-SDAG-NEXT: s_wait_kmcnt 0x02524; GFX12-SDAG-NEXT: v_min_u32_e32 v3, v3, v72525; GFX12-SDAG-NEXT: v_min_u32_e32 v2, v2, v62526; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2527; GFX12-SDAG-NEXT: v_min3_u32 v1, v1, v5, v32528; GFX12-SDAG-NEXT: v_min3_u32 v0, v0, v4, v22529; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)2530; GFX12-SDAG-NEXT: v_min_u32_e32 v0, v0, v12531; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]2532;2533; GFX12-GISEL-LABEL: test_vector_reduce_umin_v8i32:2534; GFX12-GISEL: ; %bb.0: ; %entry2535; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02536; GFX12-GISEL-NEXT: s_wait_expcnt 0x02537; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02538; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02539; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02540; GFX12-GISEL-NEXT: v_min_u32_e32 v0, v0, v42541; GFX12-GISEL-NEXT: v_min_u32_e32 v1, v1, v52542; GFX12-GISEL-NEXT: v_min_u32_e32 v2, v2, v62543; GFX12-GISEL-NEXT: v_min_u32_e32 v3, v3, v72544; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2545; GFX12-GISEL-NEXT: v_min_u32_e32 v0, v0, v22546; GFX12-GISEL-NEXT: v_min_u32_e32 v1, v1, v32547; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2548; GFX12-GISEL-NEXT: v_min_u32_e32 v0, v0, v12549; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2550entry:2551 %res = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> %v)2552 ret i32 %res2553}2554 2555define i32 @test_vector_reduce_umin_v16i32(<16 x i32> %v) {2556; GFX7-SDAG-LABEL: test_vector_reduce_umin_v16i32:2557; GFX7-SDAG: ; %bb.0: ; %entry2558; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2559; GFX7-SDAG-NEXT: v_min_u32_e32 v7, v7, v152560; GFX7-SDAG-NEXT: v_min_u32_e32 v6, v6, v142561; GFX7-SDAG-NEXT: v_min_u32_e32 v4, v4, v122562; GFX7-SDAG-NEXT: v_min_u32_e32 v0, v0, v82563; GFX7-SDAG-NEXT: v_min_u32_e32 v5, v5, v132564; GFX7-SDAG-NEXT: v_min_u32_e32 v1, v1, v92565; GFX7-SDAG-NEXT: v_min3_u32 v2, v2, v10, v62566; GFX7-SDAG-NEXT: v_min3_u32 v3, v3, v11, v72567; GFX7-SDAG-NEXT: v_min3_u32 v1, v1, v5, v32568; GFX7-SDAG-NEXT: v_min3_u32 v0, v0, v4, v22569; GFX7-SDAG-NEXT: v_min_u32_e32 v0, v0, v12570; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]2571;2572; GFX7-GISEL-LABEL: test_vector_reduce_umin_v16i32:2573; GFX7-GISEL: ; %bb.0: ; %entry2574; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2575; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v82576; GFX7-GISEL-NEXT: v_min_u32_e32 v1, v1, v92577; GFX7-GISEL-NEXT: v_min_u32_e32 v2, v2, v102578; GFX7-GISEL-NEXT: v_min_u32_e32 v3, v3, v112579; GFX7-GISEL-NEXT: v_min_u32_e32 v4, v4, v122580; GFX7-GISEL-NEXT: v_min_u32_e32 v5, v5, v132581; GFX7-GISEL-NEXT: v_min_u32_e32 v6, v6, v142582; GFX7-GISEL-NEXT: v_min_u32_e32 v7, v7, v152583; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v42584; GFX7-GISEL-NEXT: v_min_u32_e32 v1, v1, v52585; GFX7-GISEL-NEXT: v_min_u32_e32 v2, v2, v62586; GFX7-GISEL-NEXT: v_min_u32_e32 v3, v3, v72587; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v22588; GFX7-GISEL-NEXT: v_min_u32_e32 v1, v1, v32589; GFX7-GISEL-NEXT: v_min_u32_e32 v0, v0, v12590; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]2591;2592; GFX8-SDAG-LABEL: test_vector_reduce_umin_v16i32:2593; GFX8-SDAG: ; %bb.0: ; %entry2594; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2595; GFX8-SDAG-NEXT: v_min_u32_e32 v7, v7, v152596; GFX8-SDAG-NEXT: v_min_u32_e32 v6, v6, v142597; GFX8-SDAG-NEXT: v_min_u32_e32 v4, v4, v122598; GFX8-SDAG-NEXT: v_min_u32_e32 v0, v0, v82599; GFX8-SDAG-NEXT: v_min_u32_e32 v5, v5, v132600; GFX8-SDAG-NEXT: v_min_u32_e32 v1, v1, v92601; GFX8-SDAG-NEXT: v_min3_u32 v2, v2, v10, v62602; GFX8-SDAG-NEXT: v_min3_u32 v3, v3, v11, v72603; GFX8-SDAG-NEXT: v_min3_u32 v1, v1, v5, v32604; GFX8-SDAG-NEXT: v_min3_u32 v0, v0, v4, v22605; GFX8-SDAG-NEXT: v_min_u32_e32 v0, v0, v12606; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]2607;2608; GFX8-GISEL-LABEL: test_vector_reduce_umin_v16i32:2609; GFX8-GISEL: ; %bb.0: ; %entry2610; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2611; GFX8-GISEL-NEXT: v_min_u32_e32 v0, v0, v82612; GFX8-GISEL-NEXT: v_min_u32_e32 v1, v1, v92613; GFX8-GISEL-NEXT: v_min_u32_e32 v2, v2, v102614; GFX8-GISEL-NEXT: v_min_u32_e32 v3, v3, v112615; GFX8-GISEL-NEXT: v_min_u32_e32 v4, v4, v122616; GFX8-GISEL-NEXT: v_min_u32_e32 v5, v5, v132617; GFX8-GISEL-NEXT: v_min_u32_e32 v6, v6, v142618; GFX8-GISEL-NEXT: v_min_u32_e32 v7, v7, v152619; GFX8-GISEL-NEXT: v_min_u32_e32 v0, v0, v42620; GFX8-GISEL-NEXT: v_min_u32_e32 v1, v1, v52621; GFX8-GISEL-NEXT: v_min_u32_e32 v2, v2, v62622; GFX8-GISEL-NEXT: v_min_u32_e32 v3, v3, v72623; GFX8-GISEL-NEXT: v_min_u32_e32 v0, v0, v22624; GFX8-GISEL-NEXT: v_min_u32_e32 v1, v1, v32625; GFX8-GISEL-NEXT: v_min_u32_e32 v0, v0, v12626; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]2627;2628; GFX9-SDAG-LABEL: test_vector_reduce_umin_v16i32:2629; GFX9-SDAG: ; %bb.0: ; %entry2630; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2631; GFX9-SDAG-NEXT: v_min_u32_e32 v7, v7, v152632; GFX9-SDAG-NEXT: v_min_u32_e32 v6, v6, v142633; GFX9-SDAG-NEXT: v_min_u32_e32 v4, v4, v122634; GFX9-SDAG-NEXT: v_min_u32_e32 v0, v0, v82635; GFX9-SDAG-NEXT: v_min_u32_e32 v5, v5, v132636; GFX9-SDAG-NEXT: v_min_u32_e32 v1, v1, v92637; GFX9-SDAG-NEXT: v_min3_u32 v2, v2, v10, v62638; GFX9-SDAG-NEXT: v_min3_u32 v3, v3, v11, v72639; GFX9-SDAG-NEXT: v_min3_u32 v1, v1, v5, v32640; GFX9-SDAG-NEXT: v_min3_u32 v0, v0, v4, v22641; GFX9-SDAG-NEXT: v_min_u32_e32 v0, v0, v12642; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]2643;2644; GFX9-GISEL-LABEL: test_vector_reduce_umin_v16i32:2645; GFX9-GISEL: ; %bb.0: ; %entry2646; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2647; GFX9-GISEL-NEXT: v_min_u32_e32 v0, v0, v82648; GFX9-GISEL-NEXT: v_min_u32_e32 v1, v1, v92649; GFX9-GISEL-NEXT: v_min_u32_e32 v2, v2, v102650; GFX9-GISEL-NEXT: v_min_u32_e32 v3, v3, v112651; GFX9-GISEL-NEXT: v_min_u32_e32 v4, v4, v122652; GFX9-GISEL-NEXT: v_min_u32_e32 v5, v5, v132653; GFX9-GISEL-NEXT: v_min_u32_e32 v6, v6, v142654; GFX9-GISEL-NEXT: v_min_u32_e32 v7, v7, v152655; GFX9-GISEL-NEXT: v_min_u32_e32 v0, v0, v42656; GFX9-GISEL-NEXT: v_min_u32_e32 v1, v1, v52657; GFX9-GISEL-NEXT: v_min_u32_e32 v2, v2, v62658; GFX9-GISEL-NEXT: v_min_u32_e32 v3, v3, v72659; GFX9-GISEL-NEXT: v_min_u32_e32 v0, v0, v22660; GFX9-GISEL-NEXT: v_min_u32_e32 v1, v1, v32661; GFX9-GISEL-NEXT: v_min_u32_e32 v0, v0, v12662; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2663;2664; GFX10-SDAG-LABEL: test_vector_reduce_umin_v16i32:2665; GFX10-SDAG: ; %bb.0: ; %entry2666; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2667; GFX10-SDAG-NEXT: v_min_u32_e32 v7, v7, v152668; GFX10-SDAG-NEXT: v_min_u32_e32 v6, v6, v142669; GFX10-SDAG-NEXT: v_min_u32_e32 v4, v4, v122670; GFX10-SDAG-NEXT: v_min_u32_e32 v0, v0, v82671; GFX10-SDAG-NEXT: v_min_u32_e32 v5, v5, v132672; GFX10-SDAG-NEXT: v_min_u32_e32 v1, v1, v92673; GFX10-SDAG-NEXT: v_min3_u32 v3, v3, v11, v72674; GFX10-SDAG-NEXT: v_min3_u32 v2, v2, v10, v62675; GFX10-SDAG-NEXT: v_min3_u32 v1, v1, v5, v32676; GFX10-SDAG-NEXT: v_min3_u32 v0, v0, v4, v22677; GFX10-SDAG-NEXT: v_min_u32_e32 v0, v0, v12678; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]2679;2680; GFX10-GISEL-LABEL: test_vector_reduce_umin_v16i32:2681; GFX10-GISEL: ; %bb.0: ; %entry2682; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2683; GFX10-GISEL-NEXT: v_min_u32_e32 v0, v0, v82684; GFX10-GISEL-NEXT: v_min_u32_e32 v1, v1, v92685; GFX10-GISEL-NEXT: v_min_u32_e32 v2, v2, v102686; GFX10-GISEL-NEXT: v_min_u32_e32 v3, v3, v112687; GFX10-GISEL-NEXT: v_min_u32_e32 v4, v4, v122688; GFX10-GISEL-NEXT: v_min_u32_e32 v5, v5, v132689; GFX10-GISEL-NEXT: v_min_u32_e32 v6, v6, v142690; GFX10-GISEL-NEXT: v_min_u32_e32 v7, v7, v152691; GFX10-GISEL-NEXT: v_min_u32_e32 v0, v0, v42692; GFX10-GISEL-NEXT: v_min_u32_e32 v1, v1, v52693; GFX10-GISEL-NEXT: v_min_u32_e32 v2, v2, v62694; GFX10-GISEL-NEXT: v_min_u32_e32 v3, v3, v72695; GFX10-GISEL-NEXT: v_min_u32_e32 v0, v0, v22696; GFX10-GISEL-NEXT: v_min_u32_e32 v1, v1, v32697; GFX10-GISEL-NEXT: v_min_u32_e32 v0, v0, v12698; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]2699;2700; GFX11-SDAG-LABEL: test_vector_reduce_umin_v16i32:2701; GFX11-SDAG: ; %bb.0: ; %entry2702; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2703; GFX11-SDAG-NEXT: v_min_u32_e32 v7, v7, v152704; GFX11-SDAG-NEXT: v_min_u32_e32 v6, v6, v142705; GFX11-SDAG-NEXT: v_min_u32_e32 v4, v4, v122706; GFX11-SDAG-NEXT: v_min_u32_e32 v0, v0, v82707; GFX11-SDAG-NEXT: v_min_u32_e32 v5, v5, v132708; GFX11-SDAG-NEXT: v_min_u32_e32 v1, v1, v92709; GFX11-SDAG-NEXT: v_min3_u32 v3, v3, v11, v72710; GFX11-SDAG-NEXT: v_min3_u32 v2, v2, v10, v62711; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2712; GFX11-SDAG-NEXT: v_min3_u32 v1, v1, v5, v32713; GFX11-SDAG-NEXT: v_min3_u32 v0, v0, v4, v22714; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)2715; GFX11-SDAG-NEXT: v_min_u32_e32 v0, v0, v12716; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]2717;2718; GFX11-GISEL-LABEL: test_vector_reduce_umin_v16i32:2719; GFX11-GISEL: ; %bb.0: ; %entry2720; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2721; GFX11-GISEL-NEXT: v_min_u32_e32 v0, v0, v82722; GFX11-GISEL-NEXT: v_min_u32_e32 v1, v1, v92723; GFX11-GISEL-NEXT: v_min_u32_e32 v2, v2, v102724; GFX11-GISEL-NEXT: v_min_u32_e32 v3, v3, v112725; GFX11-GISEL-NEXT: v_min_u32_e32 v4, v4, v122726; GFX11-GISEL-NEXT: v_min_u32_e32 v5, v5, v132727; GFX11-GISEL-NEXT: v_min_u32_e32 v6, v6, v142728; GFX11-GISEL-NEXT: v_min_u32_e32 v7, v7, v152729; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)2730; GFX11-GISEL-NEXT: v_min_u32_e32 v0, v0, v42731; GFX11-GISEL-NEXT: v_min_u32_e32 v1, v1, v52732; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)2733; GFX11-GISEL-NEXT: v_min_u32_e32 v2, v2, v62734; GFX11-GISEL-NEXT: v_min_u32_e32 v3, v3, v72735; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2736; GFX11-GISEL-NEXT: v_min_u32_e32 v0, v0, v22737; GFX11-GISEL-NEXT: v_min_u32_e32 v1, v1, v32738; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2739; GFX11-GISEL-NEXT: v_min_u32_e32 v0, v0, v12740; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2741;2742; GFX12-SDAG-LABEL: test_vector_reduce_umin_v16i32:2743; GFX12-SDAG: ; %bb.0: ; %entry2744; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x02745; GFX12-SDAG-NEXT: s_wait_expcnt 0x02746; GFX12-SDAG-NEXT: s_wait_samplecnt 0x02747; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x02748; GFX12-SDAG-NEXT: s_wait_kmcnt 0x02749; GFX12-SDAG-NEXT: v_min_u32_e32 v7, v7, v152750; GFX12-SDAG-NEXT: v_min_u32_e32 v6, v6, v142751; GFX12-SDAG-NEXT: v_min_u32_e32 v4, v4, v122752; GFX12-SDAG-NEXT: v_min_u32_e32 v0, v0, v82753; GFX12-SDAG-NEXT: v_min_u32_e32 v5, v5, v132754; GFX12-SDAG-NEXT: v_min_u32_e32 v1, v1, v92755; GFX12-SDAG-NEXT: v_min3_u32 v3, v3, v11, v72756; GFX12-SDAG-NEXT: v_min3_u32 v2, v2, v10, v62757; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2758; GFX12-SDAG-NEXT: v_min3_u32 v1, v1, v5, v32759; GFX12-SDAG-NEXT: v_min3_u32 v0, v0, v4, v22760; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)2761; GFX12-SDAG-NEXT: v_min_u32_e32 v0, v0, v12762; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]2763;2764; GFX12-GISEL-LABEL: test_vector_reduce_umin_v16i32:2765; GFX12-GISEL: ; %bb.0: ; %entry2766; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02767; GFX12-GISEL-NEXT: s_wait_expcnt 0x02768; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02769; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02770; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02771; GFX12-GISEL-NEXT: v_min_u32_e32 v0, v0, v82772; GFX12-GISEL-NEXT: v_min_u32_e32 v1, v1, v92773; GFX12-GISEL-NEXT: v_min_u32_e32 v2, v2, v102774; GFX12-GISEL-NEXT: v_min_u32_e32 v3, v3, v112775; GFX12-GISEL-NEXT: v_min_u32_e32 v4, v4, v122776; GFX12-GISEL-NEXT: v_min_u32_e32 v5, v5, v132777; GFX12-GISEL-NEXT: v_min_u32_e32 v6, v6, v142778; GFX12-GISEL-NEXT: v_min_u32_e32 v7, v7, v152779; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)2780; GFX12-GISEL-NEXT: v_min_u32_e32 v0, v0, v42781; GFX12-GISEL-NEXT: v_min_u32_e32 v1, v1, v52782; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)2783; GFX12-GISEL-NEXT: v_min_u32_e32 v2, v2, v62784; GFX12-GISEL-NEXT: v_min_u32_e32 v3, v3, v72785; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2786; GFX12-GISEL-NEXT: v_min_u32_e32 v0, v0, v22787; GFX12-GISEL-NEXT: v_min_u32_e32 v1, v1, v32788; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2789; GFX12-GISEL-NEXT: v_min_u32_e32 v0, v0, v12790; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2791entry:2792 %res = call i32 @llvm.vector.reduce.umin.v16i32(<16 x i32> %v)2793 ret i32 %res2794}2795 2796define i64 @test_vector_reduce_umin_v2i64(<2 x i64> %v) {2797; GFX7-LABEL: test_vector_reduce_umin_v2i64:2798; GFX7: ; %bb.0: ; %entry2799; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2800; GFX7-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]2801; GFX7-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc2802; GFX7-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc2803; GFX7-NEXT: s_setpc_b64 s[30:31]2804;2805; GFX8-LABEL: test_vector_reduce_umin_v2i64:2806; GFX8: ; %bb.0: ; %entry2807; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2808; GFX8-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]2809; GFX8-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc2810; GFX8-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc2811; GFX8-NEXT: s_setpc_b64 s[30:31]2812;2813; GFX9-LABEL: test_vector_reduce_umin_v2i64:2814; GFX9: ; %bb.0: ; %entry2815; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2816; GFX9-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]2817; GFX9-NEXT: s_nop 12818; GFX9-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc2819; GFX9-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc2820; GFX9-NEXT: s_setpc_b64 s[30:31]2821;2822; GFX10-LABEL: test_vector_reduce_umin_v2i64:2823; GFX10: ; %bb.0: ; %entry2824; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2825; GFX10-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]2826; GFX10-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc_lo2827; GFX10-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo2828; GFX10-NEXT: s_setpc_b64 s[30:31]2829;2830; GFX11-LABEL: test_vector_reduce_umin_v2i64:2831; GFX11: ; %bb.0: ; %entry2832; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2833; GFX11-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]2834; GFX11-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v12835; GFX11-NEXT: s_setpc_b64 s[30:31]2836;2837; GFX12-LABEL: test_vector_reduce_umin_v2i64:2838; GFX12: ; %bb.0: ; %entry2839; GFX12-NEXT: s_wait_loadcnt_dscnt 0x02840; GFX12-NEXT: s_wait_expcnt 0x02841; GFX12-NEXT: s_wait_samplecnt 0x02842; GFX12-NEXT: s_wait_bvhcnt 0x02843; GFX12-NEXT: s_wait_kmcnt 0x02844; GFX12-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]2845; GFX12-NEXT: s_wait_alu depctr_va_vcc(0)2846; GFX12-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v12847; GFX12-NEXT: s_setpc_b64 s[30:31]2848entry:2849 %res = call i64 @llvm.vector.reduce.umin.v2i64(<2 x i64> %v)2850 ret i64 %res2851}2852 2853define i64 @test_vector_reduce_umin_v3i64(<3 x i64> %v) {2854; GFX7-SDAG-LABEL: test_vector_reduce_umin_v3i64:2855; GFX7-SDAG: ; %bb.0: ; %entry2856; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2857; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]2858; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc2859; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc2860; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[4:5]2861; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc2862; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc2863; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]2864;2865; GFX7-GISEL-LABEL: test_vector_reduce_umin_v3i64:2866; GFX7-GISEL: ; %bb.0: ; %entry2867; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2868; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]2869; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc2870; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc2871; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[4:5]2872; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc2873; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc2874; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]2875;2876; GFX8-SDAG-LABEL: test_vector_reduce_umin_v3i64:2877; GFX8-SDAG: ; %bb.0: ; %entry2878; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2879; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]2880; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc2881; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc2882; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[4:5]2883; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc2884; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc2885; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]2886;2887; GFX8-GISEL-LABEL: test_vector_reduce_umin_v3i64:2888; GFX8-GISEL: ; %bb.0: ; %entry2889; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2890; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]2891; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc2892; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc2893; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[4:5]2894; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc2895; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc2896; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]2897;2898; GFX9-SDAG-LABEL: test_vector_reduce_umin_v3i64:2899; GFX9-SDAG: ; %bb.0: ; %entry2900; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2901; GFX9-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]2902; GFX9-SDAG-NEXT: s_nop 12903; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc2904; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc2905; GFX9-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[4:5]2906; GFX9-SDAG-NEXT: s_nop 12907; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc2908; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc2909; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]2910;2911; GFX9-GISEL-LABEL: test_vector_reduce_umin_v3i64:2912; GFX9-GISEL: ; %bb.0: ; %entry2913; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2914; GFX9-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]2915; GFX9-GISEL-NEXT: s_nop 12916; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc2917; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc2918; GFX9-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[4:5]2919; GFX9-GISEL-NEXT: s_nop 12920; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc2921; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc2922; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2923;2924; GFX10-SDAG-LABEL: test_vector_reduce_umin_v3i64:2925; GFX10-SDAG: ; %bb.0: ; %entry2926; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2927; GFX10-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]2928; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo2929; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc_lo2930; GFX10-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[4:5]2931; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc_lo2932; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc_lo2933; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]2934;2935; GFX10-GISEL-LABEL: test_vector_reduce_umin_v3i64:2936; GFX10-GISEL: ; %bb.0: ; %entry2937; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2938; GFX10-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]2939; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc_lo2940; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo2941; GFX10-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[4:5]2942; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc_lo2943; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc_lo2944; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]2945;2946; GFX11-SDAG-LABEL: test_vector_reduce_umin_v3i64:2947; GFX11-SDAG: ; %bb.0: ; %entry2948; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2949; GFX11-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]2950; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v1, v3, v1 :: v_dual_cndmask_b32 v0, v2, v02951; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)2952; GFX11-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[4:5]2953; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v12954; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]2955;2956; GFX11-GISEL-LABEL: test_vector_reduce_umin_v3i64:2957; GFX11-GISEL: ; %bb.0: ; %entry2958; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2959; GFX11-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]2960; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v12961; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2962; GFX11-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[4:5]2963; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v12964; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2965;2966; GFX12-SDAG-LABEL: test_vector_reduce_umin_v3i64:2967; GFX12-SDAG: ; %bb.0: ; %entry2968; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x02969; GFX12-SDAG-NEXT: s_wait_expcnt 0x02970; GFX12-SDAG-NEXT: s_wait_samplecnt 0x02971; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x02972; GFX12-SDAG-NEXT: s_wait_kmcnt 0x02973; GFX12-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]2974; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)2975; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v1, v3, v1 :: v_dual_cndmask_b32 v0, v2, v02976; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)2977; GFX12-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[4:5]2978; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)2979; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v12980; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]2981;2982; GFX12-GISEL-LABEL: test_vector_reduce_umin_v3i64:2983; GFX12-GISEL: ; %bb.0: ; %entry2984; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02985; GFX12-GISEL-NEXT: s_wait_expcnt 0x02986; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02987; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02988; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02989; GFX12-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]2990; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)2991; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v12992; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2993; GFX12-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[4:5]2994; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)2995; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v12996; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2997entry:2998 %res = call i64 @llvm.vector.reduce.umin.v3i64(<3 x i64> %v)2999 ret i64 %res3000}3001 3002define i64 @test_vector_reduce_umin_v4i64(<4 x i64> %v) {3003; GFX7-SDAG-LABEL: test_vector_reduce_umin_v4i64:3004; GFX7-SDAG: ; %bb.0: ; %entry3005; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3006; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[6:7]3007; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3008; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3009; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[4:5]3010; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3011; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3012; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]3013; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3014; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3015; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]3016;3017; GFX7-GISEL-LABEL: test_vector_reduce_umin_v4i64:3018; GFX7-GISEL: ; %bb.0: ; %entry3019; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3020; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[4:5]3021; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3022; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3023; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[6:7]3024; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3025; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3026; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]3027; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3028; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3029; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]3030;3031; GFX8-SDAG-LABEL: test_vector_reduce_umin_v4i64:3032; GFX8-SDAG: ; %bb.0: ; %entry3033; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3034; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[6:7]3035; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3036; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3037; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[4:5]3038; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3039; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3040; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]3041; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3042; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3043; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]3044;3045; GFX8-GISEL-LABEL: test_vector_reduce_umin_v4i64:3046; GFX8-GISEL: ; %bb.0: ; %entry3047; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3048; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[4:5]3049; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3050; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3051; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[6:7]3052; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3053; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3054; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]3055; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3056; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3057; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]3058;3059; GFX9-SDAG-LABEL: test_vector_reduce_umin_v4i64:3060; GFX9-SDAG: ; %bb.0: ; %entry3061; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3062; GFX9-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[6:7]3063; GFX9-SDAG-NEXT: s_nop 13064; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3065; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3066; GFX9-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[4:5]3067; GFX9-SDAG-NEXT: s_nop 13068; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3069; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3070; GFX9-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]3071; GFX9-SDAG-NEXT: s_nop 13072; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3073; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3074; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]3075;3076; GFX9-GISEL-LABEL: test_vector_reduce_umin_v4i64:3077; GFX9-GISEL: ; %bb.0: ; %entry3078; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3079; GFX9-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[4:5]3080; GFX9-GISEL-NEXT: s_nop 13081; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3082; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3083; GFX9-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[6:7]3084; GFX9-GISEL-NEXT: s_nop 13085; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3086; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3087; GFX9-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]3088; GFX9-GISEL-NEXT: s_nop 13089; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3090; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3091; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]3092;3093; GFX10-SDAG-LABEL: test_vector_reduce_umin_v4i64:3094; GFX10-SDAG: ; %bb.0: ; %entry3095; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3096; GFX10-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[2:3], v[6:7]3097; GFX10-SDAG-NEXT: v_cmp_lt_u64_e64 s4, v[0:1], v[4:5]3098; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc_lo3099; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc_lo3100; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v1, v5, v1, s43101; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v0, v4, v0, s43102; GFX10-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]3103; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc_lo3104; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo3105; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]3106;3107; GFX10-GISEL-LABEL: test_vector_reduce_umin_v4i64:3108; GFX10-GISEL: ; %bb.0: ; %entry3109; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3110; GFX10-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[4:5]3111; GFX10-GISEL-NEXT: v_cmp_lt_u64_e64 s4, v[2:3], v[6:7]3112; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc_lo3113; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc_lo3114; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v2, v6, v2, s43115; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v3, v7, v3, s43116; GFX10-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]3117; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc_lo3118; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo3119; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]3120;3121; GFX11-SDAG-LABEL: test_vector_reduce_umin_v4i64:3122; GFX11-SDAG: ; %bb.0: ; %entry3123; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3124; GFX11-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[2:3], v[6:7]3125; GFX11-SDAG-NEXT: v_cmp_lt_u64_e64 s0, v[0:1], v[4:5]3126; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v3, v7, v3 :: v_dual_cndmask_b32 v2, v6, v23127; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)3128; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v1, v5, v1, s03129; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v0, v4, v0, s03130; GFX11-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]3131; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13132; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]3133;3134; GFX11-GISEL-LABEL: test_vector_reduce_umin_v4i64:3135; GFX11-GISEL: ; %bb.0: ; %entry3136; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3137; GFX11-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[4:5]3138; GFX11-GISEL-NEXT: v_cmp_lt_u64_e64 s0, v[2:3], v[6:7]3139; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v13140; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)3141; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v2, v6, v2, s03142; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v3, v7, v3, s03143; GFX11-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]3144; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13145; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]3146;3147; GFX12-SDAG-LABEL: test_vector_reduce_umin_v4i64:3148; GFX12-SDAG: ; %bb.0: ; %entry3149; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x03150; GFX12-SDAG-NEXT: s_wait_expcnt 0x03151; GFX12-SDAG-NEXT: s_wait_samplecnt 0x03152; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x03153; GFX12-SDAG-NEXT: s_wait_kmcnt 0x03154; GFX12-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[2:3], v[6:7]3155; GFX12-SDAG-NEXT: v_cmp_lt_u64_e64 s0, v[0:1], v[4:5]3156; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)3157; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v3, v7, v3 :: v_dual_cndmask_b32 v2, v6, v23158; GFX12-SDAG-NEXT: s_wait_alu depctr_va_sdst(0)3159; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)3160; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v1, v5, v1, s03161; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v0, v4, v0, s03162; GFX12-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]3163; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)3164; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13165; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]3166;3167; GFX12-GISEL-LABEL: test_vector_reduce_umin_v4i64:3168; GFX12-GISEL: ; %bb.0: ; %entry3169; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x03170; GFX12-GISEL-NEXT: s_wait_expcnt 0x03171; GFX12-GISEL-NEXT: s_wait_samplecnt 0x03172; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x03173; GFX12-GISEL-NEXT: s_wait_kmcnt 0x03174; GFX12-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[4:5]3175; GFX12-GISEL-NEXT: v_cmp_lt_u64_e64 s0, v[2:3], v[6:7]3176; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)3177; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v13178; GFX12-GISEL-NEXT: s_wait_alu depctr_va_sdst(0)3179; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)3180; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v2, v6, v2, s03181; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v3, v7, v3, s03182; GFX12-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]3183; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)3184; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13185; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]3186entry:3187 %res = call i64 @llvm.vector.reduce.umin.v4i64(<4 x i64> %v)3188 ret i64 %res3189}3190 3191define i64 @test_vector_reduce_umin_v8i64(<8 x i64> %v) {3192; GFX7-SDAG-LABEL: test_vector_reduce_umin_v8i64:3193; GFX7-SDAG: ; %bb.0: ; %entry3194; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3195; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[4:5], v[12:13]3196; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v5, v13, v5, vcc3197; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v4, v12, v4, vcc3198; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[8:9]3199; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc3200; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc3201; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[6:7], v[14:15]3202; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v7, v15, v7, vcc3203; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v6, v14, v6, vcc3204; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[10:11]3205; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v3, v11, v3, vcc3206; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v2, v10, v2, vcc3207; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[6:7]3208; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3209; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3210; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[4:5]3211; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3212; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3213; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]3214; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3215; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3216; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]3217;3218; GFX7-GISEL-LABEL: test_vector_reduce_umin_v8i64:3219; GFX7-GISEL: ; %bb.0: ; %entry3220; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3221; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[8:9]3222; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc3223; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc3224; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[10:11]3225; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v2, v10, v2, vcc3226; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v3, v11, v3, vcc3227; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[4:5], v[12:13]3228; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v4, v12, v4, vcc3229; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v5, v13, v5, vcc3230; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[6:7], v[14:15]3231; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v6, v14, v6, vcc3232; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v7, v15, v7, vcc3233; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[4:5]3234; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3235; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3236; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[6:7]3237; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3238; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3239; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]3240; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3241; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3242; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]3243;3244; GFX8-SDAG-LABEL: test_vector_reduce_umin_v8i64:3245; GFX8-SDAG: ; %bb.0: ; %entry3246; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3247; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[4:5], v[12:13]3248; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v5, v13, v5, vcc3249; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v4, v12, v4, vcc3250; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[8:9]3251; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc3252; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc3253; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[6:7], v[14:15]3254; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v7, v15, v7, vcc3255; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v6, v14, v6, vcc3256; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[10:11]3257; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v3, v11, v3, vcc3258; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v2, v10, v2, vcc3259; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[6:7]3260; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3261; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3262; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[4:5]3263; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3264; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3265; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]3266; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3267; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3268; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]3269;3270; GFX8-GISEL-LABEL: test_vector_reduce_umin_v8i64:3271; GFX8-GISEL: ; %bb.0: ; %entry3272; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3273; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[8:9]3274; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc3275; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc3276; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[10:11]3277; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v2, v10, v2, vcc3278; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v3, v11, v3, vcc3279; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[4:5], v[12:13]3280; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v4, v12, v4, vcc3281; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v5, v13, v5, vcc3282; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[6:7], v[14:15]3283; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v6, v14, v6, vcc3284; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v7, v15, v7, vcc3285; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[4:5]3286; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3287; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3288; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[6:7]3289; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3290; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3291; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]3292; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3293; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3294; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]3295;3296; GFX9-SDAG-LABEL: test_vector_reduce_umin_v8i64:3297; GFX9-SDAG: ; %bb.0: ; %entry3298; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3299; GFX9-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[4:5], v[12:13]3300; GFX9-SDAG-NEXT: s_nop 13301; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v5, v13, v5, vcc3302; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v4, v12, v4, vcc3303; GFX9-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[8:9]3304; GFX9-SDAG-NEXT: s_nop 13305; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc3306; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc3307; GFX9-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[6:7], v[14:15]3308; GFX9-SDAG-NEXT: s_nop 13309; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v7, v15, v7, vcc3310; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v6, v14, v6, vcc3311; GFX9-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[10:11]3312; GFX9-SDAG-NEXT: s_nop 13313; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v3, v11, v3, vcc3314; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v2, v10, v2, vcc3315; GFX9-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[6:7]3316; GFX9-SDAG-NEXT: s_nop 13317; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3318; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3319; GFX9-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[4:5]3320; GFX9-SDAG-NEXT: s_nop 13321; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3322; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3323; GFX9-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]3324; GFX9-SDAG-NEXT: s_nop 13325; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3326; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3327; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]3328;3329; GFX9-GISEL-LABEL: test_vector_reduce_umin_v8i64:3330; GFX9-GISEL: ; %bb.0: ; %entry3331; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3332; GFX9-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[8:9]3333; GFX9-GISEL-NEXT: s_nop 13334; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc3335; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc3336; GFX9-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[10:11]3337; GFX9-GISEL-NEXT: s_nop 13338; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v2, v10, v2, vcc3339; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v3, v11, v3, vcc3340; GFX9-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[4:5], v[12:13]3341; GFX9-GISEL-NEXT: s_nop 13342; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v4, v12, v4, vcc3343; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v5, v13, v5, vcc3344; GFX9-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[6:7], v[14:15]3345; GFX9-GISEL-NEXT: s_nop 13346; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v6, v14, v6, vcc3347; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v7, v15, v7, vcc3348; GFX9-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[4:5]3349; GFX9-GISEL-NEXT: s_nop 13350; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3351; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3352; GFX9-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[6:7]3353; GFX9-GISEL-NEXT: s_nop 13354; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3355; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3356; GFX9-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]3357; GFX9-GISEL-NEXT: s_nop 13358; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3359; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3360; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]3361;3362; GFX10-SDAG-LABEL: test_vector_reduce_umin_v8i64:3363; GFX10-SDAG: ; %bb.0: ; %entry3364; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3365; GFX10-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[4:5], v[12:13]3366; GFX10-SDAG-NEXT: v_cmp_lt_u64_e64 s4, v[6:7], v[14:15]3367; GFX10-SDAG-NEXT: v_cmp_lt_u64_e64 s5, v[2:3], v[10:11]3368; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v5, v13, v5, vcc_lo3369; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v4, v12, v4, vcc_lo3370; GFX10-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[8:9]3371; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v7, v15, v7, s43372; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v6, v14, v6, s43373; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v3, v11, v3, s53374; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v2, v10, v2, s53375; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc_lo3376; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc_lo3377; GFX10-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[2:3], v[6:7]3378; GFX10-SDAG-NEXT: v_cmp_lt_u64_e64 s4, v[0:1], v[4:5]3379; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc_lo3380; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc_lo3381; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v1, v5, v1, s43382; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v0, v4, v0, s43383; GFX10-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]3384; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc_lo3385; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo3386; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]3387;3388; GFX10-GISEL-LABEL: test_vector_reduce_umin_v8i64:3389; GFX10-GISEL: ; %bb.0: ; %entry3390; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3391; GFX10-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[8:9]3392; GFX10-GISEL-NEXT: v_cmp_lt_u64_e64 s4, v[2:3], v[10:11]3393; GFX10-GISEL-NEXT: v_cmp_lt_u64_e64 s5, v[4:5], v[12:13]3394; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc_lo3395; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc_lo3396; GFX10-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[6:7], v[14:15]3397; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v2, v10, v2, s43398; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v3, v11, v3, s43399; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v4, v12, v4, s53400; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v5, v13, v5, s53401; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v6, v14, v6, vcc_lo3402; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v7, v15, v7, vcc_lo3403; GFX10-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[4:5]3404; GFX10-GISEL-NEXT: v_cmp_lt_u64_e64 s4, v[2:3], v[6:7]3405; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc_lo3406; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc_lo3407; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v2, v6, v2, s43408; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v3, v7, v3, s43409; GFX10-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]3410; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc_lo3411; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo3412; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]3413;3414; GFX11-SDAG-LABEL: test_vector_reduce_umin_v8i64:3415; GFX11-SDAG: ; %bb.0: ; %entry3416; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3417; GFX11-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[4:5], v[12:13]3418; GFX11-SDAG-NEXT: v_cmp_lt_u64_e64 s0, v[6:7], v[14:15]3419; GFX11-SDAG-NEXT: v_cmp_lt_u64_e64 s1, v[2:3], v[10:11]3420; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v5, v13, v5 :: v_dual_cndmask_b32 v4, v12, v43421; GFX11-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[8:9]3422; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_4) | instid1(VALU_DEP_2)3423; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v7, v15, v7, s03424; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v6, v14, v6, s03425; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v3, v11, v3, s13426; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v2, v10, v2, s13427; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v1, v9, v1 :: v_dual_cndmask_b32 v0, v8, v03428; GFX11-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[2:3], v[6:7]3429; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3430; GFX11-SDAG-NEXT: v_cmp_lt_u64_e64 s0, v[0:1], v[4:5]3431; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v3, v7, v3 :: v_dual_cndmask_b32 v2, v6, v23432; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v1, v5, v1, s03433; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v0, v4, v0, s03434; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)3435; GFX11-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]3436; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13437; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]3438;3439; GFX11-GISEL-LABEL: test_vector_reduce_umin_v8i64:3440; GFX11-GISEL: ; %bb.0: ; %entry3441; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3442; GFX11-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[8:9]3443; GFX11-GISEL-NEXT: v_cmp_lt_u64_e64 s0, v[2:3], v[10:11]3444; GFX11-GISEL-NEXT: v_cmp_lt_u64_e64 s1, v[4:5], v[12:13]3445; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v0, v8, v0 :: v_dual_cndmask_b32 v1, v9, v13446; GFX11-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[6:7], v[14:15]3447; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_4) | instid1(VALU_DEP_2)3448; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v2, v10, v2, s03449; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v3, v11, v3, s03450; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v4, v12, v4, s13451; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v5, v13, v5, s13452; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v6, v14, v6 :: v_dual_cndmask_b32 v7, v15, v73453; GFX11-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[4:5]3454; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3455; GFX11-GISEL-NEXT: v_cmp_lt_u64_e64 s0, v[2:3], v[6:7]3456; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v13457; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v2, v6, v2, s03458; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v3, v7, v3, s03459; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)3460; GFX11-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]3461; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13462; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]3463;3464; GFX12-SDAG-LABEL: test_vector_reduce_umin_v8i64:3465; GFX12-SDAG: ; %bb.0: ; %entry3466; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x03467; GFX12-SDAG-NEXT: s_wait_expcnt 0x03468; GFX12-SDAG-NEXT: s_wait_samplecnt 0x03469; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x03470; GFX12-SDAG-NEXT: s_wait_kmcnt 0x03471; GFX12-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[4:5], v[12:13]3472; GFX12-SDAG-NEXT: v_cmp_lt_u64_e64 s0, v[6:7], v[14:15]3473; GFX12-SDAG-NEXT: v_cmp_lt_u64_e64 s1, v[2:3], v[10:11]3474; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)3475; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v5, v13, v5 :: v_dual_cndmask_b32 v4, v12, v43476; GFX12-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[8:9]3477; GFX12-SDAG-NEXT: s_wait_alu depctr_va_sdst(0)3478; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v7, v15, v7, s03479; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v6, v14, v6, s03480; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v3, v11, v3, s13481; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v2, v10, v2, s13482; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)3483; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v1, v9, v1 :: v_dual_cndmask_b32 v0, v8, v03484; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)3485; GFX12-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[2:3], v[6:7]3486; GFX12-SDAG-NEXT: v_cmp_lt_u64_e64 s0, v[0:1], v[4:5]3487; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)3488; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v3, v7, v3 :: v_dual_cndmask_b32 v2, v6, v23489; GFX12-SDAG-NEXT: s_wait_alu depctr_va_sdst(0)3490; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)3491; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v1, v5, v1, s03492; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v0, v4, v0, s03493; GFX12-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]3494; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)3495; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13496; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]3497;3498; GFX12-GISEL-LABEL: test_vector_reduce_umin_v8i64:3499; GFX12-GISEL: ; %bb.0: ; %entry3500; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x03501; GFX12-GISEL-NEXT: s_wait_expcnt 0x03502; GFX12-GISEL-NEXT: s_wait_samplecnt 0x03503; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x03504; GFX12-GISEL-NEXT: s_wait_kmcnt 0x03505; GFX12-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[8:9]3506; GFX12-GISEL-NEXT: v_cmp_lt_u64_e64 s0, v[2:3], v[10:11]3507; GFX12-GISEL-NEXT: v_cmp_lt_u64_e64 s1, v[4:5], v[12:13]3508; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)3509; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v0, v8, v0 :: v_dual_cndmask_b32 v1, v9, v13510; GFX12-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[6:7], v[14:15]3511; GFX12-GISEL-NEXT: s_wait_alu depctr_va_sdst(0)3512; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v2, v10, v2, s03513; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v3, v11, v3, s03514; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v4, v12, v4, s13515; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v5, v13, v5, s13516; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)3517; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v6, v14, v6 :: v_dual_cndmask_b32 v7, v15, v73518; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)3519; GFX12-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[4:5]3520; GFX12-GISEL-NEXT: v_cmp_lt_u64_e64 s0, v[2:3], v[6:7]3521; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)3522; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v13523; GFX12-GISEL-NEXT: s_wait_alu depctr_va_sdst(0)3524; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)3525; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v2, v6, v2, s03526; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v3, v7, v3, s03527; GFX12-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]3528; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)3529; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13530; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]3531entry:3532 %res = call i64 @llvm.vector.reduce.umin.v8i64(<8 x i64> %v)3533 ret i64 %res3534}3535 3536define i64 @test_vector_reduce_umin_v16i64(<16 x i64> %v) {3537; GFX7-SDAG-LABEL: test_vector_reduce_umin_v16i64:3538; GFX7-SDAG: ; %bb.0: ; %entry3539; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3540; GFX7-SDAG-NEXT: buffer_load_dword v31, off, s[0:3], s323541; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[8:9], v[24:25]3542; GFX7-SDAG-NEXT: v_cmp_lt_u64_e64 s[4:5], v[10:11], v[26:27]3543; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v9, v25, v9, vcc3544; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v8, v24, v8, vcc3545; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[16:17]3546; GFX7-SDAG-NEXT: v_cndmask_b32_e64 v11, v27, v11, s[4:5]3547; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v1, v17, v1, vcc3548; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v0, v16, v0, vcc3549; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[12:13], v[28:29]3550; GFX7-SDAG-NEXT: v_cndmask_b32_e64 v10, v26, v10, s[4:5]3551; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v13, v29, v13, vcc3552; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v12, v28, v12, vcc3553; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[4:5], v[20:21]3554; GFX7-SDAG-NEXT: v_cmp_lt_u64_e64 s[6:7], v[0:1], v[8:9]3555; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v5, v21, v5, vcc3556; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v4, v20, v4, vcc3557; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[6:7], v[22:23]3558; GFX7-SDAG-NEXT: v_cmp_lt_u64_e64 s[4:5], v[4:5], v[12:13]3559; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v7, v23, v7, vcc3560; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v6, v22, v6, vcc3561; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[18:19]3562; GFX7-SDAG-NEXT: v_cndmask_b32_e64 v5, v13, v5, s[4:5]3563; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v3, v19, v3, vcc3564; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v2, v18, v2, vcc3565; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[10:11]3566; GFX7-SDAG-NEXT: v_cndmask_b32_e64 v1, v9, v1, s[6:7]3567; GFX7-SDAG-NEXT: v_cndmask_b32_e64 v4, v12, v4, s[4:5]3568; GFX7-SDAG-NEXT: v_cndmask_b32_e64 v0, v8, v0, s[6:7]3569; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v3, v11, v3, vcc3570; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v2, v10, v2, vcc3571; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[4:5]3572; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3573; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3574; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)3575; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[14:15], v[30:31]3576; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v5, v31, v15, vcc3577; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v4, v30, v14, vcc3578; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[6:7], v[4:5]3579; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v5, v5, v7, vcc3580; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v4, v4, v6, vcc3581; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[4:5]3582; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc3583; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc3584; GFX7-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]3585; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3586; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3587; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]3588;3589; GFX7-GISEL-LABEL: test_vector_reduce_umin_v16i64:3590; GFX7-GISEL: ; %bb.0: ; %entry3591; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3592; GFX7-GISEL-NEXT: buffer_load_dword v31, off, s[0:3], s323593; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[16:17]3594; GFX7-GISEL-NEXT: v_cmp_lt_u64_e64 s[4:5], v[10:11], v[26:27]3595; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v0, v16, v0, vcc3596; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v1, v17, v1, vcc3597; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[18:19]3598; GFX7-GISEL-NEXT: v_cndmask_b32_e64 v10, v26, v10, s[4:5]3599; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v2, v18, v2, vcc3600; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v3, v19, v3, vcc3601; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[4:5], v[20:21]3602; GFX7-GISEL-NEXT: v_cndmask_b32_e64 v11, v27, v11, s[4:5]3603; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v4, v20, v4, vcc3604; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v5, v21, v5, vcc3605; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[6:7], v[22:23]3606; GFX7-GISEL-NEXT: v_cmp_lt_u64_e64 s[4:5], v[2:3], v[10:11]3607; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v6, v22, v6, vcc3608; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v7, v23, v7, vcc3609; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[8:9], v[24:25]3610; GFX7-GISEL-NEXT: v_cndmask_b32_e64 v2, v10, v2, s[4:5]3611; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v8, v24, v8, vcc3612; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v9, v25, v9, vcc3613; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[12:13], v[28:29]3614; GFX7-GISEL-NEXT: v_cndmask_b32_e64 v3, v11, v3, s[4:5]3615; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v12, v28, v12, vcc3616; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v13, v29, v13, vcc3617; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[8:9]3618; GFX7-GISEL-NEXT: v_cmp_lt_u64_e64 s[6:7], v[4:5], v[12:13]3619; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc3620; GFX7-GISEL-NEXT: v_cndmask_b32_e64 v4, v12, v4, s[6:7]3621; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc3622; GFX7-GISEL-NEXT: v_cndmask_b32_e64 v5, v13, v5, s[6:7]3623; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[4:5]3624; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3625; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3626; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)3627; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[14:15], v[30:31]3628; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v4, v30, v14, vcc3629; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v5, v31, v15, vcc3630; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[6:7], v[4:5]3631; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v4, v4, v6, vcc3632; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v5, v5, v7, vcc3633; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[4:5]3634; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc3635; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc3636; GFX7-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]3637; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3638; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3639; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]3640;3641; GFX8-SDAG-LABEL: test_vector_reduce_umin_v16i64:3642; GFX8-SDAG: ; %bb.0: ; %entry3643; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3644; GFX8-SDAG-NEXT: buffer_load_dword v31, off, s[0:3], s323645; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[8:9], v[24:25]3646; GFX8-SDAG-NEXT: v_cmp_lt_u64_e64 s[4:5], v[10:11], v[26:27]3647; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v9, v25, v9, vcc3648; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v8, v24, v8, vcc3649; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[16:17]3650; GFX8-SDAG-NEXT: v_cndmask_b32_e64 v11, v27, v11, s[4:5]3651; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v1, v17, v1, vcc3652; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v0, v16, v0, vcc3653; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[12:13], v[28:29]3654; GFX8-SDAG-NEXT: v_cndmask_b32_e64 v10, v26, v10, s[4:5]3655; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v13, v29, v13, vcc3656; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v12, v28, v12, vcc3657; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[4:5], v[20:21]3658; GFX8-SDAG-NEXT: v_cmp_lt_u64_e64 s[6:7], v[0:1], v[8:9]3659; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v5, v21, v5, vcc3660; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v4, v20, v4, vcc3661; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[6:7], v[22:23]3662; GFX8-SDAG-NEXT: v_cmp_lt_u64_e64 s[4:5], v[4:5], v[12:13]3663; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v7, v23, v7, vcc3664; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v6, v22, v6, vcc3665; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[18:19]3666; GFX8-SDAG-NEXT: v_cndmask_b32_e64 v5, v13, v5, s[4:5]3667; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v3, v19, v3, vcc3668; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v2, v18, v2, vcc3669; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[10:11]3670; GFX8-SDAG-NEXT: v_cndmask_b32_e64 v1, v9, v1, s[6:7]3671; GFX8-SDAG-NEXT: v_cndmask_b32_e64 v4, v12, v4, s[4:5]3672; GFX8-SDAG-NEXT: v_cndmask_b32_e64 v0, v8, v0, s[6:7]3673; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v3, v11, v3, vcc3674; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v2, v10, v2, vcc3675; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[4:5]3676; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3677; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3678; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0)3679; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[14:15], v[30:31]3680; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v5, v31, v15, vcc3681; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v4, v30, v14, vcc3682; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[6:7], v[4:5]3683; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v5, v5, v7, vcc3684; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v4, v4, v6, vcc3685; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[4:5]3686; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc3687; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc3688; GFX8-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]3689; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3690; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3691; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]3692;3693; GFX8-GISEL-LABEL: test_vector_reduce_umin_v16i64:3694; GFX8-GISEL: ; %bb.0: ; %entry3695; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3696; GFX8-GISEL-NEXT: buffer_load_dword v31, off, s[0:3], s323697; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[16:17]3698; GFX8-GISEL-NEXT: v_cmp_lt_u64_e64 s[4:5], v[10:11], v[26:27]3699; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v0, v16, v0, vcc3700; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v1, v17, v1, vcc3701; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[18:19]3702; GFX8-GISEL-NEXT: v_cndmask_b32_e64 v10, v26, v10, s[4:5]3703; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v2, v18, v2, vcc3704; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v3, v19, v3, vcc3705; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[4:5], v[20:21]3706; GFX8-GISEL-NEXT: v_cndmask_b32_e64 v11, v27, v11, s[4:5]3707; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v4, v20, v4, vcc3708; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v5, v21, v5, vcc3709; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[6:7], v[22:23]3710; GFX8-GISEL-NEXT: v_cmp_lt_u64_e64 s[4:5], v[2:3], v[10:11]3711; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v6, v22, v6, vcc3712; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v7, v23, v7, vcc3713; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[8:9], v[24:25]3714; GFX8-GISEL-NEXT: v_cndmask_b32_e64 v2, v10, v2, s[4:5]3715; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v8, v24, v8, vcc3716; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v9, v25, v9, vcc3717; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[12:13], v[28:29]3718; GFX8-GISEL-NEXT: v_cndmask_b32_e64 v3, v11, v3, s[4:5]3719; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v12, v28, v12, vcc3720; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v13, v29, v13, vcc3721; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[8:9]3722; GFX8-GISEL-NEXT: v_cmp_lt_u64_e64 s[6:7], v[4:5], v[12:13]3723; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc3724; GFX8-GISEL-NEXT: v_cndmask_b32_e64 v4, v12, v4, s[6:7]3725; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc3726; GFX8-GISEL-NEXT: v_cndmask_b32_e64 v5, v13, v5, s[6:7]3727; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[4:5]3728; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3729; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3730; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)3731; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[14:15], v[30:31]3732; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v4, v30, v14, vcc3733; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v5, v31, v15, vcc3734; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[6:7], v[4:5]3735; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v4, v4, v6, vcc3736; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v5, v5, v7, vcc3737; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[4:5]3738; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc3739; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc3740; GFX8-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]3741; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3742; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3743; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]3744;3745; GFX9-SDAG-LABEL: test_vector_reduce_umin_v16i64:3746; GFX9-SDAG: ; %bb.0: ; %entry3747; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3748; GFX9-SDAG-NEXT: scratch_load_dword v31, off, s323749; GFX9-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[8:9], v[24:25]3750; GFX9-SDAG-NEXT: v_cmp_lt_u64_e64 s[0:1], v[0:1], v[16:17]3751; GFX9-SDAG-NEXT: v_cmp_lt_u64_e64 s[2:3], v[12:13], v[28:29]3752; GFX9-SDAG-NEXT: v_cmp_lt_u64_e64 s[4:5], v[4:5], v[20:21]3753; GFX9-SDAG-NEXT: v_cmp_lt_u64_e64 s[6:7], v[6:7], v[22:23]3754; GFX9-SDAG-NEXT: v_cmp_lt_u64_e64 s[8:9], v[10:11], v[26:27]3755; GFX9-SDAG-NEXT: v_cmp_lt_u64_e64 s[10:11], v[2:3], v[18:19]3756; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v9, v25, v9, vcc3757; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v1, v17, v1, s[0:1]3758; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v13, v29, v13, s[2:3]3759; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v17, v21, v5, s[4:5]3760; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v5, v23, v7, s[6:7]3761; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v7, v27, v11, s[8:9]3762; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v3, v19, v3, s[10:11]3763; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v8, v24, v8, vcc3764; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v0, v16, v0, s[0:1]3765; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v12, v28, v12, s[2:3]3766; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v16, v20, v4, s[4:5]3767; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v4, v22, v6, s[6:7]3768; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v6, v26, v10, s[8:9]3769; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v2, v18, v2, s[10:11]3770; GFX9-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[6:7]3771; GFX9-SDAG-NEXT: v_cmp_lt_u64_e64 s[0:1], v[16:17], v[12:13]3772; GFX9-SDAG-NEXT: v_cmp_lt_u64_e64 s[2:3], v[0:1], v[8:9]3773; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3774; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v7, v13, v17, s[0:1]3775; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v1, v9, v1, s[2:3]3776; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3777; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v6, v12, v16, s[0:1]3778; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v0, v8, v0, s[2:3]3779; GFX9-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[6:7]3780; GFX9-SDAG-NEXT: s_nop 13781; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v1, v7, v1, vcc3782; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v0, v6, v0, vcc3783; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0)3784; GFX9-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[14:15], v[30:31]3785; GFX9-SDAG-NEXT: s_nop 13786; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v7, v31, v15, vcc3787; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v6, v30, v14, vcc3788; GFX9-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[4:5], v[6:7]3789; GFX9-SDAG-NEXT: s_nop 13790; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v5, v7, v5, vcc3791; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc3792; GFX9-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[4:5]3793; GFX9-SDAG-NEXT: s_nop 13794; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc3795; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc3796; GFX9-SDAG-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]3797; GFX9-SDAG-NEXT: s_nop 13798; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3799; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3800; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]3801;3802; GFX9-GISEL-LABEL: test_vector_reduce_umin_v16i64:3803; GFX9-GISEL: ; %bb.0: ; %entry3804; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3805; GFX9-GISEL-NEXT: scratch_load_dword v31, off, s323806; GFX9-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[16:17]3807; GFX9-GISEL-NEXT: v_cmp_lt_u64_e64 s[2:3], v[4:5], v[20:21]3808; GFX9-GISEL-NEXT: v_cmp_lt_u64_e64 s[6:7], v[8:9], v[24:25]3809; GFX9-GISEL-NEXT: v_cmp_lt_u64_e64 s[10:11], v[12:13], v[28:29]3810; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v0, v16, v0, vcc3811; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v4, v20, v4, s[2:3]3812; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v8, v24, v8, s[6:7]3813; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v12, v28, v12, s[10:11]3814; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v1, v17, v1, vcc3815; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v5, v21, v5, s[2:3]3816; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v9, v25, v9, s[6:7]3817; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v13, v29, v13, s[10:11]3818; GFX9-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[8:9]3819; GFX9-GISEL-NEXT: v_cmp_lt_u64_e64 s[2:3], v[4:5], v[12:13]3820; GFX9-GISEL-NEXT: v_cmp_lt_u64_e64 s[0:1], v[2:3], v[18:19]3821; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc3822; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v4, v12, v4, s[2:3]3823; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc3824; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v5, v13, v5, s[2:3]3825; GFX9-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[4:5]3826; GFX9-GISEL-NEXT: v_cmp_lt_u64_e64 s[4:5], v[6:7], v[22:23]3827; GFX9-GISEL-NEXT: v_cmp_lt_u64_e64 s[8:9], v[10:11], v[26:27]3828; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3829; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3830; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v2, v18, v2, s[0:1]3831; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v6, v22, v6, s[4:5]3832; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v10, v26, v10, s[8:9]3833; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v3, v19, v3, s[0:1]3834; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v7, v23, v7, s[4:5]3835; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v11, v27, v11, s[8:9]3836; GFX9-GISEL-NEXT: v_cmp_lt_u64_e64 s[0:1], v[2:3], v[10:11]3837; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)3838; GFX9-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[14:15], v[30:31]3839; GFX9-GISEL-NEXT: s_nop 13840; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v4, v30, v14, vcc3841; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v5, v31, v15, vcc3842; GFX9-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[6:7], v[4:5]3843; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v2, v10, v2, s[0:1]3844; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v3, v11, v3, s[0:1]3845; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v4, v4, v6, vcc3846; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v5, v5, v7, vcc3847; GFX9-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[4:5]3848; GFX9-GISEL-NEXT: s_nop 13849; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc3850; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc3851; GFX9-GISEL-NEXT: v_cmp_lt_u64_e32 vcc, v[0:1], v[2:3]3852; GFX9-GISEL-NEXT: s_nop 13853; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3854; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3855; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]3856;3857; GFX10-SDAG-LABEL: test_vector_reduce_umin_v16i64:3858; GFX10-SDAG: ; %bb.0: ; %entry3859; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3860; GFX10-SDAG-NEXT: buffer_load_dword v31, off, s[0:3], s323861; GFX10-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[8:9], v[24:25]3862; GFX10-SDAG-NEXT: v_cmp_lt_u64_e64 s4, v[0:1], v[16:17]3863; GFX10-SDAG-NEXT: v_cmp_lt_u64_e64 s5, v[12:13], v[28:29]3864; GFX10-SDAG-NEXT: v_cmp_lt_u64_e64 s6, v[6:7], v[22:23]3865; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v9, v25, v9, vcc_lo3866; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v8, v24, v8, vcc_lo3867; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v1, v17, v1, s43868; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v0, v16, v0, s43869; GFX10-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[10:11], v[26:27]3870; GFX10-SDAG-NEXT: v_cmp_lt_u64_e64 s4, v[2:3], v[18:19]3871; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v13, v29, v13, s53872; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v12, v28, v12, s53873; GFX10-SDAG-NEXT: v_cmp_lt_u64_e64 s5, v[4:5], v[20:21]3874; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v7, v23, v7, s63875; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v11, v27, v11, vcc_lo3876; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v10, v26, v10, vcc_lo3877; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v3, v19, v3, s43878; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v2, v18, v2, s43879; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v5, v21, v5, s53880; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v4, v20, v4, s53881; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v6, v22, v6, s63882; GFX10-SDAG-NEXT: v_cmp_lt_u64_e64 s5, v[0:1], v[8:9]3883; GFX10-SDAG-NEXT: v_cmp_lt_u64_e64 s4, v[2:3], v[10:11]3884; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v1, v9, v1, s53885; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v3, v11, v3, s43886; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v2, v10, v2, s43887; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v0, v8, v0, s53888; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)3889; GFX10-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[14:15], v[30:31]3890; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v15, v31, v15, vcc_lo3891; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v14, v30, v14, vcc_lo3892; GFX10-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[4:5], v[12:13]3893; GFX10-SDAG-NEXT: v_cmp_lt_u64_e64 s4, v[6:7], v[14:15]3894; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v5, v13, v5, vcc_lo3895; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v4, v12, v4, vcc_lo3896; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v7, v15, v7, s43897; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v6, v14, v6, s43898; GFX10-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[4:5]3899; GFX10-SDAG-NEXT: v_cmp_lt_u64_e64 s4, v[2:3], v[6:7]3900; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc_lo3901; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc_lo3902; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v2, v6, v2, s43903; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v3, v7, v3, s43904; GFX10-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]3905; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc_lo3906; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo3907; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]3908;3909; GFX10-GISEL-LABEL: test_vector_reduce_umin_v16i64:3910; GFX10-GISEL: ; %bb.0: ; %entry3911; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3912; GFX10-GISEL-NEXT: buffer_load_dword v31, off, s[0:3], s323913; GFX10-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[16:17]3914; GFX10-GISEL-NEXT: v_cmp_lt_u64_e64 s4, v[2:3], v[18:19]3915; GFX10-GISEL-NEXT: v_cmp_lt_u64_e64 s5, v[4:5], v[20:21]3916; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v0, v16, v0, vcc_lo3917; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v1, v17, v1, vcc_lo3918; GFX10-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[6:7], v[22:23]3919; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v2, v18, v2, s43920; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v3, v19, v3, s43921; GFX10-GISEL-NEXT: v_cmp_lt_u64_e64 s4, v[8:9], v[24:25]3922; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v4, v20, v4, s53923; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v5, v21, v5, s53924; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v6, v22, v6, vcc_lo3925; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v7, v23, v7, vcc_lo3926; GFX10-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[10:11], v[26:27]3927; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v8, v24, v8, s43928; GFX10-GISEL-NEXT: v_cmp_lt_u64_e64 s5, v[12:13], v[28:29]3929; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v9, v25, v9, s43930; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v10, v26, v10, vcc_lo3931; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v11, v27, v11, vcc_lo3932; GFX10-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[8:9]3933; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v12, v28, v12, s53934; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v13, v29, v13, s53935; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc_lo3936; GFX10-GISEL-NEXT: v_cmp_lt_u64_e64 s5, v[4:5], v[12:13]3937; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc_lo3938; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v4, v12, v4, s53939; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v5, v13, v5, s53940; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)3941; GFX10-GISEL-NEXT: v_cmp_lt_u64_e64 s4, v[14:15], v[30:31]3942; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v14, v30, v14, s43943; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v15, v31, v15, s43944; GFX10-GISEL-NEXT: v_cmp_lt_u64_e64 s4, v[2:3], v[10:11]3945; GFX10-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[6:7], v[14:15]3946; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v2, v10, v2, s43947; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v3, v11, v3, s43948; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v6, v14, v6, vcc_lo3949; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v7, v15, v7, vcc_lo3950; GFX10-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[4:5]3951; GFX10-GISEL-NEXT: v_cmp_lt_u64_e64 s4, v[2:3], v[6:7]3952; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc_lo3953; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc_lo3954; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v2, v6, v2, s43955; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v3, v7, v3, s43956; GFX10-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]3957; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc_lo3958; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo3959; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]3960;3961; GFX11-SDAG-LABEL: test_vector_reduce_umin_v16i64:3962; GFX11-SDAG: ; %bb.0: ; %entry3963; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3964; GFX11-SDAG-NEXT: scratch_load_b32 v31, off, s323965; GFX11-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[8:9], v[24:25]3966; GFX11-SDAG-NEXT: v_cmp_lt_u64_e64 s0, v[0:1], v[16:17]3967; GFX11-SDAG-NEXT: v_cmp_lt_u64_e64 s1, v[12:13], v[28:29]3968; GFX11-SDAG-NEXT: v_cmp_lt_u64_e64 s2, v[6:7], v[22:23]3969; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v9, v25, v9 :: v_dual_cndmask_b32 v8, v24, v83970; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_4)3971; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v1, v17, v1, s03972; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v0, v16, v0, s03973; GFX11-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[10:11], v[26:27]3974; GFX11-SDAG-NEXT: v_cmp_lt_u64_e64 s0, v[2:3], v[18:19]3975; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v13, v29, v13, s13976; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v12, v28, v12, s13977; GFX11-SDAG-NEXT: v_cmp_lt_u64_e64 s1, v[4:5], v[20:21]3978; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v7, v23, v7, s23979; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v11, v27, v11 :: v_dual_cndmask_b32 v10, v26, v103980; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v3, v19, v3, s03981; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v2, v18, v2, s03982; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v5, v21, v5, s13983; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v4, v20, v4, s13984; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v6, v22, v6, s23985; GFX11-SDAG-NEXT: v_cmp_lt_u64_e64 s1, v[0:1], v[8:9]3986; GFX11-SDAG-NEXT: v_cmp_lt_u64_e64 s0, v[2:3], v[10:11]3987; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)3988; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v1, v9, v1, s13989; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v3, v11, v3, s03990; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v2, v10, v2, s03991; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v0, v8, v0, s13992; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)3993; GFX11-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[14:15], v[30:31]3994; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v15, v31, v15 :: v_dual_cndmask_b32 v14, v30, v143995; GFX11-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[4:5], v[12:13]3996; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3997; GFX11-SDAG-NEXT: v_cmp_lt_u64_e64 s0, v[6:7], v[14:15]3998; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v5, v13, v5 :: v_dual_cndmask_b32 v4, v12, v43999; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v7, v15, v7, s04000; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v6, v14, v6, s04001; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)4002; GFX11-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[4:5]4003; GFX11-SDAG-NEXT: v_cmp_lt_u64_e64 s0, v[2:3], v[6:7]4004; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v1, v5, v1 :: v_dual_cndmask_b32 v0, v4, v04005; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)4006; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v2, v6, v2, s04007; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v3, v7, v3, s04008; GFX11-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]4009; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v14010; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]4011;4012; GFX11-GISEL-LABEL: test_vector_reduce_umin_v16i64:4013; GFX11-GISEL: ; %bb.0: ; %entry4014; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4015; GFX11-GISEL-NEXT: scratch_load_b32 v31, off, s324016; GFX11-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[16:17]4017; GFX11-GISEL-NEXT: v_cmp_lt_u64_e64 s0, v[2:3], v[18:19]4018; GFX11-GISEL-NEXT: v_cmp_lt_u64_e64 s1, v[4:5], v[20:21]4019; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v0, v16, v0 :: v_dual_cndmask_b32 v1, v17, v14020; GFX11-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[6:7], v[22:23]4021; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4)4022; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v2, v18, v2, s04023; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v3, v19, v3, s04024; GFX11-GISEL-NEXT: v_cmp_lt_u64_e64 s0, v[8:9], v[24:25]4025; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v4, v20, v4, s14026; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v5, v21, v5, s14027; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v6, v22, v6 :: v_dual_cndmask_b32 v7, v23, v74028; GFX11-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[10:11], v[26:27]4029; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v8, v24, v8, s04030; GFX11-GISEL-NEXT: v_cmp_lt_u64_e64 s1, v[12:13], v[28:29]4031; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v9, v25, v9, s04032; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v10, v26, v10 :: v_dual_cndmask_b32 v11, v27, v114033; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_4)4034; GFX11-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[8:9]4035; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v12, v28, v12, s14036; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v13, v29, v13, s14037; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v0, v8, v0 :: v_dual_cndmask_b32 v1, v9, v14038; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4039; GFX11-GISEL-NEXT: v_cmp_lt_u64_e64 s1, v[4:5], v[12:13]4040; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v4, v12, v4, s14041; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v5, v13, v5, s14042; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)4043; GFX11-GISEL-NEXT: v_cmp_lt_u64_e64 s0, v[14:15], v[30:31]4044; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)4045; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v14, v30, v14, s04046; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v15, v31, v15, s04047; GFX11-GISEL-NEXT: v_cmp_lt_u64_e64 s0, v[2:3], v[10:11]4048; GFX11-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[6:7], v[14:15]4049; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_2)4050; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v2, v10, v2, s04051; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v3, v11, v3, s04052; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v6, v14, v6 :: v_dual_cndmask_b32 v7, v15, v74053; GFX11-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[4:5]4054; GFX11-GISEL-NEXT: v_cmp_lt_u64_e64 s0, v[2:3], v[6:7]4055; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v14056; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)4057; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v2, v6, v2, s04058; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v3, v7, v3, s04059; GFX11-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]4060; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v14061; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]4062;4063; GFX12-SDAG-LABEL: test_vector_reduce_umin_v16i64:4064; GFX12-SDAG: ; %bb.0: ; %entry4065; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x04066; GFX12-SDAG-NEXT: s_wait_expcnt 0x04067; GFX12-SDAG-NEXT: s_wait_samplecnt 0x04068; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x04069; GFX12-SDAG-NEXT: s_wait_kmcnt 0x04070; GFX12-SDAG-NEXT: scratch_load_b32 v31, off, s324071; GFX12-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[8:9], v[24:25]4072; GFX12-SDAG-NEXT: v_cmp_lt_u64_e64 s0, v[0:1], v[16:17]4073; GFX12-SDAG-NEXT: v_cmp_lt_u64_e64 s1, v[12:13], v[28:29]4074; GFX12-SDAG-NEXT: v_cmp_lt_u64_e64 s2, v[6:7], v[22:23]4075; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)4076; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v9, v25, v9 :: v_dual_cndmask_b32 v8, v24, v84077; GFX12-SDAG-NEXT: s_wait_alu depctr_va_sdst(0)4078; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v1, v17, v1, s04079; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v0, v16, v0, s04080; GFX12-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[10:11], v[26:27]4081; GFX12-SDAG-NEXT: v_cmp_lt_u64_e64 s0, v[2:3], v[18:19]4082; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v13, v29, v13, s14083; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v12, v28, v12, s14084; GFX12-SDAG-NEXT: v_cmp_lt_u64_e64 s1, v[4:5], v[20:21]4085; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v7, v23, v7, s24086; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)4087; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v11, v27, v11 :: v_dual_cndmask_b32 v10, v26, v104088; GFX12-SDAG-NEXT: s_wait_alu depctr_va_sdst(0)4089; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v3, v19, v3, s04090; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v2, v18, v2, s04091; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v5, v21, v5, s14092; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v4, v20, v4, s14093; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v6, v22, v6, s24094; GFX12-SDAG-NEXT: v_cmp_lt_u64_e64 s1, v[0:1], v[8:9]4095; GFX12-SDAG-NEXT: v_cmp_lt_u64_e64 s0, v[2:3], v[10:11]4096; GFX12-SDAG-NEXT: s_wait_alu depctr_va_sdst(0)4097; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)4098; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v1, v9, v1, s14099; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v3, v11, v3, s04100; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v2, v10, v2, s04101; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v0, v8, v0, s14102; GFX12-SDAG-NEXT: s_wait_loadcnt 0x04103; GFX12-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[14:15], v[30:31]4104; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)4105; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v15, v31, v15 :: v_dual_cndmask_b32 v14, v30, v144106; GFX12-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[4:5], v[12:13]4107; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_2)4108; GFX12-SDAG-NEXT: v_cmp_lt_u64_e64 s0, v[6:7], v[14:15]4109; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)4110; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v5, v13, v5 :: v_dual_cndmask_b32 v4, v12, v44111; GFX12-SDAG-NEXT: s_wait_alu depctr_va_sdst(0)4112; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v7, v15, v7, s04113; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v6, v14, v6, s04114; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)4115; GFX12-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[4:5]4116; GFX12-SDAG-NEXT: v_cmp_lt_u64_e64 s0, v[2:3], v[6:7]4117; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)4118; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v1, v5, v1 :: v_dual_cndmask_b32 v0, v4, v04119; GFX12-SDAG-NEXT: s_wait_alu depctr_va_sdst(0)4120; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)4121; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v2, v6, v2, s04122; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v3, v7, v3, s04123; GFX12-SDAG-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]4124; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)4125; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v14126; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]4127;4128; GFX12-GISEL-LABEL: test_vector_reduce_umin_v16i64:4129; GFX12-GISEL: ; %bb.0: ; %entry4130; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x04131; GFX12-GISEL-NEXT: s_wait_expcnt 0x04132; GFX12-GISEL-NEXT: s_wait_samplecnt 0x04133; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x04134; GFX12-GISEL-NEXT: s_wait_kmcnt 0x04135; GFX12-GISEL-NEXT: scratch_load_b32 v31, off, s324136; GFX12-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[16:17]4137; GFX12-GISEL-NEXT: v_cmp_lt_u64_e64 s0, v[2:3], v[18:19]4138; GFX12-GISEL-NEXT: v_cmp_lt_u64_e64 s1, v[4:5], v[20:21]4139; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)4140; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v0, v16, v0 :: v_dual_cndmask_b32 v1, v17, v14141; GFX12-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[6:7], v[22:23]4142; GFX12-GISEL-NEXT: s_wait_alu depctr_va_sdst(0)4143; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v2, v18, v2, s04144; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v3, v19, v3, s04145; GFX12-GISEL-NEXT: v_cmp_lt_u64_e64 s0, v[8:9], v[24:25]4146; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v4, v20, v4, s14147; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v5, v21, v5, s14148; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)4149; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v6, v22, v6 :: v_dual_cndmask_b32 v7, v23, v74150; GFX12-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[10:11], v[26:27]4151; GFX12-GISEL-NEXT: s_wait_alu depctr_va_sdst(0)4152; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v8, v24, v8, s04153; GFX12-GISEL-NEXT: v_cmp_lt_u64_e64 s1, v[12:13], v[28:29]4154; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v9, v25, v9, s04155; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)4156; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v10, v26, v10 :: v_dual_cndmask_b32 v11, v27, v114157; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2)4158; GFX12-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[8:9]4159; GFX12-GISEL-NEXT: s_wait_alu depctr_va_sdst(0)4160; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v12, v28, v12, s14161; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v13, v29, v13, s14162; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)4163; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v0, v8, v0 :: v_dual_cndmask_b32 v1, v9, v14164; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)4165; GFX12-GISEL-NEXT: v_cmp_lt_u64_e64 s1, v[4:5], v[12:13]4166; GFX12-GISEL-NEXT: s_wait_alu depctr_va_sdst(0)4167; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v4, v12, v4, s14168; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v5, v13, v5, s14169; GFX12-GISEL-NEXT: s_wait_loadcnt 0x04170; GFX12-GISEL-NEXT: v_cmp_lt_u64_e64 s0, v[14:15], v[30:31]4171; GFX12-GISEL-NEXT: s_wait_alu depctr_va_sdst(0)4172; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)4173; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v14, v30, v14, s04174; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v15, v31, v15, s04175; GFX12-GISEL-NEXT: v_cmp_lt_u64_e64 s0, v[2:3], v[10:11]4176; GFX12-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[6:7], v[14:15]4177; GFX12-GISEL-NEXT: s_wait_alu depctr_va_sdst(0)4178; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(VALU_DEP_2)4179; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v2, v10, v2, s04180; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v3, v11, v3, s04181; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)4182; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v6, v14, v6 :: v_dual_cndmask_b32 v7, v15, v74183; GFX12-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[4:5]4184; GFX12-GISEL-NEXT: v_cmp_lt_u64_e64 s0, v[2:3], v[6:7]4185; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)4186; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v14187; GFX12-GISEL-NEXT: s_wait_alu depctr_va_sdst(0)4188; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)4189; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v2, v6, v2, s04190; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v3, v7, v3, s04191; GFX12-GISEL-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[0:1], v[2:3]4192; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)4193; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v14194; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]4195entry:4196 %res = call i64 @llvm.vector.reduce.umin.v16i64(<16 x i64> %v)4197 ret i64 %res4198}4199 4200declare i8 @llvm.vector.reduce.umin.v2i8(<2 x i8>)4201declare i8 @llvm.vector.reduce.umin.v3i8(<3 x i8>)4202declare i8 @llvm.vector.reduce.umin.v4i8(<4 x i8>)4203declare i8 @llvm.vector.reduce.umin.v8i8(<8 x i8>)4204declare i8 @llvm.vector.reduce.umin.v16i8(<16 x i8>)4205 4206declare i16 @llvm.vector.reduce.umin.v2i16(<2 x i16>)4207declare i16 @llvm.vector.reduce.umin.v3i16(<3 x i16>)4208declare i16 @llvm.vector.reduce.umin.v4i16(<4 x i16>)4209declare i16 @llvm.vector.reduce.umin.v8i16(<8 x i16>)4210declare i16 @llvm.vector.reduce.umin.v16i16(<16 x i16>)4211 4212declare i32 @llvm.vector.reduce.umin.v2i32(<2 x i32>)4213declare i32 @llvm.vector.reduce.umin.v3i32(<3 x i32>)4214declare i32 @llvm.vector.reduce.umin.v4i32(<4 x i32>)4215declare i32 @llvm.vector.reduce.umin.v8i32(<8 x i32>)4216declare i32 @llvm.vector.reduce.umin.v16i32(<16 x i32>)4217 4218declare i64 @llvm.vector.reduce.umin.v2i64(<2 x i64>)4219declare i64 @llvm.vector.reduce.umin.v3i64(<3 x i64>)4220declare i64 @llvm.vector.reduce.umin.v4i64(<4 x i64>)4221declare i64 @llvm.vector.reduce.umin.v8i64(<8 x i64>)4222declare i64 @llvm.vector.reduce.umin.v16i64(<16 x i64>)4223;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:4224; GFX11-GISEL-FAKE16: {{.*}}4225; GFX12-GISEL-FAKE16: {{.*}}4226