4490 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_umax_v2i8(<2 x i8> %v) {21; GFX7-SDAG-LABEL: test_vector_reduce_umax_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_max_u32_e32 v0, v0, v127; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]28;29; GFX7-GISEL-LABEL: test_vector_reduce_umax_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_max_u32_e32 v0, v0, v135; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]36;37; GFX8-LABEL: test_vector_reduce_umax_v2i8:38; GFX8: ; %bb.0: ; %entry39; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)40; GFX8-NEXT: v_max_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_umax_v2i8:44; GFX9: ; %bb.0: ; %entry45; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)46; GFX9-NEXT: v_max_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_umax_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_max_u16 v0, v0, v155; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]56;57; GFX10-GISEL-LABEL: test_vector_reduce_umax_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_max_u16 v0, v0, v163; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]64;65; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_umax_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_max_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_umax_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_max_u16 v0, v0, v181; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]82;83; GFX11-GISEL-LABEL: test_vector_reduce_umax_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_max_u16 v0, v0, v190; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]91;92; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_umax_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_max_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_umax_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_max_u16 v0, v0, v1116; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]117;118; GFX12-GISEL-LABEL: test_vector_reduce_umax_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_max_u16 v0, v0, v1129; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]130entry:131 %res = call i8 @llvm.vector.reduce.umax.v2i8(<2 x i8> %v)132 ret i8 %res133}134 135define i8 @test_vector_reduce_umax_v3i8(<3 x i8> %v) {136; GFX7-SDAG-LABEL: test_vector_reduce_umax_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_max3_u32 v0, v1, v0, v2143; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]144;145; GFX7-GISEL-LABEL: test_vector_reduce_umax_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_max_u32_e32 v0, v0, v1151; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v2152; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v1153; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]154;155; GFX8-SDAG-LABEL: test_vector_reduce_umax_v3i8:156; GFX8-SDAG: ; %bb.0: ; %entry157; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)158; GFX8-SDAG-NEXT: v_max_u16_sdwa v0, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0159; GFX8-SDAG-NEXT: v_max_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_umax_v3i8:163; GFX8-GISEL: ; %bb.0: ; %entry164; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)165; GFX8-GISEL-NEXT: v_max_u16_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0166; GFX8-GISEL-NEXT: v_max_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_umax_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_max3_u16 v0, v1, v0, v2176; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]177;178; GFX9-GISEL-LABEL: test_vector_reduce_umax_v3i8:179; GFX9-GISEL: ; %bb.0: ; %entry180; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)181; GFX9-GISEL-NEXT: v_max_u16_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0182; GFX9-GISEL-NEXT: v_max_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_umax_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_max3_u16 v0, v1, v0, v2192; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]193;194; GFX10-GISEL-LABEL: test_vector_reduce_umax_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_max_u16 v0, v0, v1200; GFX10-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v2201; GFX10-GISEL-NEXT: v_max_u16 v0, v0, v1202; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]203;204; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_umax_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_max3_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_umax_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_max3_u16 v0, v1, v0, v2222; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]223;224; GFX11-GISEL-LABEL: test_vector_reduce_umax_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_max_u16 v0, v0, v1231; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v2232; GFX11-GISEL-NEXT: v_max_u16 v0, v0, v1233; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]234;235; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_umax_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_max3_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_umax_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_max3_u16 v0, v1, v0, v2261; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]262;263; GFX12-GISEL-LABEL: test_vector_reduce_umax_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_max_u16 v0, v0, v1274; GFX12-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v2275; GFX12-GISEL-NEXT: v_max_u16 v0, v0, v1276; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]277entry:278 %res = call i8 @llvm.vector.reduce.umax.v3i8(<3 x i8> %v)279 ret i8 %res280}281 282define i8 @test_vector_reduce_umax_v4i8(<4 x i8> %v) {283; GFX7-SDAG-LABEL: test_vector_reduce_umax_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_max_u32_e32 v1, v1, v3291; GFX7-SDAG-NEXT: v_max3_u32 v0, v0, v2, v1292; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]293;294; GFX7-GISEL-LABEL: test_vector_reduce_umax_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_and_b32_e32 v1, 0xff, v1300; GFX7-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v3301; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v2302; GFX7-GISEL-NEXT: v_max_u32_e32 v1, v1, v3303; GFX7-GISEL-NEXT: v_max_u32_e32 v2, 0, v2304; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v1305; GFX7-GISEL-NEXT: v_max_u32_e32 v1, 0, v1306; GFX7-GISEL-NEXT: v_max_u32_e32 v3, 0, v3307; GFX7-GISEL-NEXT: v_max_u32_e32 v2, 0, v2308; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 8, v1309; GFX7-GISEL-NEXT: v_max_u32_e32 v3, 0, v3310; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v1311; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v2312; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v1313; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 24, v3314; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v1315; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]316;317; GFX8-SDAG-LABEL: test_vector_reduce_umax_v4i8:318; GFX8-SDAG: ; %bb.0: ; %entry319; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)320; GFX8-SDAG-NEXT: v_max_u16_sdwa v1, v1, v3 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0321; GFX8-SDAG-NEXT: v_max_u16_sdwa v0, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0322; GFX8-SDAG-NEXT: v_lshrrev_b32_e32 v1, 8, v1323; GFX8-SDAG-NEXT: v_max_u16_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0324; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]325;326; GFX8-GISEL-LABEL: test_vector_reduce_umax_v4i8:327; GFX8-GISEL: ; %bb.0: ; %entry328; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)329; GFX8-GISEL-NEXT: v_max_u16_sdwa v0, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0330; GFX8-GISEL-NEXT: v_max_u16_sdwa v1, v1, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0331; GFX8-GISEL-NEXT: v_mov_b32_e32 v4, 0332; GFX8-GISEL-NEXT: v_max_u16_sdwa v2, v2, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD333; GFX8-GISEL-NEXT: v_max_u16_sdwa v3, v3, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD334; GFX8-GISEL-NEXT: v_max_u16_e32 v0, v0, v1335; GFX8-GISEL-NEXT: v_max_u16_e32 v1, 0, v1336; GFX8-GISEL-NEXT: v_mov_b32_e32 v4, 8337; GFX8-GISEL-NEXT: v_max_u16_e32 v2, 0, v2338; GFX8-GISEL-NEXT: v_lshlrev_b32_sdwa v1, v4, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0339; GFX8-GISEL-NEXT: v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD340; GFX8-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v2341; GFX8-GISEL-NEXT: v_max_u16_e32 v3, 0, v3342; GFX8-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v1343; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v0, v1344; GFX8-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v3345; GFX8-GISEL-NEXT: v_lshlrev_b32_e32 v1, 24, v1346; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v0, v1347; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]348;349; GFX9-SDAG-LABEL: test_vector_reduce_umax_v4i8:350; GFX9-SDAG: ; %bb.0: ; %entry351; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)352; GFX9-SDAG-NEXT: v_max_u16_sdwa v1, v1, v3 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0353; GFX9-SDAG-NEXT: v_and_b32_e32 v2, 0xff, v2354; GFX9-SDAG-NEXT: v_lshrrev_b32_e32 v1, 8, v1355; GFX9-SDAG-NEXT: v_and_b32_e32 v0, 0xff, v0356; GFX9-SDAG-NEXT: v_and_b32_e32 v1, 0xff, v1357; GFX9-SDAG-NEXT: v_max3_u16 v0, v0, v2, v1358; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]359;360; GFX9-GISEL-LABEL: test_vector_reduce_umax_v4i8:361; GFX9-GISEL: ; %bb.0: ; %entry362; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)363; GFX9-GISEL-NEXT: v_max_u16_sdwa v0, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0364; GFX9-GISEL-NEXT: v_max_u16_sdwa v1, v1, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0365; GFX9-GISEL-NEXT: v_mov_b32_e32 v5, 0366; GFX9-GISEL-NEXT: v_max_u16_sdwa v2, v2, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD367; GFX9-GISEL-NEXT: v_max_u16_sdwa v3, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD368; GFX9-GISEL-NEXT: v_max_u16_e32 v0, v0, v1369; GFX9-GISEL-NEXT: v_max_u16_e32 v1, 0, v1370; GFX9-GISEL-NEXT: v_mov_b32_e32 v5, 8371; GFX9-GISEL-NEXT: v_mov_b32_e32 v4, 0xff372; GFX9-GISEL-NEXT: v_max_u16_e32 v2, 0, v2373; GFX9-GISEL-NEXT: v_max_u16_e32 v3, 0, v3374; GFX9-GISEL-NEXT: v_lshlrev_b32_sdwa v1, v5, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0375; GFX9-GISEL-NEXT: v_and_or_b32 v0, v0, v4, v1376; GFX9-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v2377; GFX9-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v3378; GFX9-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v1379; GFX9-GISEL-NEXT: v_lshlrev_b32_e32 v2, 24, v2380; GFX9-GISEL-NEXT: v_or3_b32 v0, v0, v1, v2381; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]382;383; GFX10-SDAG-LABEL: test_vector_reduce_umax_v4i8:384; GFX10-SDAG: ; %bb.0: ; %entry385; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)386; GFX10-SDAG-NEXT: v_and_b32_e32 v3, 0xff, v3387; GFX10-SDAG-NEXT: v_and_b32_e32 v1, 0xff, v1388; GFX10-SDAG-NEXT: v_and_b32_e32 v2, 0xff, v2389; GFX10-SDAG-NEXT: v_and_b32_e32 v0, 0xff, v0390; GFX10-SDAG-NEXT: v_max_u16 v1, v1, v3391; GFX10-SDAG-NEXT: v_lshlrev_b16 v1, 8, v1392; GFX10-SDAG-NEXT: v_lshrrev_b32_e32 v1, 8, v1393; GFX10-SDAG-NEXT: v_and_b32_e32 v1, 0xff, v1394; GFX10-SDAG-NEXT: v_max3_u16 v0, v0, v2, v1395; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]396;397; GFX10-GISEL-LABEL: test_vector_reduce_umax_v4i8:398; GFX10-GISEL: ; %bb.0: ; %entry399; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)400; GFX10-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v1401; GFX10-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v3402; GFX10-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v2403; GFX10-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v0404; GFX10-GISEL-NEXT: v_mov_b32_e32 v5, 8405; GFX10-GISEL-NEXT: v_max_u16 v1, v1, v3406; GFX10-GISEL-NEXT: v_max_u16 v4, v2, 0407; GFX10-GISEL-NEXT: v_max_u16 v3, v3, 0408; GFX10-GISEL-NEXT: v_max_u16 v0, v0, v2409; GFX10-GISEL-NEXT: v_max_u16 v2, v1, 0410; GFX10-GISEL-NEXT: v_max_u16 v4, v4, 0411; GFX10-GISEL-NEXT: v_max_u16 v3, v3, 0412; GFX10-GISEL-NEXT: v_max_u16 v0, v0, v1413; GFX10-GISEL-NEXT: v_lshlrev_b32_sdwa v1, v5, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0414; GFX10-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v4415; GFX10-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v3416; GFX10-GISEL-NEXT: v_and_or_b32 v0, 0xff, v0, v1417; GFX10-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v2418; GFX10-GISEL-NEXT: v_lshlrev_b32_e32 v2, 24, v3419; GFX10-GISEL-NEXT: v_or3_b32 v0, v0, v1, v2420; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]421;422; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_umax_v4i8:423; GFX11-SDAG-TRUE16: ; %bb.0: ; %entry424; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)425; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v1.h, 0xff, v3.l426; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v1.l, 0xff, v1.l427; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v0.h, 0xff, v2.l428; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v0.l, 0xff, v0.l429; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)430; GFX11-SDAG-TRUE16-NEXT: v_max_u16 v1.l, v1.l, v1.h431; GFX11-SDAG-TRUE16-NEXT: v_lshlrev_b16 v1.l, 8, v1.l432; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)433; GFX11-SDAG-TRUE16-NEXT: v_lshrrev_b32_e32 v1, 8, v1434; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v1.l, 0xff, v1.l435; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)436; GFX11-SDAG-TRUE16-NEXT: v_max3_u16 v0.l, v0.l, v0.h, v1.l437; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]438;439; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_umax_v4i8:440; GFX11-SDAG-FAKE16: ; %bb.0: ; %entry441; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)442; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v3, 0xff, v3443; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xff, v1444; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v2, 0xff, v2445; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 0xff, v0446; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)447; GFX11-SDAG-FAKE16-NEXT: v_max_u16 v1, v1, v3448; GFX11-SDAG-FAKE16-NEXT: v_lshlrev_b16 v1, 8, v1449; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)450; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 8, v1451; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xff, v1452; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)453; GFX11-SDAG-FAKE16-NEXT: v_max3_u16 v0, v0, v2, v1454; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]455;456; GFX11-GISEL-LABEL: test_vector_reduce_umax_v4i8:457; GFX11-GISEL: ; %bb.0: ; %entry458; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)459; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v1460; GFX11-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v3461; GFX11-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v2462; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v0463; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)464; GFX11-GISEL-NEXT: v_max_u16 v1, v1, v3465; GFX11-GISEL-NEXT: v_max_u16 v4, v2, 0466; GFX11-GISEL-NEXT: v_max_u16 v3, v3, 0467; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)468; GFX11-GISEL-NEXT: v_max_u16 v0, v0, v2469; GFX11-GISEL-NEXT: v_max_u16 v5, v1, 0470; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)471; GFX11-GISEL-NEXT: v_max_u16 v2, v4, 0472; GFX11-GISEL-NEXT: v_max_u16 v3, v3, 0473; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)474; GFX11-GISEL-NEXT: v_max_u16 v0, v0, v1475; GFX11-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v5476; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)477; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v2478; GFX11-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v3479; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)480; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v2, 8, v4481; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v1482; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_4)483; GFX11-GISEL-NEXT: v_and_or_b32 v0, 0xff, v0, v2484; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v2, 24, v3485; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)486; GFX11-GISEL-NEXT: v_or3_b32 v0, v0, v1, v2487; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]488;489; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_umax_v4i8:490; GFX12-SDAG-TRUE16: ; %bb.0: ; %entry491; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0492; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x0493; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x0494; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x0495; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0496; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v1.h, 0xff, v3.l497; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v1.l, 0xff, v1.l498; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v0.h, 0xff, v2.l499; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v0.l, 0xff, v0.l500; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)501; GFX12-SDAG-TRUE16-NEXT: v_max_u16 v1.l, v1.l, v1.h502; GFX12-SDAG-TRUE16-NEXT: v_lshlrev_b16 v1.l, 8, v1.l503; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)504; GFX12-SDAG-TRUE16-NEXT: v_lshrrev_b32_e32 v1, 8, v1505; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v1.l, 0xff, v1.l506; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)507; GFX12-SDAG-TRUE16-NEXT: v_max3_u16 v0.l, v0.l, v0.h, v1.l508; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]509;510; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_umax_v4i8:511; GFX12-SDAG-FAKE16: ; %bb.0: ; %entry512; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0513; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x0514; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x0515; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x0516; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x0517; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v3, 0xff, v3518; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xff, v1519; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v2, 0xff, v2520; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 0xff, v0521; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)522; GFX12-SDAG-FAKE16-NEXT: v_max_u16 v1, v1, v3523; GFX12-SDAG-FAKE16-NEXT: v_lshlrev_b16 v1, 8, v1524; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)525; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 8, v1526; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xff, v1527; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)528; GFX12-SDAG-FAKE16-NEXT: v_max3_u16 v0, v0, v2, v1529; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]530;531; GFX12-GISEL-LABEL: test_vector_reduce_umax_v4i8:532; GFX12-GISEL: ; %bb.0: ; %entry533; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0534; GFX12-GISEL-NEXT: s_wait_expcnt 0x0535; GFX12-GISEL-NEXT: s_wait_samplecnt 0x0536; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x0537; GFX12-GISEL-NEXT: s_wait_kmcnt 0x0538; GFX12-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v1539; GFX12-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v3540; GFX12-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v2541; GFX12-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v0542; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)543; GFX12-GISEL-NEXT: v_max_u16 v1, v1, v3544; GFX12-GISEL-NEXT: v_max_u16 v4, v2, 0545; GFX12-GISEL-NEXT: v_max_u16 v3, v3, 0546; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)547; GFX12-GISEL-NEXT: v_max_u16 v0, v0, v2548; GFX12-GISEL-NEXT: v_max_u16 v5, v1, 0549; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)550; GFX12-GISEL-NEXT: v_max_u16 v2, v4, 0551; GFX12-GISEL-NEXT: v_max_u16 v3, v3, 0552; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)553; GFX12-GISEL-NEXT: v_max_u16 v0, v0, v1554; GFX12-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v5555; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)556; GFX12-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v2557; GFX12-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v3558; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)559; GFX12-GISEL-NEXT: v_lshlrev_b32_e32 v2, 8, v4560; GFX12-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v1561; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_4)562; GFX12-GISEL-NEXT: v_and_or_b32 v0, 0xff, v0, v2563; GFX12-GISEL-NEXT: v_lshlrev_b32_e32 v2, 24, v3564; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)565; GFX12-GISEL-NEXT: v_or3_b32 v0, v0, v1, v2566; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]567entry:568 %res = call i8 @llvm.vector.reduce.umax.v4i8(<4 x i8> %v)569 ret i8 %res570}571 572define i8 @test_vector_reduce_umax_v8i8(<8 x i8> %v) {573; GFX7-SDAG-LABEL: test_vector_reduce_umax_v8i8:574; GFX7-SDAG: ; %bb.0: ; %entry575; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)576; GFX7-SDAG-NEXT: v_and_b32_e32 v5, 0xff, v5577; GFX7-SDAG-NEXT: v_and_b32_e32 v1, 0xff, v1578; GFX7-SDAG-NEXT: v_and_b32_e32 v4, 0xff, v4579; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 0xff, v0580; GFX7-SDAG-NEXT: v_and_b32_e32 v6, 0xff, v6581; GFX7-SDAG-NEXT: v_and_b32_e32 v2, 0xff, v2582; GFX7-SDAG-NEXT: v_and_b32_e32 v7, 0xff, v7583; GFX7-SDAG-NEXT: v_and_b32_e32 v3, 0xff, v3584; GFX7-SDAG-NEXT: v_max_u32_e32 v0, v0, v4585; GFX7-SDAG-NEXT: v_max_u32_e32 v1, v1, v5586; GFX7-SDAG-NEXT: v_max3_u32 v1, v1, v3, v7587; GFX7-SDAG-NEXT: v_max3_u32 v0, v0, v2, v6588; GFX7-SDAG-NEXT: v_max_u32_e32 v0, v0, v1589; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]590;591; GFX7-GISEL-LABEL: test_vector_reduce_umax_v8i8:592; GFX7-GISEL: ; %bb.0: ; %entry593; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)594; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v0595; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v4596; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v4597; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v1598; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v5599; GFX7-GISEL-NEXT: v_max_u32_e32 v1, v1, v4600; GFX7-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v2601; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v6602; GFX7-GISEL-NEXT: v_max_u32_e32 v2, v2, v4603; GFX7-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v3604; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v7605; GFX7-GISEL-NEXT: v_max_u32_e32 v3, v3, v4606; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v2607; GFX7-GISEL-NEXT: v_max_u32_e32 v1, v1, v3608; GFX7-GISEL-NEXT: v_max_u32_e32 v2, 0, v2609; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v1610; GFX7-GISEL-NEXT: v_max_u32_e32 v1, 0, v1611; GFX7-GISEL-NEXT: v_max_u32_e32 v3, 0, v3612; GFX7-GISEL-NEXT: v_max_u32_e32 v2, 0, v2613; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 8, v1614; GFX7-GISEL-NEXT: v_max_u32_e32 v3, 0, v3615; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v1616; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v2617; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v1618; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 24, v3619; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v1620; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]621;622; GFX8-SDAG-LABEL: test_vector_reduce_umax_v8i8:623; GFX8-SDAG: ; %bb.0: ; %entry624; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)625; GFX8-SDAG-NEXT: v_max_u16_sdwa v3, v3, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0626; GFX8-SDAG-NEXT: v_max_u16_sdwa v1, v1, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0627; GFX8-SDAG-NEXT: v_max_u16_sdwa v2, v2, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0628; GFX8-SDAG-NEXT: v_max_u16_sdwa v0, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0629; GFX8-SDAG-NEXT: v_max_u16_sdwa v1, v1, v3 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD630; GFX8-SDAG-NEXT: v_max_u16_e32 v0, v0, v2631; GFX8-SDAG-NEXT: v_lshrrev_b32_e32 v1, 8, v1632; GFX8-SDAG-NEXT: v_max_u16_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0633; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]634;635; GFX8-GISEL-LABEL: test_vector_reduce_umax_v8i8:636; GFX8-GISEL: ; %bb.0: ; %entry637; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)638; GFX8-GISEL-NEXT: v_max_u16_sdwa v0, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0639; GFX8-GISEL-NEXT: v_max_u16_sdwa v1, v1, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0640; GFX8-GISEL-NEXT: v_max_u16_sdwa v2, v2, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0641; GFX8-GISEL-NEXT: v_max_u16_sdwa v3, v3, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0642; GFX8-GISEL-NEXT: v_max_u16_e32 v0, v0, v2643; GFX8-GISEL-NEXT: v_max_u16_e32 v1, v1, v3644; GFX8-GISEL-NEXT: v_max_u16_e32 v2, 0, v2645; GFX8-GISEL-NEXT: v_max_u16_e32 v0, v0, v1646; GFX8-GISEL-NEXT: v_max_u16_e32 v1, 0, v1647; GFX8-GISEL-NEXT: v_mov_b32_e32 v4, 8648; GFX8-GISEL-NEXT: v_max_u16_e32 v2, 0, v2649; GFX8-GISEL-NEXT: v_lshlrev_b32_sdwa v1, v4, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0650; GFX8-GISEL-NEXT: v_max_u16_e32 v3, 0, v3651; GFX8-GISEL-NEXT: v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD652; GFX8-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v2653; GFX8-GISEL-NEXT: v_max_u16_e32 v3, 0, v3654; GFX8-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v1655; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v0, v1656; GFX8-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v3657; GFX8-GISEL-NEXT: v_lshlrev_b32_e32 v1, 24, v1658; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v0, v1659; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]660;661; GFX9-SDAG-LABEL: test_vector_reduce_umax_v8i8:662; GFX9-SDAG: ; %bb.0: ; %entry663; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)664; GFX9-SDAG-NEXT: v_and_b32_e32 v7, 0xff, v7665; GFX9-SDAG-NEXT: v_and_b32_e32 v3, 0xff, v3666; GFX9-SDAG-NEXT: v_max_u16_sdwa v1, v1, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0667; GFX9-SDAG-NEXT: v_max3_u16 v1, v1, v3, v7668; GFX9-SDAG-NEXT: v_and_b32_e32 v6, 0xff, v6669; GFX9-SDAG-NEXT: v_and_b32_e32 v2, 0xff, v2670; GFX9-SDAG-NEXT: v_max_u16_sdwa v0, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0671; GFX9-SDAG-NEXT: v_lshlrev_b16_e32 v1, 8, v1672; GFX9-SDAG-NEXT: v_max3_u16 v0, v0, v2, v6673; GFX9-SDAG-NEXT: v_lshrrev_b32_e32 v1, 8, v1674; GFX9-SDAG-NEXT: v_max_u16_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0675; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]676;677; GFX9-GISEL-LABEL: test_vector_reduce_umax_v8i8:678; GFX9-GISEL: ; %bb.0: ; %entry679; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)680; GFX9-GISEL-NEXT: v_max_u16_sdwa v0, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0681; GFX9-GISEL-NEXT: v_max_u16_sdwa v1, v1, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0682; GFX9-GISEL-NEXT: v_max_u16_sdwa v2, v2, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0683; GFX9-GISEL-NEXT: v_max_u16_sdwa v3, v3, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0684; GFX9-GISEL-NEXT: v_max_u16_e32 v0, v0, v2685; GFX9-GISEL-NEXT: v_max_u16_e32 v1, v1, v3686; GFX9-GISEL-NEXT: v_max_u16_e32 v2, 0, v2687; GFX9-GISEL-NEXT: v_max_u16_e32 v3, 0, v3688; GFX9-GISEL-NEXT: v_max_u16_e32 v0, v0, v1689; GFX9-GISEL-NEXT: v_max_u16_e32 v1, 0, v1690; GFX9-GISEL-NEXT: v_mov_b32_e32 v4, 8691; GFX9-GISEL-NEXT: v_mov_b32_e32 v8, 0xff692; GFX9-GISEL-NEXT: v_max_u16_e32 v2, 0, v2693; GFX9-GISEL-NEXT: v_max_u16_e32 v3, 0, v3694; GFX9-GISEL-NEXT: v_lshlrev_b32_sdwa v1, v4, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0695; GFX9-GISEL-NEXT: v_and_or_b32 v0, v0, v8, v1696; GFX9-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v2697; GFX9-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v3698; GFX9-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v1699; GFX9-GISEL-NEXT: v_lshlrev_b32_e32 v2, 24, v2700; GFX9-GISEL-NEXT: v_or3_b32 v0, v0, v1, v2701; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]702;703; GFX10-SDAG-LABEL: test_vector_reduce_umax_v8i8:704; GFX10-SDAG: ; %bb.0: ; %entry705; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)706; GFX10-SDAG-NEXT: v_and_b32_e32 v5, 0xff, v5707; GFX10-SDAG-NEXT: v_and_b32_e32 v1, 0xff, v1708; GFX10-SDAG-NEXT: v_and_b32_e32 v7, 0xff, v7709; GFX10-SDAG-NEXT: v_and_b32_e32 v3, 0xff, v3710; GFX10-SDAG-NEXT: v_and_b32_e32 v0, 0xff, v0711; GFX10-SDAG-NEXT: v_and_b32_e32 v2, 0xff, v2712; GFX10-SDAG-NEXT: v_max_u16 v1, v1, v5713; GFX10-SDAG-NEXT: v_max3_u16 v1, v1, v3, v7714; GFX10-SDAG-NEXT: v_and_b32_e32 v3, 0xff, v4715; GFX10-SDAG-NEXT: v_and_b32_e32 v4, 0xff, v6716; GFX10-SDAG-NEXT: v_lshlrev_b16 v1, 8, v1717; GFX10-SDAG-NEXT: v_max_u16 v0, v0, v3718; GFX10-SDAG-NEXT: v_lshrrev_b32_e32 v1, 8, v1719; GFX10-SDAG-NEXT: v_max3_u16 v0, v0, v2, v4720; GFX10-SDAG-NEXT: v_and_b32_e32 v1, 0xff, v1721; GFX10-SDAG-NEXT: v_max_u16 v0, v0, v1722; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]723;724; GFX10-GISEL-LABEL: test_vector_reduce_umax_v8i8:725; GFX10-GISEL: ; %bb.0: ; %entry726; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)727; GFX10-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v1728; GFX10-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v5729; GFX10-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v3730; GFX10-GISEL-NEXT: v_and_b32_e32 v7, 0xff, v7731; GFX10-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v2732; GFX10-GISEL-NEXT: v_and_b32_e32 v6, 0xff, v6733; GFX10-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v0734; GFX10-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v4735; GFX10-GISEL-NEXT: v_max_u16 v1, v1, v5736; GFX10-GISEL-NEXT: v_max_u16 v3, v3, v7737; GFX10-GISEL-NEXT: v_max_u16 v2, v2, v6738; GFX10-GISEL-NEXT: v_mov_b32_e32 v5, 8739; GFX10-GISEL-NEXT: v_max_u16 v0, v0, v4740; GFX10-GISEL-NEXT: v_max_u16 v1, v1, v3741; GFX10-GISEL-NEXT: v_max_u16 v4, v2, 0742; GFX10-GISEL-NEXT: v_max_u16 v3, v3, 0743; GFX10-GISEL-NEXT: v_max_u16 v0, v0, v2744; GFX10-GISEL-NEXT: v_max_u16 v2, v1, 0745; GFX10-GISEL-NEXT: v_max_u16 v4, v4, 0746; GFX10-GISEL-NEXT: v_max_u16 v3, v3, 0747; GFX10-GISEL-NEXT: v_max_u16 v0, v0, v1748; GFX10-GISEL-NEXT: v_lshlrev_b32_sdwa v1, v5, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0749; GFX10-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v4750; GFX10-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v3751; GFX10-GISEL-NEXT: v_and_or_b32 v0, 0xff, v0, v1752; GFX10-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v2753; GFX10-GISEL-NEXT: v_lshlrev_b32_e32 v2, 24, v3754; GFX10-GISEL-NEXT: v_or3_b32 v0, v0, v1, v2755; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]756;757; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_umax_v8i8:758; GFX11-SDAG-TRUE16: ; %bb.0: ; %entry759; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)760; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v1.h, 0xff, v5.l761; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v1.l, 0xff, v1.l762; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v3.h, 0xff, v7.l763; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v3.l, 0xff, v3.l764; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v0.l, 0xff, v0.l765; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_2)766; GFX11-SDAG-TRUE16-NEXT: v_max_u16 v1.l, v1.l, v1.h767; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v1.h, 0xff, v2.l768; GFX11-SDAG-TRUE16-NEXT: v_max3_u16 v0.h, v1.l, v3.l, v3.h769; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v1.l, 0xff, v4.l770; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)771; GFX11-SDAG-TRUE16-NEXT: v_lshlrev_b16 v3.l, 8, v0.h772; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v0.h, 0xff, v6.l773; GFX11-SDAG-TRUE16-NEXT: v_max_u16 v0.l, v0.l, v1.l774; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)775; GFX11-SDAG-TRUE16-NEXT: v_lshrrev_b32_e32 v2, 8, v3776; GFX11-SDAG-TRUE16-NEXT: v_max3_u16 v0.l, v0.l, v1.h, v0.h777; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)778; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v0.h, 0xff, v2.l779; GFX11-SDAG-TRUE16-NEXT: v_max_u16 v0.l, v0.l, v0.h780; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]781;782; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_umax_v8i8:783; GFX11-SDAG-FAKE16: ; %bb.0: ; %entry784; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)785; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v5, 0xff, v5786; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xff, v1787; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v7, 0xff, v7788; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v3, 0xff, v3789; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 0xff, v0790; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v2, 0xff, v2791; GFX11-SDAG-FAKE16-NEXT: v_max_u16 v1, v1, v5792; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)793; GFX11-SDAG-FAKE16-NEXT: v_max3_u16 v1, v1, v3, v7794; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v3, 0xff, v4795; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v4, 0xff, v6796; GFX11-SDAG-FAKE16-NEXT: v_lshlrev_b16 v1, 8, v1797; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)798; GFX11-SDAG-FAKE16-NEXT: v_max_u16 v0, v0, v3799; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 8, v1800; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)801; GFX11-SDAG-FAKE16-NEXT: v_max3_u16 v0, v0, v2, v4802; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xff, v1803; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)804; GFX11-SDAG-FAKE16-NEXT: v_max_u16 v0, v0, v1805; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]806;807; GFX11-GISEL-LABEL: test_vector_reduce_umax_v8i8:808; GFX11-GISEL: ; %bb.0: ; %entry809; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)810; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v1811; GFX11-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v5812; GFX11-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v3813; GFX11-GISEL-NEXT: v_and_b32_e32 v7, 0xff, v7814; GFX11-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v2815; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v0816; GFX11-GISEL-NEXT: v_max_u16 v1, v1, v5817; GFX11-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v6818; GFX11-GISEL-NEXT: v_max_u16 v3, v3, v7819; GFX11-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v4820; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)821; GFX11-GISEL-NEXT: v_max_u16 v2, v2, v5822; GFX11-GISEL-NEXT: v_max_u16 v1, v1, v3823; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)824; GFX11-GISEL-NEXT: v_max_u16 v0, v0, v4825; GFX11-GISEL-NEXT: v_max_u16 v3, v3, 0826; GFX11-GISEL-NEXT: v_max_u16 v4, v2, 0827; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)828; GFX11-GISEL-NEXT: v_max_u16 v5, v1, 0829; GFX11-GISEL-NEXT: v_max_u16 v0, v0, v2830; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)831; GFX11-GISEL-NEXT: v_max_u16 v3, v3, 0832; GFX11-GISEL-NEXT: v_max_u16 v2, v4, 0833; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)834; GFX11-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v5835; GFX11-GISEL-NEXT: v_max_u16 v0, v0, v1836; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)837; GFX11-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v3838; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v2839; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)840; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v2, 8, v4841; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v1842; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)843; GFX11-GISEL-NEXT: v_and_or_b32 v0, 0xff, v0, v2844; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v2, 24, v3845; GFX11-GISEL-NEXT: v_or3_b32 v0, v0, v1, v2846; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]847;848; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_umax_v8i8:849; GFX12-SDAG-TRUE16: ; %bb.0: ; %entry850; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0851; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x0852; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x0853; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x0854; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0855; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v1.h, 0xff, v5.l856; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v1.l, 0xff, v1.l857; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v3.h, 0xff, v7.l858; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v3.l, 0xff, v3.l859; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v0.l, 0xff, v0.l860; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_2)861; GFX12-SDAG-TRUE16-NEXT: v_max_u16 v1.l, v1.l, v1.h862; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v1.h, 0xff, v2.l863; GFX12-SDAG-TRUE16-NEXT: v_max3_u16 v0.h, v1.l, v3.l, v3.h864; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v1.l, 0xff, v4.l865; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)866; GFX12-SDAG-TRUE16-NEXT: v_lshlrev_b16 v3.l, 8, v0.h867; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v0.h, 0xff, v6.l868; GFX12-SDAG-TRUE16-NEXT: v_max_u16 v0.l, v0.l, v1.l869; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)870; GFX12-SDAG-TRUE16-NEXT: v_lshrrev_b32_e32 v2, 8, v3871; GFX12-SDAG-TRUE16-NEXT: v_max3_u16 v0.l, v0.l, v1.h, v0.h872; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)873; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v0.h, 0xff, v2.l874; GFX12-SDAG-TRUE16-NEXT: v_max_u16 v0.l, v0.l, v0.h875; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]876;877; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_umax_v8i8:878; GFX12-SDAG-FAKE16: ; %bb.0: ; %entry879; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0880; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x0881; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x0882; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x0883; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x0884; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v5, 0xff, v5885; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xff, v1886; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v7, 0xff, v7887; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v3, 0xff, v3888; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 0xff, v0889; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v2, 0xff, v2890; GFX12-SDAG-FAKE16-NEXT: v_max_u16 v1, v1, v5891; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)892; GFX12-SDAG-FAKE16-NEXT: v_max3_u16 v1, v1, v3, v7893; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v3, 0xff, v4894; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v4, 0xff, v6895; GFX12-SDAG-FAKE16-NEXT: v_lshlrev_b16 v1, 8, v1896; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)897; GFX12-SDAG-FAKE16-NEXT: v_max_u16 v0, v0, v3898; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 8, v1899; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)900; GFX12-SDAG-FAKE16-NEXT: v_max3_u16 v0, v0, v2, v4901; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xff, v1902; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)903; GFX12-SDAG-FAKE16-NEXT: v_max_u16 v0, v0, v1904; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]905;906; GFX12-GISEL-LABEL: test_vector_reduce_umax_v8i8:907; GFX12-GISEL: ; %bb.0: ; %entry908; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0909; GFX12-GISEL-NEXT: s_wait_expcnt 0x0910; GFX12-GISEL-NEXT: s_wait_samplecnt 0x0911; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x0912; GFX12-GISEL-NEXT: s_wait_kmcnt 0x0913; GFX12-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v1914; GFX12-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v5915; GFX12-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v3916; GFX12-GISEL-NEXT: v_and_b32_e32 v7, 0xff, v7917; GFX12-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v2918; GFX12-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v0919; GFX12-GISEL-NEXT: v_max_u16 v1, v1, v5920; GFX12-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v6921; GFX12-GISEL-NEXT: v_max_u16 v3, v3, v7922; GFX12-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v4923; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)924; GFX12-GISEL-NEXT: v_max_u16 v2, v2, v5925; GFX12-GISEL-NEXT: v_max_u16 v1, v1, v3926; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)927; GFX12-GISEL-NEXT: v_max_u16 v0, v0, v4928; GFX12-GISEL-NEXT: v_max_u16 v3, v3, 0929; GFX12-GISEL-NEXT: v_max_u16 v4, v2, 0930; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)931; GFX12-GISEL-NEXT: v_max_u16 v5, v1, 0932; GFX12-GISEL-NEXT: v_max_u16 v0, v0, v2933; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)934; GFX12-GISEL-NEXT: v_max_u16 v3, v3, 0935; GFX12-GISEL-NEXT: v_max_u16 v2, v4, 0936; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)937; GFX12-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v5938; GFX12-GISEL-NEXT: v_max_u16 v0, v0, v1939; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)940; GFX12-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v3941; GFX12-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v2942; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)943; GFX12-GISEL-NEXT: v_lshlrev_b32_e32 v2, 8, v4944; GFX12-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v1945; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)946; GFX12-GISEL-NEXT: v_and_or_b32 v0, 0xff, v0, v2947; GFX12-GISEL-NEXT: v_lshlrev_b32_e32 v2, 24, v3948; GFX12-GISEL-NEXT: v_or3_b32 v0, v0, v1, v2949; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]950entry:951 %res = call i8 @llvm.vector.reduce.umax.v8i8(<8 x i8> %v)952 ret i8 %res953}954 955define i8 @test_vector_reduce_umax_v16i8(<16 x i8> %v) {956; GFX7-SDAG-LABEL: test_vector_reduce_umax_v16i8:957; GFX7-SDAG: ; %bb.0: ; %entry958; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)959; GFX7-SDAG-NEXT: v_and_b32_e32 v8, 0xff, v8960; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 0xff, v0961; GFX7-SDAG-NEXT: v_and_b32_e32 v9, 0xff, v9962; GFX7-SDAG-NEXT: v_and_b32_e32 v1, 0xff, v1963; GFX7-SDAG-NEXT: v_and_b32_e32 v13, 0xff, v13964; GFX7-SDAG-NEXT: v_and_b32_e32 v5, 0xff, v5965; GFX7-SDAG-NEXT: v_and_b32_e32 v12, 0xff, v12966; GFX7-SDAG-NEXT: v_and_b32_e32 v4, 0xff, v4967; GFX7-SDAG-NEXT: v_and_b32_e32 v11, 0xff, v11968; GFX7-SDAG-NEXT: v_and_b32_e32 v3, 0xff, v3969; GFX7-SDAG-NEXT: v_and_b32_e32 v15, 0xff, v15970; GFX7-SDAG-NEXT: v_and_b32_e32 v7, 0xff, v7971; GFX7-SDAG-NEXT: v_and_b32_e32 v10, 0xff, v10972; GFX7-SDAG-NEXT: v_and_b32_e32 v2, 0xff, v2973; GFX7-SDAG-NEXT: v_and_b32_e32 v14, 0xff, v14974; GFX7-SDAG-NEXT: v_and_b32_e32 v6, 0xff, v6975; GFX7-SDAG-NEXT: v_max_u32_e32 v1, v1, v9976; GFX7-SDAG-NEXT: v_max_u32_e32 v0, v0, v8977; GFX7-SDAG-NEXT: v_max_u32_e32 v6, v6, v14978; GFX7-SDAG-NEXT: v_max_u32_e32 v2, v2, v10979; GFX7-SDAG-NEXT: v_max_u32_e32 v7, v7, v15980; GFX7-SDAG-NEXT: v_max_u32_e32 v3, v3, v11981; GFX7-SDAG-NEXT: v_max3_u32 v0, v0, v4, v12982; GFX7-SDAG-NEXT: v_max3_u32 v1, v1, v5, v13983; GFX7-SDAG-NEXT: v_max3_u32 v1, v1, v3, v7984; GFX7-SDAG-NEXT: v_max3_u32 v0, v0, v2, v6985; GFX7-SDAG-NEXT: v_max_u32_e32 v0, v0, v1986; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]987;988; GFX7-GISEL-LABEL: test_vector_reduce_umax_v16i8:989; GFX7-GISEL: ; %bb.0: ; %entry990; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)991; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v0992; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v8993; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v8994; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v1995; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v9996; GFX7-GISEL-NEXT: v_max_u32_e32 v1, v1, v8997; GFX7-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v2998; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v10999; GFX7-GISEL-NEXT: v_max_u32_e32 v2, v2, v81000; GFX7-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v31001; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v111002; GFX7-GISEL-NEXT: v_max_u32_e32 v3, v3, v81003; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v41004; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v121005; GFX7-GISEL-NEXT: v_max_u32_e32 v4, v4, v81006; GFX7-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v51007; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v131008; GFX7-GISEL-NEXT: v_max_u32_e32 v5, v5, v81009; GFX7-GISEL-NEXT: v_and_b32_e32 v6, 0xff, v61010; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v141011; GFX7-GISEL-NEXT: v_max_u32_e32 v6, v6, v81012; GFX7-GISEL-NEXT: v_and_b32_e32 v7, 0xff, v71013; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v151014; GFX7-GISEL-NEXT: v_max_u32_e32 v7, v7, v81015; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v41016; GFX7-GISEL-NEXT: v_max_u32_e32 v1, v1, v51017; GFX7-GISEL-NEXT: v_max_u32_e32 v2, v2, v61018; GFX7-GISEL-NEXT: v_max_u32_e32 v3, v3, v71019; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v21020; GFX7-GISEL-NEXT: v_max_u32_e32 v1, v1, v31021; GFX7-GISEL-NEXT: v_max_u32_e32 v2, 0, v21022; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v11023; GFX7-GISEL-NEXT: v_max_u32_e32 v1, 0, v11024; GFX7-GISEL-NEXT: v_max_u32_e32 v3, 0, v31025; GFX7-GISEL-NEXT: v_max_u32_e32 v2, 0, v21026; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 8, v11027; GFX7-GISEL-NEXT: v_max_u32_e32 v3, 0, v31028; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v11029; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v21030; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v11031; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 24, v31032; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v11033; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]1034;1035; GFX8-SDAG-LABEL: test_vector_reduce_umax_v16i8:1036; GFX8-SDAG: ; %bb.0: ; %entry1037; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1038; GFX8-SDAG-NEXT: v_max_u16_sdwa v4, v4, v12 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01039; GFX8-SDAG-NEXT: v_max_u16_sdwa v0, v0, v8 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01040; GFX8-SDAG-NEXT: v_max_u16_sdwa v6, v6, v14 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01041; GFX8-SDAG-NEXT: v_max_u16_sdwa v2, v2, v10 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01042; GFX8-SDAG-NEXT: v_max_u16_sdwa v5, v5, v13 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01043; GFX8-SDAG-NEXT: v_max_u16_sdwa v1, v1, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01044; GFX8-SDAG-NEXT: v_max_u16_sdwa v7, v7, v15 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01045; GFX8-SDAG-NEXT: v_max_u16_sdwa v3, v3, v11 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01046; GFX8-SDAG-NEXT: v_max_u16_e32 v3, v3, v71047; GFX8-SDAG-NEXT: v_max_u16_e32 v1, v1, v51048; GFX8-SDAG-NEXT: v_max_u16_e32 v2, v2, v61049; GFX8-SDAG-NEXT: v_max_u16_e32 v0, v0, v41050; GFX8-SDAG-NEXT: v_max_u16_e32 v0, v0, v21051; GFX8-SDAG-NEXT: v_max_u16_sdwa v1, v1, v3 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD1052; GFX8-SDAG-NEXT: v_or_b32_e32 v0, v0, v11053; GFX8-SDAG-NEXT: v_lshrrev_b32_e32 v1, 8, v01054; GFX8-SDAG-NEXT: v_max_u16_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01055; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]1056;1057; GFX8-GISEL-LABEL: test_vector_reduce_umax_v16i8:1058; GFX8-GISEL: ; %bb.0: ; %entry1059; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1060; GFX8-GISEL-NEXT: v_max_u16_sdwa v0, v0, v8 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01061; GFX8-GISEL-NEXT: v_max_u16_sdwa v1, v1, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01062; GFX8-GISEL-NEXT: v_max_u16_sdwa v2, v2, v10 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01063; GFX8-GISEL-NEXT: v_max_u16_sdwa v3, v3, v11 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01064; GFX8-GISEL-NEXT: v_max_u16_sdwa v4, v4, v12 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01065; GFX8-GISEL-NEXT: v_max_u16_sdwa v5, v5, v13 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01066; GFX8-GISEL-NEXT: v_max_u16_sdwa v6, v6, v14 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01067; GFX8-GISEL-NEXT: v_max_u16_sdwa v7, v7, v15 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01068; GFX8-GISEL-NEXT: v_max_u16_e32 v0, v0, v41069; GFX8-GISEL-NEXT: v_max_u16_e32 v1, v1, v51070; GFX8-GISEL-NEXT: v_max_u16_e32 v2, v2, v61071; GFX8-GISEL-NEXT: v_max_u16_e32 v3, v3, v71072; GFX8-GISEL-NEXT: v_max_u16_e32 v0, v0, v21073; GFX8-GISEL-NEXT: v_max_u16_e32 v1, v1, v31074; GFX8-GISEL-NEXT: v_max_u16_e32 v2, 0, v21075; GFX8-GISEL-NEXT: v_max_u16_e32 v0, v0, v11076; GFX8-GISEL-NEXT: v_max_u16_e32 v1, 0, v11077; GFX8-GISEL-NEXT: v_mov_b32_e32 v4, 81078; GFX8-GISEL-NEXT: v_max_u16_e32 v2, 0, v21079; GFX8-GISEL-NEXT: v_lshlrev_b32_sdwa v1, v4, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_01080; GFX8-GISEL-NEXT: v_max_u16_e32 v3, 0, v31081; GFX8-GISEL-NEXT: v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD1082; GFX8-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v21083; GFX8-GISEL-NEXT: v_max_u16_e32 v3, 0, v31084; GFX8-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v11085; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v0, v11086; GFX8-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v31087; GFX8-GISEL-NEXT: v_lshlrev_b32_e32 v1, 24, v11088; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v0, v11089; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]1090;1091; GFX9-SDAG-LABEL: test_vector_reduce_umax_v16i8:1092; GFX9-SDAG: ; %bb.0: ; %entry1093; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1094; GFX9-SDAG-NEXT: v_and_b32_e32 v13, 0xff, v131095; GFX9-SDAG-NEXT: v_and_b32_e32 v5, 0xff, v51096; GFX9-SDAG-NEXT: v_max_u16_sdwa v1, v1, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01097; GFX9-SDAG-NEXT: v_and_b32_e32 v12, 0xff, v121098; GFX9-SDAG-NEXT: v_and_b32_e32 v4, 0xff, v41099; GFX9-SDAG-NEXT: v_max_u16_sdwa v7, v7, v15 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01100; GFX9-SDAG-NEXT: v_max_u16_sdwa v3, v3, v11 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01101; GFX9-SDAG-NEXT: v_max_u16_sdwa v0, v0, v8 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01102; GFX9-SDAG-NEXT: v_max3_u16 v1, v1, v5, v131103; GFX9-SDAG-NEXT: v_max_u16_sdwa v6, v6, v14 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01104; GFX9-SDAG-NEXT: v_max_u16_sdwa v2, v2, v10 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01105; GFX9-SDAG-NEXT: v_max3_u16 v0, v0, v4, v121106; GFX9-SDAG-NEXT: v_max3_u16 v1, v1, v3, v71107; GFX9-SDAG-NEXT: v_max3_u16 v0, v0, v2, v61108; GFX9-SDAG-NEXT: v_lshlrev_b16_e32 v1, 8, v11109; GFX9-SDAG-NEXT: v_or_b32_e32 v0, v0, v11110; GFX9-SDAG-NEXT: v_lshrrev_b32_e32 v1, 8, v01111; GFX9-SDAG-NEXT: v_max_u16_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01112; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]1113;1114; GFX9-GISEL-LABEL: test_vector_reduce_umax_v16i8:1115; GFX9-GISEL: ; %bb.0: ; %entry1116; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1117; GFX9-GISEL-NEXT: v_max_u16_sdwa v0, v0, v8 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01118; GFX9-GISEL-NEXT: v_max_u16_sdwa v1, v1, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01119; GFX9-GISEL-NEXT: v_max_u16_sdwa v2, v2, v10 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01120; GFX9-GISEL-NEXT: v_max_u16_sdwa v3, v3, v11 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01121; GFX9-GISEL-NEXT: v_max_u16_sdwa v4, v4, v12 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01122; GFX9-GISEL-NEXT: v_max_u16_sdwa v5, v5, v13 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01123; GFX9-GISEL-NEXT: v_max_u16_sdwa v6, v6, v14 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01124; GFX9-GISEL-NEXT: v_max_u16_sdwa v7, v7, v15 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_01125; GFX9-GISEL-NEXT: v_max_u16_e32 v0, v0, v41126; GFX9-GISEL-NEXT: v_max_u16_e32 v1, v1, v51127; GFX9-GISEL-NEXT: v_max_u16_e32 v2, v2, v61128; GFX9-GISEL-NEXT: v_max_u16_e32 v3, v3, v71129; GFX9-GISEL-NEXT: v_max_u16_e32 v0, v0, v21130; GFX9-GISEL-NEXT: v_max_u16_e32 v1, v1, v31131; GFX9-GISEL-NEXT: v_max_u16_e32 v2, 0, v21132; GFX9-GISEL-NEXT: v_max_u16_e32 v3, 0, v31133; GFX9-GISEL-NEXT: v_max_u16_e32 v0, v0, v11134; GFX9-GISEL-NEXT: v_max_u16_e32 v1, 0, v11135; GFX9-GISEL-NEXT: v_mov_b32_e32 v4, 81136; GFX9-GISEL-NEXT: v_mov_b32_e32 v16, 0xff1137; GFX9-GISEL-NEXT: v_max_u16_e32 v2, 0, v21138; GFX9-GISEL-NEXT: v_max_u16_e32 v3, 0, v31139; GFX9-GISEL-NEXT: v_lshlrev_b32_sdwa v1, v4, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_01140; GFX9-GISEL-NEXT: v_and_or_b32 v0, v0, v16, v11141; GFX9-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v21142; GFX9-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v31143; GFX9-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v11144; GFX9-GISEL-NEXT: v_lshlrev_b32_e32 v2, 24, v21145; GFX9-GISEL-NEXT: v_or3_b32 v0, v0, v1, v21146; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]1147;1148; GFX10-SDAG-LABEL: test_vector_reduce_umax_v16i8:1149; GFX10-SDAG: ; %bb.0: ; %entry1150; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1151; GFX10-SDAG-NEXT: v_and_b32_e32 v9, 0xff, v91152; GFX10-SDAG-NEXT: v_and_b32_e32 v1, 0xff, v11153; GFX10-SDAG-NEXT: v_and_b32_e32 v13, 0xff, v131154; GFX10-SDAG-NEXT: v_and_b32_e32 v5, 0xff, v51155; GFX10-SDAG-NEXT: v_and_b32_e32 v8, 0xff, v81156; GFX10-SDAG-NEXT: v_and_b32_e32 v0, 0xff, v01157; GFX10-SDAG-NEXT: v_and_b32_e32 v11, 0xff, v111158; GFX10-SDAG-NEXT: v_and_b32_e32 v15, 0xff, v151159; GFX10-SDAG-NEXT: v_and_b32_e32 v7, 0xff, v71160; GFX10-SDAG-NEXT: v_and_b32_e32 v3, 0xff, v31161; GFX10-SDAG-NEXT: v_max_u16 v1, v1, v91162; GFX10-SDAG-NEXT: v_and_b32_e32 v12, 0xff, v121163; GFX10-SDAG-NEXT: v_and_b32_e32 v4, 0xff, v41164; GFX10-SDAG-NEXT: v_and_b32_e32 v10, 0xff, v101165; GFX10-SDAG-NEXT: v_and_b32_e32 v2, 0xff, v21166; GFX10-SDAG-NEXT: v_and_b32_e32 v14, 0xff, v141167; GFX10-SDAG-NEXT: v_and_b32_e32 v6, 0xff, v61168; GFX10-SDAG-NEXT: v_max_u16 v7, v7, v151169; GFX10-SDAG-NEXT: v_max_u16 v3, v3, v111170; GFX10-SDAG-NEXT: v_max_u16 v0, v0, v81171; GFX10-SDAG-NEXT: v_max3_u16 v1, v1, v5, v131172; GFX10-SDAG-NEXT: v_max_u16 v5, v6, v141173; GFX10-SDAG-NEXT: v_max_u16 v2, v2, v101174; GFX10-SDAG-NEXT: v_max3_u16 v0, v0, v4, v121175; GFX10-SDAG-NEXT: v_max3_u16 v1, v1, v3, v71176; GFX10-SDAG-NEXT: v_max3_u16 v0, v0, v2, v51177; GFX10-SDAG-NEXT: v_lshlrev_b16 v1, 8, v11178; GFX10-SDAG-NEXT: v_or_b32_e32 v0, v0, v11179; GFX10-SDAG-NEXT: v_lshrrev_b32_e32 v1, 8, v01180; GFX10-SDAG-NEXT: v_and_b32_e32 v0, 0xff, v01181; GFX10-SDAG-NEXT: v_and_b32_e32 v1, 0xff, v11182; GFX10-SDAG-NEXT: v_max_u16 v0, v0, v11183; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]1184;1185; GFX10-GISEL-LABEL: test_vector_reduce_umax_v16i8:1186; GFX10-GISEL: ; %bb.0: ; %entry1187; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1188; GFX10-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v01189; GFX10-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v81190; GFX10-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v11191; GFX10-GISEL-NEXT: v_and_b32_e32 v9, 0xff, v91192; GFX10-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v31193; GFX10-GISEL-NEXT: v_and_b32_e32 v11, 0xff, v111194; GFX10-GISEL-NEXT: v_max_u16 v0, v0, v81195; GFX10-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v21196; GFX10-GISEL-NEXT: v_max_u16 v1, v1, v91197; GFX10-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v101198; GFX10-GISEL-NEXT: v_max_u16 v3, v3, v111199; GFX10-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v51200; GFX10-GISEL-NEXT: v_and_b32_e32 v9, 0xff, v131201; GFX10-GISEL-NEXT: v_and_b32_e32 v7, 0xff, v71202; GFX10-GISEL-NEXT: v_and_b32_e32 v10, 0xff, v151203; GFX10-GISEL-NEXT: v_and_b32_e32 v6, 0xff, v61204; GFX10-GISEL-NEXT: v_and_b32_e32 v11, 0xff, v141205; GFX10-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v41206; GFX10-GISEL-NEXT: v_and_b32_e32 v12, 0xff, v121207; GFX10-GISEL-NEXT: v_max_u16 v5, v5, v91208; GFX10-GISEL-NEXT: v_max_u16 v7, v7, v101209; GFX10-GISEL-NEXT: v_max_u16 v2, v2, v81210; GFX10-GISEL-NEXT: v_max_u16 v6, v6, v111211; GFX10-GISEL-NEXT: v_max_u16 v4, v4, v121212; GFX10-GISEL-NEXT: v_max_u16 v1, v1, v51213; GFX10-GISEL-NEXT: v_max_u16 v3, v3, v71214; GFX10-GISEL-NEXT: v_mov_b32_e32 v5, 81215; GFX10-GISEL-NEXT: v_max_u16 v2, v2, v61216; GFX10-GISEL-NEXT: v_max_u16 v0, v0, v41217; GFX10-GISEL-NEXT: v_max_u16 v1, v1, v31218; GFX10-GISEL-NEXT: v_max_u16 v3, v3, 01219; GFX10-GISEL-NEXT: v_max_u16 v4, v2, 01220; GFX10-GISEL-NEXT: v_max_u16 v0, v0, v21221; GFX10-GISEL-NEXT: v_max_u16 v2, v1, 01222; GFX10-GISEL-NEXT: v_max_u16 v3, v3, 01223; GFX10-GISEL-NEXT: v_max_u16 v4, v4, 01224; GFX10-GISEL-NEXT: v_max_u16 v0, v0, v11225; GFX10-GISEL-NEXT: v_lshlrev_b32_sdwa v1, v5, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_01226; GFX10-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v31227; GFX10-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v41228; GFX10-GISEL-NEXT: v_and_or_b32 v0, 0xff, v0, v11229; GFX10-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v21230; GFX10-GISEL-NEXT: v_lshlrev_b32_e32 v2, 24, v31231; GFX10-GISEL-NEXT: v_or3_b32 v0, v0, v1, v21232; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]1233;1234; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_umax_v16i8:1235; GFX11-SDAG-TRUE16: ; %bb.0: ; %entry1236; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1237; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v9.l, 0xff, v9.l1238; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v0.h, 0xff, v1.l1239; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v5.h, 0xff, v13.l1240; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v5.l, 0xff, v5.l1241; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v1.l, 0xff, v8.l1242; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v0.l, 0xff, v0.l1243; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v2.h, 0xff, v11.l1244; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v3.h, 0xff, v15.l1245; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v6.h, 0xff, v7.l1246; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v3.l, 0xff, v3.l1247; GFX11-SDAG-TRUE16-NEXT: v_max_u16 v0.h, v0.h, v9.l1248; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v4.h, 0xff, v12.l1249; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v4.l, 0xff, v4.l1250; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v1.h, 0xff, v10.l1251; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v2.l, 0xff, v2.l1252; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v7.l, 0xff, v14.l1253; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v6.l, 0xff, v6.l1254; GFX11-SDAG-TRUE16-NEXT: v_max_u16 v3.h, v6.h, v3.h1255; GFX11-SDAG-TRUE16-NEXT: v_max_u16 v2.h, v3.l, v2.h1256; GFX11-SDAG-TRUE16-NEXT: v_max_u16 v0.l, v0.l, v1.l1257; GFX11-SDAG-TRUE16-NEXT: v_max3_u16 v0.h, v0.h, v5.l, v5.h1258; GFX11-SDAG-TRUE16-NEXT: v_max_u16 v1.l, v6.l, v7.l1259; GFX11-SDAG-TRUE16-NEXT: v_max_u16 v1.h, v2.l, v1.h1260; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1261; GFX11-SDAG-TRUE16-NEXT: v_max3_u16 v0.l, v0.l, v4.l, v4.h1262; GFX11-SDAG-TRUE16-NEXT: v_max3_u16 v0.h, v0.h, v2.h, v3.h1263; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1264; GFX11-SDAG-TRUE16-NEXT: v_max3_u16 v0.l, v0.l, v1.h, v1.l1265; GFX11-SDAG-TRUE16-NEXT: v_lshlrev_b16 v0.h, 8, v0.h1266; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1267; GFX11-SDAG-TRUE16-NEXT: v_or_b16 v0.l, v0.l, v0.h1268; GFX11-SDAG-TRUE16-NEXT: v_lshrrev_b32_e32 v1, 8, v01269; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v0.l, 0xff, v0.l1270; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1271; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v0.h, 0xff, v1.l1272; GFX11-SDAG-TRUE16-NEXT: v_max_u16 v0.l, v0.l, v0.h1273; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1274;1275; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_umax_v16i8:1276; GFX11-SDAG-FAKE16: ; %bb.0: ; %entry1277; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1278; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v9, 0xff, v91279; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xff, v11280; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v13, 0xff, v131281; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v5, 0xff, v51282; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v8, 0xff, v81283; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 0xff, v01284; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v11, 0xff, v111285; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v15, 0xff, v151286; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v7, 0xff, v71287; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v3, 0xff, v31288; GFX11-SDAG-FAKE16-NEXT: v_max_u16 v1, v1, v91289; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v12, 0xff, v121290; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v4, 0xff, v41291; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v10, 0xff, v101292; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v2, 0xff, v21293; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v14, 0xff, v141294; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v6, 0xff, v61295; GFX11-SDAG-FAKE16-NEXT: v_max_u16 v7, v7, v151296; GFX11-SDAG-FAKE16-NEXT: v_max_u16 v3, v3, v111297; GFX11-SDAG-FAKE16-NEXT: v_max_u16 v0, v0, v81298; GFX11-SDAG-FAKE16-NEXT: v_max3_u16 v1, v1, v5, v131299; GFX11-SDAG-FAKE16-NEXT: v_max_u16 v5, v6, v141300; GFX11-SDAG-FAKE16-NEXT: v_max_u16 v2, v2, v101301; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1302; GFX11-SDAG-FAKE16-NEXT: v_max3_u16 v0, v0, v4, v121303; GFX11-SDAG-FAKE16-NEXT: v_max3_u16 v1, v1, v3, v71304; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1305; GFX11-SDAG-FAKE16-NEXT: v_max3_u16 v0, v0, v2, v51306; GFX11-SDAG-FAKE16-NEXT: v_lshlrev_b16 v1, 8, v11307; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1308; GFX11-SDAG-FAKE16-NEXT: v_or_b32_e32 v0, v0, v11309; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 8, v01310; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 0xff, v01311; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1312; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xff, v11313; GFX11-SDAG-FAKE16-NEXT: v_max_u16 v0, v0, v11314; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1315;1316; GFX11-GISEL-LABEL: test_vector_reduce_umax_v16i8:1317; GFX11-GISEL: ; %bb.0: ; %entry1318; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1319; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v11320; GFX11-GISEL-NEXT: v_and_b32_e32 v9, 0xff, v91321; GFX11-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v21322; GFX11-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v31323; GFX11-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v51324; GFX11-GISEL-NEXT: v_and_b32_e32 v7, 0xff, v71325; GFX11-GISEL-NEXT: v_max_u16 v1, v1, v91326; GFX11-GISEL-NEXT: v_and_b32_e32 v9, 0xff, v101327; GFX11-GISEL-NEXT: v_and_b32_e32 v10, 0xff, v111328; GFX11-GISEL-NEXT: v_and_b32_e32 v11, 0xff, v131329; GFX11-GISEL-NEXT: v_and_b32_e32 v13, 0xff, v151330; GFX11-GISEL-NEXT: v_and_b32_e32 v6, 0xff, v61331; GFX11-GISEL-NEXT: v_max_u16 v2, v2, v91332; GFX11-GISEL-NEXT: v_max_u16 v3, v3, v101333; GFX11-GISEL-NEXT: v_max_u16 v5, v5, v111334; GFX11-GISEL-NEXT: v_max_u16 v7, v7, v131335; GFX11-GISEL-NEXT: v_and_b32_e32 v9, 0xff, v141336; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v01337; GFX11-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v81338; GFX11-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v41339; GFX11-GISEL-NEXT: v_and_b32_e32 v10, 0xff, v121340; GFX11-GISEL-NEXT: v_max_u16 v1, v1, v51341; GFX11-GISEL-NEXT: v_max_u16 v3, v3, v71342; GFX11-GISEL-NEXT: v_max_u16 v5, v6, v91343; GFX11-GISEL-NEXT: v_max_u16 v0, v0, v81344; GFX11-GISEL-NEXT: v_max_u16 v4, v4, v101345; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1346; GFX11-GISEL-NEXT: v_max_u16 v1, v1, v31347; GFX11-GISEL-NEXT: v_max_u16 v2, v2, v51348; GFX11-GISEL-NEXT: v_max_u16 v3, v3, 01349; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1350; GFX11-GISEL-NEXT: v_max_u16 v0, v0, v41351; GFX11-GISEL-NEXT: v_max_u16 v4, v1, 01352; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1353; GFX11-GISEL-NEXT: v_max_u16 v5, v2, 01354; GFX11-GISEL-NEXT: v_max_u16 v3, v3, 01355; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1356; GFX11-GISEL-NEXT: v_max_u16 v0, v0, v21357; GFX11-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v41358; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1359; GFX11-GISEL-NEXT: v_max_u16 v4, v5, 01360; GFX11-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v31361; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1362; GFX11-GISEL-NEXT: v_max_u16 v0, v0, v11363; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v1, 8, v21364; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)1365; GFX11-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v41366; GFX11-GISEL-NEXT: v_and_or_b32 v0, 0xff, v0, v11367; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)1368; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v21369; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v2, 24, v31370; GFX11-GISEL-NEXT: v_or3_b32 v0, v0, v1, v21371; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1372;1373; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_umax_v16i8:1374; GFX12-SDAG-TRUE16: ; %bb.0: ; %entry1375; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01376; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x01377; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x01378; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x01379; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x01380; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v9.l, 0xff, v9.l1381; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v0.h, 0xff, v1.l1382; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v5.h, 0xff, v13.l1383; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v5.l, 0xff, v5.l1384; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v1.l, 0xff, v8.l1385; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v0.l, 0xff, v0.l1386; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v2.h, 0xff, v11.l1387; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v3.h, 0xff, v15.l1388; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v6.h, 0xff, v7.l1389; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v3.l, 0xff, v3.l1390; GFX12-SDAG-TRUE16-NEXT: v_max_u16 v0.h, v0.h, v9.l1391; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v4.h, 0xff, v12.l1392; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v4.l, 0xff, v4.l1393; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v1.h, 0xff, v10.l1394; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v2.l, 0xff, v2.l1395; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v7.l, 0xff, v14.l1396; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v6.l, 0xff, v6.l1397; GFX12-SDAG-TRUE16-NEXT: v_max_u16 v3.h, v6.h, v3.h1398; GFX12-SDAG-TRUE16-NEXT: v_max_u16 v2.h, v3.l, v2.h1399; GFX12-SDAG-TRUE16-NEXT: v_max_u16 v0.l, v0.l, v1.l1400; GFX12-SDAG-TRUE16-NEXT: v_max3_u16 v0.h, v0.h, v5.l, v5.h1401; GFX12-SDAG-TRUE16-NEXT: v_max_u16 v1.l, v6.l, v7.l1402; GFX12-SDAG-TRUE16-NEXT: v_max_u16 v1.h, v2.l, v1.h1403; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1404; GFX12-SDAG-TRUE16-NEXT: v_max3_u16 v0.l, v0.l, v4.l, v4.h1405; GFX12-SDAG-TRUE16-NEXT: v_max3_u16 v0.h, v0.h, v2.h, v3.h1406; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1407; GFX12-SDAG-TRUE16-NEXT: v_max3_u16 v0.l, v0.l, v1.h, v1.l1408; GFX12-SDAG-TRUE16-NEXT: v_lshlrev_b16 v0.h, 8, v0.h1409; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1410; GFX12-SDAG-TRUE16-NEXT: v_or_b16 v0.l, v0.l, v0.h1411; GFX12-SDAG-TRUE16-NEXT: v_lshrrev_b32_e32 v1, 8, v01412; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v0.l, 0xff, v0.l1413; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1414; GFX12-SDAG-TRUE16-NEXT: v_and_b16 v0.h, 0xff, v1.l1415; GFX12-SDAG-TRUE16-NEXT: v_max_u16 v0.l, v0.l, v0.h1416; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1417;1418; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_umax_v16i8:1419; GFX12-SDAG-FAKE16: ; %bb.0: ; %entry1420; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01421; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x01422; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x01423; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x01424; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x01425; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v9, 0xff, v91426; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xff, v11427; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v13, 0xff, v131428; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v5, 0xff, v51429; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v8, 0xff, v81430; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 0xff, v01431; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v11, 0xff, v111432; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v15, 0xff, v151433; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v7, 0xff, v71434; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v3, 0xff, v31435; GFX12-SDAG-FAKE16-NEXT: v_max_u16 v1, v1, v91436; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v12, 0xff, v121437; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v4, 0xff, v41438; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v10, 0xff, v101439; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v2, 0xff, v21440; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v14, 0xff, v141441; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v6, 0xff, v61442; GFX12-SDAG-FAKE16-NEXT: v_max_u16 v7, v7, v151443; GFX12-SDAG-FAKE16-NEXT: v_max_u16 v3, v3, v111444; GFX12-SDAG-FAKE16-NEXT: v_max_u16 v0, v0, v81445; GFX12-SDAG-FAKE16-NEXT: v_max3_u16 v1, v1, v5, v131446; GFX12-SDAG-FAKE16-NEXT: v_max_u16 v5, v6, v141447; GFX12-SDAG-FAKE16-NEXT: v_max_u16 v2, v2, v101448; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1449; GFX12-SDAG-FAKE16-NEXT: v_max3_u16 v0, v0, v4, v121450; GFX12-SDAG-FAKE16-NEXT: v_max3_u16 v1, v1, v3, v71451; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1452; GFX12-SDAG-FAKE16-NEXT: v_max3_u16 v0, v0, v2, v51453; GFX12-SDAG-FAKE16-NEXT: v_lshlrev_b16 v1, 8, v11454; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1455; GFX12-SDAG-FAKE16-NEXT: v_or_b32_e32 v0, v0, v11456; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 8, v01457; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 0xff, v01458; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1459; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xff, v11460; GFX12-SDAG-FAKE16-NEXT: v_max_u16 v0, v0, v11461; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1462;1463; GFX12-GISEL-LABEL: test_vector_reduce_umax_v16i8:1464; GFX12-GISEL: ; %bb.0: ; %entry1465; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01466; GFX12-GISEL-NEXT: s_wait_expcnt 0x01467; GFX12-GISEL-NEXT: s_wait_samplecnt 0x01468; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x01469; GFX12-GISEL-NEXT: s_wait_kmcnt 0x01470; GFX12-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v11471; GFX12-GISEL-NEXT: v_and_b32_e32 v9, 0xff, v91472; GFX12-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v21473; GFX12-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v31474; GFX12-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v51475; GFX12-GISEL-NEXT: v_and_b32_e32 v7, 0xff, v71476; GFX12-GISEL-NEXT: v_max_u16 v1, v1, v91477; GFX12-GISEL-NEXT: v_and_b32_e32 v9, 0xff, v101478; GFX12-GISEL-NEXT: v_and_b32_e32 v10, 0xff, v111479; GFX12-GISEL-NEXT: v_and_b32_e32 v11, 0xff, v131480; GFX12-GISEL-NEXT: v_and_b32_e32 v13, 0xff, v151481; GFX12-GISEL-NEXT: v_and_b32_e32 v6, 0xff, v61482; GFX12-GISEL-NEXT: v_max_u16 v2, v2, v91483; GFX12-GISEL-NEXT: v_max_u16 v3, v3, v101484; GFX12-GISEL-NEXT: v_max_u16 v5, v5, v111485; GFX12-GISEL-NEXT: v_max_u16 v7, v7, v131486; GFX12-GISEL-NEXT: v_and_b32_e32 v9, 0xff, v141487; GFX12-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v01488; GFX12-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v81489; GFX12-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v41490; GFX12-GISEL-NEXT: v_and_b32_e32 v10, 0xff, v121491; GFX12-GISEL-NEXT: v_max_u16 v1, v1, v51492; GFX12-GISEL-NEXT: v_max_u16 v3, v3, v71493; GFX12-GISEL-NEXT: v_max_u16 v5, v6, v91494; GFX12-GISEL-NEXT: v_max_u16 v0, v0, v81495; GFX12-GISEL-NEXT: v_max_u16 v4, v4, v101496; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1497; GFX12-GISEL-NEXT: v_max_u16 v1, v1, v31498; GFX12-GISEL-NEXT: v_max_u16 v2, v2, v51499; GFX12-GISEL-NEXT: v_max_u16 v3, v3, 01500; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1501; GFX12-GISEL-NEXT: v_max_u16 v0, v0, v41502; GFX12-GISEL-NEXT: v_max_u16 v4, v1, 01503; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1504; GFX12-GISEL-NEXT: v_max_u16 v5, v2, 01505; GFX12-GISEL-NEXT: v_max_u16 v3, v3, 01506; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1507; GFX12-GISEL-NEXT: v_max_u16 v0, v0, v21508; GFX12-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v41509; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1510; GFX12-GISEL-NEXT: v_max_u16 v4, v5, 01511; GFX12-GISEL-NEXT: v_and_b32_e32 v3, 0xff, v31512; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1513; GFX12-GISEL-NEXT: v_max_u16 v0, v0, v11514; GFX12-GISEL-NEXT: v_lshlrev_b32_e32 v1, 8, v21515; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)1516; GFX12-GISEL-NEXT: v_and_b32_e32 v2, 0xff, v41517; GFX12-GISEL-NEXT: v_and_or_b32 v0, 0xff, v0, v11518; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)1519; GFX12-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v21520; GFX12-GISEL-NEXT: v_lshlrev_b32_e32 v2, 24, v31521; GFX12-GISEL-NEXT: v_or3_b32 v0, v0, v1, v21522; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]1523entry:1524 %res = call i8 @llvm.vector.reduce.umax.v16i8(<16 x i8> %v)1525 ret i8 %res1526}1527 1528; FIXME: With -new-reg-bank-select, v_alignbit_b32 is regression. Need pattern to look through COPY.1529define i16 @test_vector_reduce_umax_v2i16(<2 x i16> %v) {1530; GFX7-SDAG-LABEL: test_vector_reduce_umax_v2i16:1531; GFX7-SDAG: ; %bb.0: ; %entry1532; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1533; GFX7-SDAG-NEXT: v_and_b32_e32 v1, 0xffff, v11534; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 0xffff, v01535; GFX7-SDAG-NEXT: v_max_u32_e32 v0, v0, v11536; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]1537;1538; GFX7-GISEL-LABEL: test_vector_reduce_umax_v2i16:1539; GFX7-GISEL: ; %bb.0: ; %entry1540; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1541; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0xffff, v01542; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xffff, v11543; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v11544; GFX7-GISEL-NEXT: v_max_u32_e32 v1, 0, v11545; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v11546; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v11547; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]1548;1549; GFX8-SDAG-LABEL: test_vector_reduce_umax_v2i16:1550; GFX8-SDAG: ; %bb.0: ; %entry1551; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1552; GFX8-SDAG-NEXT: v_max_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11553; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]1554;1555; GFX8-GISEL-LABEL: test_vector_reduce_umax_v2i16:1556; GFX8-GISEL: ; %bb.0: ; %entry1557; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1558; GFX8-GISEL-NEXT: v_mov_b32_e32 v2, s41559; GFX8-GISEL-NEXT: v_max_u16_sdwa v1, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11560; GFX8-GISEL-NEXT: v_max_u16_sdwa v0, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD1561; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v1, v01562; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]1563;1564; GFX9-SDAG-LABEL: test_vector_reduce_umax_v2i16:1565; GFX9-SDAG: ; %bb.0: ; %entry1566; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1567; GFX9-SDAG-NEXT: v_max_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11568; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]1569;1570; GFX9-GISEL-LABEL: test_vector_reduce_umax_v2i16:1571; GFX9-GISEL: ; %bb.0: ; %entry1572; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1573; GFX9-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 161574; GFX9-GISEL-NEXT: v_pk_max_u16 v0, v0, v11575; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]1576;1577; GFX10-SDAG-LABEL: test_vector_reduce_umax_v2i16:1578; GFX10-SDAG: ; %bb.0: ; %entry1579; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1580; GFX10-SDAG-NEXT: v_lshrrev_b32_e32 v1, 16, v01581; GFX10-SDAG-NEXT: v_max_u16 v0, v0, v11582; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]1583;1584; GFX10-GISEL-LABEL: test_vector_reduce_umax_v2i16:1585; GFX10-GISEL: ; %bb.0: ; %entry1586; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1587; GFX10-GISEL-NEXT: v_alignbit_b32 v1, s4, v0, 161588; GFX10-GISEL-NEXT: v_pk_max_u16 v0, v0, v11589; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]1590;1591; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_umax_v2i16:1592; GFX11-SDAG-TRUE16: ; %bb.0: ; %entry1593; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1594; GFX11-SDAG-TRUE16-NEXT: v_max_u16 v0.l, v0.l, v0.h1595; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1596;1597; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_umax_v2i16:1598; GFX11-SDAG-FAKE16: ; %bb.0: ; %entry1599; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1600; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v01601; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1602; GFX11-SDAG-FAKE16-NEXT: v_max_u16 v0, v0, v11603; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1604;1605; GFX11-GISEL-LABEL: test_vector_reduce_umax_v2i16:1606; GFX11-GISEL: ; %bb.0: ; %entry1607; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1608; GFX11-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 161609; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)1610; GFX11-GISEL-NEXT: v_pk_max_u16 v0, v0, v11611; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1612;1613; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_umax_v2i16:1614; GFX12-SDAG-TRUE16: ; %bb.0: ; %entry1615; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01616; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x01617; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x01618; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x01619; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x01620; GFX12-SDAG-TRUE16-NEXT: v_max_u16 v0.l, v0.l, v0.h1621; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1622;1623; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_umax_v2i16:1624; GFX12-SDAG-FAKE16: ; %bb.0: ; %entry1625; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01626; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x01627; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x01628; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x01629; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x01630; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v01631; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1632; GFX12-SDAG-FAKE16-NEXT: v_max_u16 v0, v0, v11633; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1634;1635; GFX12-GISEL-LABEL: test_vector_reduce_umax_v2i16:1636; GFX12-GISEL: ; %bb.0: ; %entry1637; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01638; GFX12-GISEL-NEXT: s_wait_expcnt 0x01639; GFX12-GISEL-NEXT: s_wait_samplecnt 0x01640; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x01641; GFX12-GISEL-NEXT: s_wait_kmcnt 0x01642; GFX12-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 161643; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)1644; GFX12-GISEL-NEXT: v_pk_max_u16 v0, v0, v11645; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]1646entry:1647 %res = call i16 @llvm.vector.reduce.umax.v2i16(<2 x i16> %v)1648 ret i16 %res1649}1650 1651define i16 @test_vector_reduce_umax_v3i16(<3 x i16> %v) {1652; GFX7-SDAG-LABEL: test_vector_reduce_umax_v3i16:1653; GFX7-SDAG: ; %bb.0: ; %entry1654; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1655; GFX7-SDAG-NEXT: v_and_b32_e32 v2, 0xffff, v21656; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 0xffff, v01657; GFX7-SDAG-NEXT: v_max_u32_e32 v0, v0, v21658; GFX7-SDAG-NEXT: v_and_b32_e32 v1, 0xffff, v11659; GFX7-SDAG-NEXT: v_max3_u32 v0, v0, v1, 01660; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]1661;1662; GFX7-GISEL-LABEL: test_vector_reduce_umax_v3i16:1663; GFX7-GISEL: ; %bb.0: ; %entry1664; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1665; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0xffff, v01666; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xffff, v11667; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v11668; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xffff, v21669; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v11670; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]1671;1672; GFX8-LABEL: test_vector_reduce_umax_v3i16:1673; GFX8: ; %bb.0: ; %entry1674; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1675; GFX8-NEXT: v_max_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11676; GFX8-NEXT: v_max_u16_e32 v0, v0, v11677; GFX8-NEXT: s_setpc_b64 s[30:31]1678;1679; GFX9-SDAG-LABEL: test_vector_reduce_umax_v3i16:1680; GFX9-SDAG: ; %bb.0: ; %entry1681; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1682; GFX9-SDAG-NEXT: v_and_b32_e32 v1, 0xffff, v11683; GFX9-SDAG-NEXT: v_pk_max_u16 v0, v0, v11684; GFX9-SDAG-NEXT: s_nop 01685; GFX9-SDAG-NEXT: v_max_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11686; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]1687;1688; GFX9-GISEL-LABEL: test_vector_reduce_umax_v3i16:1689; GFX9-GISEL: ; %bb.0: ; %entry1690; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1691; GFX9-GISEL-NEXT: v_max_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11692; GFX9-GISEL-NEXT: v_max_u16_e32 v0, v0, v11693; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]1694;1695; GFX10-SDAG-LABEL: test_vector_reduce_umax_v3i16:1696; GFX10-SDAG: ; %bb.0: ; %entry1697; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1698; GFX10-SDAG-NEXT: v_and_b32_e32 v1, 0xffff, v11699; GFX10-SDAG-NEXT: v_pk_max_u16 v0, v0, v11700; GFX10-SDAG-NEXT: v_lshrrev_b32_e32 v1, 16, v01701; GFX10-SDAG-NEXT: v_max_u16 v0, v0, v11702; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]1703;1704; GFX10-GISEL-LABEL: test_vector_reduce_umax_v3i16:1705; GFX10-GISEL: ; %bb.0: ; %entry1706; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1707; GFX10-GISEL-NEXT: v_lshrrev_b32_e32 v2, 16, v01708; GFX10-GISEL-NEXT: v_max_u16 v0, v0, v21709; GFX10-GISEL-NEXT: v_max_u16 v0, v0, v11710; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]1711;1712; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_umax_v3i16:1713; GFX11-SDAG-TRUE16: ; %bb.0: ; %entry1714; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1715; GFX11-SDAG-TRUE16-NEXT: v_mov_b16_e32 v1.h, 01716; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1717; GFX11-SDAG-TRUE16-NEXT: v_pk_max_u16 v0, v0, v11718; GFX11-SDAG-TRUE16-NEXT: v_max_u16 v0.l, v0.l, v0.h1719; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1720;1721; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_umax_v3i16:1722; GFX11-SDAG-FAKE16: ; %bb.0: ; %entry1723; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1724; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xffff, v11725; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1726; GFX11-SDAG-FAKE16-NEXT: v_pk_max_u16 v0, v0, v11727; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v01728; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1729; GFX11-SDAG-FAKE16-NEXT: v_max_u16 v0, v0, v11730; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1731;1732; GFX11-GISEL-LABEL: test_vector_reduce_umax_v3i16:1733; GFX11-GISEL: ; %bb.0: ; %entry1734; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1735; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v2, 16, v01736; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1737; GFX11-GISEL-NEXT: v_max_u16 v0, v0, v21738; GFX11-GISEL-NEXT: v_max_u16 v0, v0, v11739; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1740;1741; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_umax_v3i16:1742; GFX12-SDAG-TRUE16: ; %bb.0: ; %entry1743; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01744; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x01745; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x01746; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x01747; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x01748; GFX12-SDAG-TRUE16-NEXT: v_mov_b16_e32 v1.h, 01749; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1750; GFX12-SDAG-TRUE16-NEXT: v_pk_max_u16 v0, v0, v11751; GFX12-SDAG-TRUE16-NEXT: v_max_u16 v0.l, v0.l, v0.h1752; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1753;1754; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_umax_v3i16:1755; GFX12-SDAG-FAKE16: ; %bb.0: ; %entry1756; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01757; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x01758; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x01759; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x01760; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x01761; GFX12-SDAG-FAKE16-NEXT: v_and_b32_e32 v1, 0xffff, v11762; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1763; GFX12-SDAG-FAKE16-NEXT: v_pk_max_u16 v0, v0, v11764; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v01765; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1766; GFX12-SDAG-FAKE16-NEXT: v_max_u16 v0, v0, v11767; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1768;1769; GFX12-GISEL-LABEL: test_vector_reduce_umax_v3i16:1770; GFX12-GISEL: ; %bb.0: ; %entry1771; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01772; GFX12-GISEL-NEXT: s_wait_expcnt 0x01773; GFX12-GISEL-NEXT: s_wait_samplecnt 0x01774; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x01775; GFX12-GISEL-NEXT: s_wait_kmcnt 0x01776; GFX12-GISEL-NEXT: v_lshrrev_b32_e32 v2, 16, v01777; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1778; GFX12-GISEL-NEXT: v_max_u16 v0, v0, v21779; GFX12-GISEL-NEXT: v_max_u16 v0, v0, v11780; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]1781entry:1782 %res = call i16 @llvm.vector.reduce.umax.v3i16(<3 x i16> %v)1783 ret i16 %res1784}1785 1786; FIXME: With -new-reg-bank-select, v_alignbit_b32 is regression. Need pattern to look through COPY.1787define i16 @test_vector_reduce_umax_v4i16(<4 x i16> %v) {1788; GFX7-SDAG-LABEL: test_vector_reduce_umax_v4i16:1789; GFX7-SDAG: ; %bb.0: ; %entry1790; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1791; GFX7-SDAG-NEXT: v_and_b32_e32 v3, 0xffff, v31792; GFX7-SDAG-NEXT: v_and_b32_e32 v1, 0xffff, v11793; GFX7-SDAG-NEXT: v_and_b32_e32 v2, 0xffff, v21794; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 0xffff, v01795; GFX7-SDAG-NEXT: v_max_u32_e32 v1, v1, v31796; GFX7-SDAG-NEXT: v_max3_u32 v0, v0, v2, v11797; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]1798;1799; GFX7-GISEL-LABEL: test_vector_reduce_umax_v4i16:1800; GFX7-GISEL: ; %bb.0: ; %entry1801; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1802; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0xffff, v01803; GFX7-GISEL-NEXT: v_and_b32_e32 v2, 0xffff, v21804; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v21805; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xffff, v11806; GFX7-GISEL-NEXT: v_and_b32_e32 v2, 0xffff, v31807; GFX7-GISEL-NEXT: v_max_u32_e32 v1, v1, v21808; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v11809; GFX7-GISEL-NEXT: v_max_u32_e32 v1, 0, v11810; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v11811; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v11812; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]1813;1814; GFX8-SDAG-LABEL: test_vector_reduce_umax_v4i16:1815; GFX8-SDAG: ; %bb.0: ; %entry1816; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1817; GFX8-SDAG-NEXT: v_max_u16_sdwa v2, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11818; GFX8-SDAG-NEXT: v_max_u16_e32 v0, v0, v11819; GFX8-SDAG-NEXT: v_max_u16_e32 v0, v0, v21820; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]1821;1822; GFX8-GISEL-LABEL: test_vector_reduce_umax_v4i16:1823; GFX8-GISEL: ; %bb.0: ; %entry1824; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1825; GFX8-GISEL-NEXT: v_max_u16_e32 v2, v0, v11826; GFX8-GISEL-NEXT: v_max_u16_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11827; GFX8-GISEL-NEXT: v_max_u16_e32 v1, v2, v01828; GFX8-GISEL-NEXT: v_mov_b32_e32 v2, s41829; GFX8-GISEL-NEXT: v_max_u16_sdwa v0, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD1830; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v1, v01831; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]1832;1833; GFX9-SDAG-LABEL: test_vector_reduce_umax_v4i16:1834; GFX9-SDAG: ; %bb.0: ; %entry1835; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1836; GFX9-SDAG-NEXT: v_pk_max_u16 v0, v0, v11837; GFX9-SDAG-NEXT: s_nop 01838; GFX9-SDAG-NEXT: v_max_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_11839; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]1840;1841; GFX9-GISEL-LABEL: test_vector_reduce_umax_v4i16:1842; GFX9-GISEL: ; %bb.0: ; %entry1843; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1844; GFX9-GISEL-NEXT: v_pk_max_u16 v0, v0, v11845; GFX9-GISEL-NEXT: s_nop 01846; GFX9-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 161847; GFX9-GISEL-NEXT: v_pk_max_u16 v0, v0, v11848; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]1849;1850; GFX10-SDAG-LABEL: test_vector_reduce_umax_v4i16:1851; GFX10-SDAG: ; %bb.0: ; %entry1852; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1853; GFX10-SDAG-NEXT: v_pk_max_u16 v0, v0, v11854; GFX10-SDAG-NEXT: v_lshrrev_b32_e32 v1, 16, v01855; GFX10-SDAG-NEXT: v_max_u16 v0, v0, v11856; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]1857;1858; GFX10-GISEL-LABEL: test_vector_reduce_umax_v4i16:1859; GFX10-GISEL: ; %bb.0: ; %entry1860; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1861; GFX10-GISEL-NEXT: v_pk_max_u16 v0, v0, v11862; GFX10-GISEL-NEXT: v_alignbit_b32 v1, s4, v0, 161863; GFX10-GISEL-NEXT: v_pk_max_u16 v0, v0, v11864; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]1865;1866; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_umax_v4i16:1867; GFX11-SDAG-TRUE16: ; %bb.0: ; %entry1868; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1869; GFX11-SDAG-TRUE16-NEXT: v_pk_max_u16 v0, v0, v11870; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1871; GFX11-SDAG-TRUE16-NEXT: v_max_u16 v0.l, v0.l, v0.h1872; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1873;1874; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_umax_v4i16:1875; GFX11-SDAG-FAKE16: ; %bb.0: ; %entry1876; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1877; GFX11-SDAG-FAKE16-NEXT: v_pk_max_u16 v0, v0, v11878; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1879; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v01880; GFX11-SDAG-FAKE16-NEXT: v_max_u16 v0, v0, v11881; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1882;1883; GFX11-GISEL-LABEL: test_vector_reduce_umax_v4i16:1884; GFX11-GISEL: ; %bb.0: ; %entry1885; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1886; GFX11-GISEL-NEXT: v_pk_max_u16 v0, v0, v11887; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1888; GFX11-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 161889; GFX11-GISEL-NEXT: v_pk_max_u16 v0, v0, v11890; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1891;1892; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_umax_v4i16:1893; GFX12-SDAG-TRUE16: ; %bb.0: ; %entry1894; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01895; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x01896; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x01897; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x01898; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x01899; GFX12-SDAG-TRUE16-NEXT: v_pk_max_u16 v0, v0, v11900; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1901; GFX12-SDAG-TRUE16-NEXT: v_max_u16 v0.l, v0.l, v0.h1902; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1903;1904; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_umax_v4i16:1905; GFX12-SDAG-FAKE16: ; %bb.0: ; %entry1906; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01907; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x01908; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x01909; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x01910; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x01911; GFX12-SDAG-FAKE16-NEXT: v_pk_max_u16 v0, v0, v11912; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1913; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v01914; GFX12-SDAG-FAKE16-NEXT: v_max_u16 v0, v0, v11915; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1916;1917; GFX12-GISEL-LABEL: test_vector_reduce_umax_v4i16:1918; GFX12-GISEL: ; %bb.0: ; %entry1919; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01920; GFX12-GISEL-NEXT: s_wait_expcnt 0x01921; GFX12-GISEL-NEXT: s_wait_samplecnt 0x01922; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x01923; GFX12-GISEL-NEXT: s_wait_kmcnt 0x01924; GFX12-GISEL-NEXT: v_pk_max_u16 v0, v0, v11925; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1926; GFX12-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 161927; GFX12-GISEL-NEXT: v_pk_max_u16 v0, v0, v11928; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]1929entry:1930 %res = call i16 @llvm.vector.reduce.umax.v4i16(<4 x i16> %v)1931 ret i16 %res1932}1933 1934; FIXME: With -new-reg-bank-select, v_alignbit_b32 is regression. Need pattern to look through COPY.1935define i16 @test_vector_reduce_umax_v8i16(<8 x i16> %v) {1936; GFX7-SDAG-LABEL: test_vector_reduce_umax_v8i16:1937; GFX7-SDAG: ; %bb.0: ; %entry1938; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1939; GFX7-SDAG-NEXT: v_and_b32_e32 v5, 0xffff, v51940; GFX7-SDAG-NEXT: v_and_b32_e32 v1, 0xffff, v11941; GFX7-SDAG-NEXT: v_and_b32_e32 v4, 0xffff, v41942; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 0xffff, v01943; GFX7-SDAG-NEXT: v_and_b32_e32 v6, 0xffff, v61944; GFX7-SDAG-NEXT: v_and_b32_e32 v2, 0xffff, v21945; GFX7-SDAG-NEXT: v_and_b32_e32 v7, 0xffff, v71946; GFX7-SDAG-NEXT: v_and_b32_e32 v3, 0xffff, v31947; GFX7-SDAG-NEXT: v_max_u32_e32 v0, v0, v41948; GFX7-SDAG-NEXT: v_max_u32_e32 v1, v1, v51949; GFX7-SDAG-NEXT: v_max3_u32 v1, v1, v3, v71950; GFX7-SDAG-NEXT: v_max3_u32 v0, v0, v2, v61951; GFX7-SDAG-NEXT: v_max_u32_e32 v0, v0, v11952; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]1953;1954; GFX7-GISEL-LABEL: test_vector_reduce_umax_v8i16:1955; GFX7-GISEL: ; %bb.0: ; %entry1956; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1957; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0xffff, v01958; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xffff, v41959; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v41960; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xffff, v11961; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xffff, v51962; GFX7-GISEL-NEXT: v_max_u32_e32 v1, v1, v41963; GFX7-GISEL-NEXT: v_and_b32_e32 v2, 0xffff, v21964; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xffff, v61965; GFX7-GISEL-NEXT: v_max_u32_e32 v2, v2, v41966; GFX7-GISEL-NEXT: v_and_b32_e32 v3, 0xffff, v31967; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xffff, v71968; GFX7-GISEL-NEXT: v_max_u32_e32 v3, v3, v41969; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v21970; GFX7-GISEL-NEXT: v_max_u32_e32 v1, v1, v31971; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v11972; GFX7-GISEL-NEXT: v_max_u32_e32 v1, 0, v11973; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v11974; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v11975; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]1976;1977; GFX8-SDAG-LABEL: test_vector_reduce_umax_v8i16:1978; GFX8-SDAG: ; %bb.0: ; %entry1979; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1980; GFX8-SDAG-NEXT: v_max_u16_sdwa v4, v1, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11981; GFX8-SDAG-NEXT: v_max_u16_sdwa v5, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11982; GFX8-SDAG-NEXT: v_max_u16_e32 v1, v1, v31983; GFX8-SDAG-NEXT: v_max_u16_e32 v0, v0, v21984; GFX8-SDAG-NEXT: v_max_u16_e32 v2, v5, v41985; GFX8-SDAG-NEXT: v_max_u16_e32 v0, v0, v11986; GFX8-SDAG-NEXT: v_max_u16_e32 v0, v0, v21987; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]1988;1989; GFX8-GISEL-LABEL: test_vector_reduce_umax_v8i16:1990; GFX8-GISEL: ; %bb.0: ; %entry1991; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1992; GFX8-GISEL-NEXT: v_max_u16_e32 v4, v0, v21993; GFX8-GISEL-NEXT: v_max_u16_sdwa v0, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11994; GFX8-GISEL-NEXT: v_max_u16_e32 v2, v1, v31995; GFX8-GISEL-NEXT: v_max_u16_sdwa v1, v1, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11996; GFX8-GISEL-NEXT: v_max_u16_e32 v2, v4, v21997; GFX8-GISEL-NEXT: v_max_u16_e32 v0, v0, v11998; GFX8-GISEL-NEXT: v_max_u16_e32 v1, v2, v01999; GFX8-GISEL-NEXT: v_mov_b32_e32 v2, s42000; GFX8-GISEL-NEXT: v_max_u16_sdwa v0, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD2001; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v1, v02002; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]2003;2004; GFX9-SDAG-LABEL: test_vector_reduce_umax_v8i16:2005; GFX9-SDAG: ; %bb.0: ; %entry2006; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2007; GFX9-SDAG-NEXT: v_pk_max_u16 v1, v1, v32008; GFX9-SDAG-NEXT: v_pk_max_u16 v0, v0, v22009; GFX9-SDAG-NEXT: s_nop 02010; GFX9-SDAG-NEXT: v_pk_max_u16 v0, v0, v12011; GFX9-SDAG-NEXT: s_nop 02012; GFX9-SDAG-NEXT: v_max_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_12013; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]2014;2015; GFX9-GISEL-LABEL: test_vector_reduce_umax_v8i16:2016; GFX9-GISEL: ; %bb.0: ; %entry2017; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2018; GFX9-GISEL-NEXT: v_pk_max_u16 v0, v0, v22019; GFX9-GISEL-NEXT: v_pk_max_u16 v1, v1, v32020; GFX9-GISEL-NEXT: s_nop 02021; GFX9-GISEL-NEXT: v_pk_max_u16 v0, v0, v12022; GFX9-GISEL-NEXT: s_nop 02023; GFX9-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 162024; GFX9-GISEL-NEXT: v_pk_max_u16 v0, v0, v12025; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2026;2027; GFX10-SDAG-LABEL: test_vector_reduce_umax_v8i16:2028; GFX10-SDAG: ; %bb.0: ; %entry2029; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2030; GFX10-SDAG-NEXT: v_pk_max_u16 v1, v1, v32031; GFX10-SDAG-NEXT: v_pk_max_u16 v0, v0, v22032; GFX10-SDAG-NEXT: v_pk_max_u16 v0, v0, v12033; GFX10-SDAG-NEXT: v_lshrrev_b32_e32 v1, 16, v02034; GFX10-SDAG-NEXT: v_max_u16 v0, v0, v12035; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]2036;2037; GFX10-GISEL-LABEL: test_vector_reduce_umax_v8i16:2038; GFX10-GISEL: ; %bb.0: ; %entry2039; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2040; GFX10-GISEL-NEXT: v_pk_max_u16 v0, v0, v22041; GFX10-GISEL-NEXT: v_pk_max_u16 v1, v1, v32042; GFX10-GISEL-NEXT: v_pk_max_u16 v0, v0, v12043; GFX10-GISEL-NEXT: v_alignbit_b32 v1, s4, v0, 162044; GFX10-GISEL-NEXT: v_pk_max_u16 v0, v0, v12045; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]2046;2047; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_umax_v8i16:2048; GFX11-SDAG-TRUE16: ; %bb.0: ; %entry2049; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2050; GFX11-SDAG-TRUE16-NEXT: v_pk_max_u16 v1, v1, v32051; GFX11-SDAG-TRUE16-NEXT: v_pk_max_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_max_u16 v0, v0, v12054; GFX11-SDAG-TRUE16-NEXT: v_max_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_umax_v8i16: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_max_u16 v1, v1, v32061; GFX11-SDAG-FAKE16-NEXT: v_pk_max_u16 v0, v0, v22062; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2063; GFX11-SDAG-FAKE16-NEXT: v_pk_max_u16 v0, v0, v12064; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v02065; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)2066; GFX11-SDAG-FAKE16-NEXT: v_max_u16 v0, v0, v12067; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]2068;2069; GFX11-GISEL-LABEL: test_vector_reduce_umax_v8i16:2070; GFX11-GISEL: ; %bb.0: ; %entry2071; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2072; GFX11-GISEL-NEXT: v_pk_max_u16 v0, v0, v22073; GFX11-GISEL-NEXT: v_pk_max_u16 v1, v1, v32074; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2075; GFX11-GISEL-NEXT: v_pk_max_u16 v0, v0, v12076; GFX11-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 162077; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2078; GFX11-GISEL-NEXT: v_pk_max_u16 v0, v0, v12079; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2080;2081; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_umax_v8i16:2082; GFX12-SDAG-TRUE16: ; %bb.0: ; %entry2083; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x02084; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x02085; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x02086; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x02087; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x02088; GFX12-SDAG-TRUE16-NEXT: v_pk_max_u16 v1, v1, v32089; GFX12-SDAG-TRUE16-NEXT: v_pk_max_u16 v0, v0, v22090; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2091; GFX12-SDAG-TRUE16-NEXT: v_pk_max_u16 v0, v0, v12092; GFX12-SDAG-TRUE16-NEXT: v_max_u16 v0.l, v0.l, v0.h2093; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]2094;2095; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_umax_v8i16:2096; GFX12-SDAG-FAKE16: ; %bb.0: ; %entry2097; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x02098; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x02099; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x02100; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x02101; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x02102; GFX12-SDAG-FAKE16-NEXT: v_pk_max_u16 v1, v1, v32103; GFX12-SDAG-FAKE16-NEXT: v_pk_max_u16 v0, v0, v22104; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2105; GFX12-SDAG-FAKE16-NEXT: v_pk_max_u16 v0, v0, v12106; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v02107; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)2108; GFX12-SDAG-FAKE16-NEXT: v_max_u16 v0, v0, v12109; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]2110;2111; GFX12-GISEL-LABEL: test_vector_reduce_umax_v8i16:2112; GFX12-GISEL: ; %bb.0: ; %entry2113; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02114; GFX12-GISEL-NEXT: s_wait_expcnt 0x02115; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02116; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02117; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02118; GFX12-GISEL-NEXT: v_pk_max_u16 v0, v0, v22119; GFX12-GISEL-NEXT: v_pk_max_u16 v1, v1, v32120; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2121; GFX12-GISEL-NEXT: v_pk_max_u16 v0, v0, v12122; GFX12-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 162123; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2124; GFX12-GISEL-NEXT: v_pk_max_u16 v0, v0, v12125; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2126entry:2127 %res = call i16 @llvm.vector.reduce.umax.v8i16(<8 x i16> %v)2128 ret i16 %res2129}2130 2131; FIXME: With -new-reg-bank-select, v_alignbit_b32 is regression. Need pattern to look through COPY.2132define i16 @test_vector_reduce_umax_v16i16(<16 x i16> %v) {2133; GFX7-SDAG-LABEL: test_vector_reduce_umax_v16i16:2134; GFX7-SDAG: ; %bb.0: ; %entry2135; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2136; GFX7-SDAG-NEXT: v_and_b32_e32 v8, 0xffff, v82137; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 0xffff, v02138; GFX7-SDAG-NEXT: v_and_b32_e32 v9, 0xffff, v92139; GFX7-SDAG-NEXT: v_and_b32_e32 v1, 0xffff, v12140; GFX7-SDAG-NEXT: v_and_b32_e32 v13, 0xffff, v132141; GFX7-SDAG-NEXT: v_and_b32_e32 v5, 0xffff, v52142; GFX7-SDAG-NEXT: v_and_b32_e32 v12, 0xffff, v122143; GFX7-SDAG-NEXT: v_and_b32_e32 v4, 0xffff, v42144; GFX7-SDAG-NEXT: v_and_b32_e32 v11, 0xffff, v112145; GFX7-SDAG-NEXT: v_and_b32_e32 v3, 0xffff, v32146; GFX7-SDAG-NEXT: v_and_b32_e32 v15, 0xffff, v152147; GFX7-SDAG-NEXT: v_and_b32_e32 v7, 0xffff, v72148; GFX7-SDAG-NEXT: v_and_b32_e32 v10, 0xffff, v102149; GFX7-SDAG-NEXT: v_and_b32_e32 v2, 0xffff, v22150; GFX7-SDAG-NEXT: v_and_b32_e32 v14, 0xffff, v142151; GFX7-SDAG-NEXT: v_and_b32_e32 v6, 0xffff, v62152; GFX7-SDAG-NEXT: v_max_u32_e32 v1, v1, v92153; GFX7-SDAG-NEXT: v_max_u32_e32 v0, v0, v82154; GFX7-SDAG-NEXT: v_max_u32_e32 v6, v6, v142155; GFX7-SDAG-NEXT: v_max_u32_e32 v2, v2, v102156; GFX7-SDAG-NEXT: v_max_u32_e32 v7, v7, v152157; GFX7-SDAG-NEXT: v_max_u32_e32 v3, v3, v112158; GFX7-SDAG-NEXT: v_max3_u32 v0, v0, v4, v122159; GFX7-SDAG-NEXT: v_max3_u32 v1, v1, v5, v132160; GFX7-SDAG-NEXT: v_max3_u32 v1, v1, v3, v72161; GFX7-SDAG-NEXT: v_max3_u32 v0, v0, v2, v62162; GFX7-SDAG-NEXT: v_max_u32_e32 v0, v0, v12163; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]2164;2165; GFX7-GISEL-LABEL: test_vector_reduce_umax_v16i16:2166; GFX7-GISEL: ; %bb.0: ; %entry2167; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2168; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0xffff, v02169; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xffff, v82170; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v82171; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xffff, v12172; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xffff, v92173; GFX7-GISEL-NEXT: v_max_u32_e32 v1, v1, v82174; GFX7-GISEL-NEXT: v_and_b32_e32 v2, 0xffff, v22175; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xffff, v102176; GFX7-GISEL-NEXT: v_max_u32_e32 v2, v2, v82177; GFX7-GISEL-NEXT: v_and_b32_e32 v3, 0xffff, v32178; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xffff, v112179; GFX7-GISEL-NEXT: v_max_u32_e32 v3, v3, v82180; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xffff, v42181; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xffff, v122182; GFX7-GISEL-NEXT: v_max_u32_e32 v4, v4, v82183; GFX7-GISEL-NEXT: v_and_b32_e32 v5, 0xffff, v52184; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xffff, v132185; GFX7-GISEL-NEXT: v_max_u32_e32 v5, v5, v82186; GFX7-GISEL-NEXT: v_and_b32_e32 v6, 0xffff, v62187; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xffff, v142188; GFX7-GISEL-NEXT: v_max_u32_e32 v6, v6, v82189; GFX7-GISEL-NEXT: v_and_b32_e32 v7, 0xffff, v72190; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xffff, v152191; GFX7-GISEL-NEXT: v_max_u32_e32 v7, v7, v82192; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v42193; GFX7-GISEL-NEXT: v_max_u32_e32 v1, v1, v52194; GFX7-GISEL-NEXT: v_max_u32_e32 v2, v2, v62195; GFX7-GISEL-NEXT: v_max_u32_e32 v3, v3, v72196; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v22197; GFX7-GISEL-NEXT: v_max_u32_e32 v1, v1, v32198; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v12199; GFX7-GISEL-NEXT: v_max_u32_e32 v1, 0, v12200; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v12201; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v12202; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]2203;2204; GFX8-SDAG-LABEL: test_vector_reduce_umax_v16i16:2205; GFX8-SDAG: ; %bb.0: ; %entry2206; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2207; GFX8-SDAG-NEXT: v_max_u16_sdwa v8, v2, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_12208; GFX8-SDAG-NEXT: v_max_u16_sdwa v9, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_12209; GFX8-SDAG-NEXT: v_max_u16_sdwa v10, v3, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_12210; GFX8-SDAG-NEXT: v_max_u16_sdwa v11, v1, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_12211; GFX8-SDAG-NEXT: v_max_u16_e32 v2, v2, v62212; GFX8-SDAG-NEXT: v_max_u16_e32 v0, v0, v42213; GFX8-SDAG-NEXT: v_max_u16_e32 v3, v3, v72214; GFX8-SDAG-NEXT: v_max_u16_e32 v1, v1, v52215; GFX8-SDAG-NEXT: v_max_u16_e32 v4, v11, v102216; GFX8-SDAG-NEXT: v_max_u16_e32 v5, v9, v82217; GFX8-SDAG-NEXT: v_max_u16_e32 v1, v1, v32218; GFX8-SDAG-NEXT: v_max_u16_e32 v0, v0, v22219; GFX8-SDAG-NEXT: v_max_u16_e32 v2, v5, v42220; GFX8-SDAG-NEXT: v_max_u16_e32 v0, v0, v12221; GFX8-SDAG-NEXT: v_max_u16_e32 v0, v0, v22222; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]2223;2224; GFX8-GISEL-LABEL: test_vector_reduce_umax_v16i16:2225; GFX8-GISEL: ; %bb.0: ; %entry2226; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2227; GFX8-GISEL-NEXT: v_max_u16_e32 v8, v0, v42228; GFX8-GISEL-NEXT: v_max_u16_sdwa v0, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_12229; GFX8-GISEL-NEXT: v_max_u16_e32 v4, v1, v52230; GFX8-GISEL-NEXT: v_max_u16_sdwa v1, v1, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_12231; GFX8-GISEL-NEXT: v_max_u16_e32 v5, v2, v62232; GFX8-GISEL-NEXT: v_max_u16_sdwa v2, v2, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_12233; GFX8-GISEL-NEXT: v_max_u16_e32 v6, v3, v72234; GFX8-GISEL-NEXT: v_max_u16_sdwa v3, v3, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_12235; GFX8-GISEL-NEXT: v_max_u16_e32 v5, v8, v52236; GFX8-GISEL-NEXT: v_max_u16_e32 v0, v0, v22237; GFX8-GISEL-NEXT: v_max_u16_e32 v2, v4, v62238; GFX8-GISEL-NEXT: v_max_u16_e32 v1, v1, v32239; GFX8-GISEL-NEXT: v_max_u16_e32 v2, v5, v22240; GFX8-GISEL-NEXT: v_max_u16_e32 v0, v0, v12241; GFX8-GISEL-NEXT: v_max_u16_e32 v1, v2, v02242; GFX8-GISEL-NEXT: v_mov_b32_e32 v2, s42243; GFX8-GISEL-NEXT: v_max_u16_sdwa v0, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD2244; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v1, v02245; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]2246;2247; GFX9-SDAG-LABEL: test_vector_reduce_umax_v16i16:2248; GFX9-SDAG: ; %bb.0: ; %entry2249; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2250; GFX9-SDAG-NEXT: v_pk_max_u16 v2, v2, v62251; GFX9-SDAG-NEXT: v_pk_max_u16 v0, v0, v42252; GFX9-SDAG-NEXT: v_pk_max_u16 v3, v3, v72253; GFX9-SDAG-NEXT: v_pk_max_u16 v1, v1, v52254; GFX9-SDAG-NEXT: v_pk_max_u16 v0, v0, v22255; GFX9-SDAG-NEXT: v_pk_max_u16 v1, v1, v32256; GFX9-SDAG-NEXT: s_nop 02257; GFX9-SDAG-NEXT: v_pk_max_u16 v0, v0, v12258; GFX9-SDAG-NEXT: s_nop 02259; GFX9-SDAG-NEXT: v_max_u16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_12260; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]2261;2262; GFX9-GISEL-LABEL: test_vector_reduce_umax_v16i16:2263; GFX9-GISEL: ; %bb.0: ; %entry2264; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2265; GFX9-GISEL-NEXT: v_pk_max_u16 v0, v0, v42266; GFX9-GISEL-NEXT: v_pk_max_u16 v1, v1, v52267; GFX9-GISEL-NEXT: v_pk_max_u16 v2, v2, v62268; GFX9-GISEL-NEXT: v_pk_max_u16 v3, v3, v72269; GFX9-GISEL-NEXT: v_pk_max_u16 v0, v0, v22270; GFX9-GISEL-NEXT: v_pk_max_u16 v1, v1, v32271; GFX9-GISEL-NEXT: s_nop 02272; GFX9-GISEL-NEXT: v_pk_max_u16 v0, v0, v12273; GFX9-GISEL-NEXT: s_nop 02274; GFX9-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 162275; GFX9-GISEL-NEXT: v_pk_max_u16 v0, v0, v12276; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2277;2278; GFX10-SDAG-LABEL: test_vector_reduce_umax_v16i16:2279; GFX10-SDAG: ; %bb.0: ; %entry2280; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2281; GFX10-SDAG-NEXT: v_pk_max_u16 v2, v2, v62282; GFX10-SDAG-NEXT: v_pk_max_u16 v3, v3, v72283; GFX10-SDAG-NEXT: v_pk_max_u16 v1, v1, v52284; GFX10-SDAG-NEXT: v_pk_max_u16 v0, v0, v42285; GFX10-SDAG-NEXT: v_pk_max_u16 v1, v1, v32286; GFX10-SDAG-NEXT: v_pk_max_u16 v0, v0, v22287; GFX10-SDAG-NEXT: v_pk_max_u16 v0, v0, v12288; GFX10-SDAG-NEXT: v_lshrrev_b32_e32 v1, 16, v02289; GFX10-SDAG-NEXT: v_max_u16 v0, v0, v12290; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]2291;2292; GFX10-GISEL-LABEL: test_vector_reduce_umax_v16i16:2293; GFX10-GISEL: ; %bb.0: ; %entry2294; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2295; GFX10-GISEL-NEXT: v_pk_max_u16 v0, v0, v42296; GFX10-GISEL-NEXT: v_pk_max_u16 v1, v1, v52297; GFX10-GISEL-NEXT: v_pk_max_u16 v2, v2, v62298; GFX10-GISEL-NEXT: v_pk_max_u16 v3, v3, v72299; GFX10-GISEL-NEXT: v_pk_max_u16 v0, v0, v22300; GFX10-GISEL-NEXT: v_pk_max_u16 v1, v1, v32301; GFX10-GISEL-NEXT: v_pk_max_u16 v0, v0, v12302; GFX10-GISEL-NEXT: v_alignbit_b32 v1, s4, v0, 162303; GFX10-GISEL-NEXT: v_pk_max_u16 v0, v0, v12304; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]2305;2306; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_umax_v16i16:2307; GFX11-SDAG-TRUE16: ; %bb.0: ; %entry2308; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2309; GFX11-SDAG-TRUE16-NEXT: v_pk_max_u16 v2, v2, v62310; GFX11-SDAG-TRUE16-NEXT: v_pk_max_u16 v3, v3, v72311; GFX11-SDAG-TRUE16-NEXT: v_pk_max_u16 v1, v1, v52312; GFX11-SDAG-TRUE16-NEXT: v_pk_max_u16 v0, v0, v42313; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2314; GFX11-SDAG-TRUE16-NEXT: v_pk_max_u16 v1, v1, v32315; GFX11-SDAG-TRUE16-NEXT: v_pk_max_u16 v0, v0, v22316; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2317; GFX11-SDAG-TRUE16-NEXT: v_pk_max_u16 v0, v0, v12318; GFX11-SDAG-TRUE16-NEXT: v_max_u16 v0.l, v0.l, v0.h2319; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]2320;2321; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_umax_v16i16:2322; GFX11-SDAG-FAKE16: ; %bb.0: ; %entry2323; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2324; GFX11-SDAG-FAKE16-NEXT: v_pk_max_u16 v2, v2, v62325; GFX11-SDAG-FAKE16-NEXT: v_pk_max_u16 v3, v3, v72326; GFX11-SDAG-FAKE16-NEXT: v_pk_max_u16 v1, v1, v52327; GFX11-SDAG-FAKE16-NEXT: v_pk_max_u16 v0, v0, v42328; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2329; GFX11-SDAG-FAKE16-NEXT: v_pk_max_u16 v1, v1, v32330; GFX11-SDAG-FAKE16-NEXT: v_pk_max_u16 v0, v0, v22331; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2332; GFX11-SDAG-FAKE16-NEXT: v_pk_max_u16 v0, v0, v12333; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v02334; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)2335; GFX11-SDAG-FAKE16-NEXT: v_max_u16 v0, v0, v12336; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]2337;2338; GFX11-GISEL-LABEL: test_vector_reduce_umax_v16i16:2339; GFX11-GISEL: ; %bb.0: ; %entry2340; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2341; GFX11-GISEL-NEXT: v_pk_max_u16 v0, v0, v42342; GFX11-GISEL-NEXT: v_pk_max_u16 v1, v1, v52343; GFX11-GISEL-NEXT: v_pk_max_u16 v2, v2, v62344; GFX11-GISEL-NEXT: v_pk_max_u16 v3, v3, v72345; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2346; GFX11-GISEL-NEXT: v_pk_max_u16 v0, v0, v22347; GFX11-GISEL-NEXT: v_pk_max_u16 v1, v1, v32348; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2349; GFX11-GISEL-NEXT: v_pk_max_u16 v0, v0, v12350; GFX11-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 162351; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2352; GFX11-GISEL-NEXT: v_pk_max_u16 v0, v0, v12353; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2354;2355; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_umax_v16i16:2356; GFX12-SDAG-TRUE16: ; %bb.0: ; %entry2357; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x02358; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x02359; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x02360; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x02361; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x02362; GFX12-SDAG-TRUE16-NEXT: v_pk_max_u16 v2, v2, v62363; GFX12-SDAG-TRUE16-NEXT: v_pk_max_u16 v3, v3, v72364; GFX12-SDAG-TRUE16-NEXT: v_pk_max_u16 v1, v1, v52365; GFX12-SDAG-TRUE16-NEXT: v_pk_max_u16 v0, v0, v42366; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2367; GFX12-SDAG-TRUE16-NEXT: v_pk_max_u16 v1, v1, v32368; GFX12-SDAG-TRUE16-NEXT: v_pk_max_u16 v0, v0, v22369; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2370; GFX12-SDAG-TRUE16-NEXT: v_pk_max_u16 v0, v0, v12371; GFX12-SDAG-TRUE16-NEXT: v_max_u16 v0.l, v0.l, v0.h2372; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]2373;2374; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_umax_v16i16:2375; GFX12-SDAG-FAKE16: ; %bb.0: ; %entry2376; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x02377; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x02378; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x02379; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x02380; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x02381; GFX12-SDAG-FAKE16-NEXT: v_pk_max_u16 v2, v2, v62382; GFX12-SDAG-FAKE16-NEXT: v_pk_max_u16 v3, v3, v72383; GFX12-SDAG-FAKE16-NEXT: v_pk_max_u16 v1, v1, v52384; GFX12-SDAG-FAKE16-NEXT: v_pk_max_u16 v0, v0, v42385; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2386; GFX12-SDAG-FAKE16-NEXT: v_pk_max_u16 v1, v1, v32387; GFX12-SDAG-FAKE16-NEXT: v_pk_max_u16 v0, v0, v22388; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2389; GFX12-SDAG-FAKE16-NEXT: v_pk_max_u16 v0, v0, v12390; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v02391; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)2392; GFX12-SDAG-FAKE16-NEXT: v_max_u16 v0, v0, v12393; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]2394;2395; GFX12-GISEL-LABEL: test_vector_reduce_umax_v16i16:2396; GFX12-GISEL: ; %bb.0: ; %entry2397; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02398; GFX12-GISEL-NEXT: s_wait_expcnt 0x02399; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02400; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02401; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02402; GFX12-GISEL-NEXT: v_pk_max_u16 v0, v0, v42403; GFX12-GISEL-NEXT: v_pk_max_u16 v1, v1, v52404; GFX12-GISEL-NEXT: v_pk_max_u16 v2, v2, v62405; GFX12-GISEL-NEXT: v_pk_max_u16 v3, v3, v72406; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2407; GFX12-GISEL-NEXT: v_pk_max_u16 v0, v0, v22408; GFX12-GISEL-NEXT: v_pk_max_u16 v1, v1, v32409; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2410; GFX12-GISEL-NEXT: v_pk_max_u16 v0, v0, v12411; GFX12-GISEL-NEXT: v_alignbit_b32 v1, s0, v0, 162412; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2413; GFX12-GISEL-NEXT: v_pk_max_u16 v0, v0, v12414; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2415entry:2416 %res = call i16 @llvm.vector.reduce.umax.v16i16(<16 x i16> %v)2417 ret i16 %res2418}2419 2420 2421define i32 @test_vector_reduce_umax_v2i32(<2 x i32> %v) {2422; GFX7-LABEL: test_vector_reduce_umax_v2i32:2423; GFX7: ; %bb.0: ; %entry2424; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2425; GFX7-NEXT: v_max_u32_e32 v0, v0, v12426; GFX7-NEXT: s_setpc_b64 s[30:31]2427;2428; GFX8-LABEL: test_vector_reduce_umax_v2i32:2429; GFX8: ; %bb.0: ; %entry2430; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2431; GFX8-NEXT: v_max_u32_e32 v0, v0, v12432; GFX8-NEXT: s_setpc_b64 s[30:31]2433;2434; GFX9-LABEL: test_vector_reduce_umax_v2i32:2435; GFX9: ; %bb.0: ; %entry2436; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2437; GFX9-NEXT: v_max_u32_e32 v0, v0, v12438; GFX9-NEXT: s_setpc_b64 s[30:31]2439;2440; GFX10-LABEL: test_vector_reduce_umax_v2i32:2441; GFX10: ; %bb.0: ; %entry2442; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2443; GFX10-NEXT: v_max_u32_e32 v0, v0, v12444; GFX10-NEXT: s_setpc_b64 s[30:31]2445;2446; GFX11-LABEL: test_vector_reduce_umax_v2i32:2447; GFX11: ; %bb.0: ; %entry2448; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2449; GFX11-NEXT: v_max_u32_e32 v0, v0, v12450; GFX11-NEXT: s_setpc_b64 s[30:31]2451;2452; GFX12-LABEL: test_vector_reduce_umax_v2i32:2453; GFX12: ; %bb.0: ; %entry2454; GFX12-NEXT: s_wait_loadcnt_dscnt 0x02455; GFX12-NEXT: s_wait_expcnt 0x02456; GFX12-NEXT: s_wait_samplecnt 0x02457; GFX12-NEXT: s_wait_bvhcnt 0x02458; GFX12-NEXT: s_wait_kmcnt 0x02459; GFX12-NEXT: v_max_u32_e32 v0, v0, v12460; GFX12-NEXT: s_setpc_b64 s[30:31]2461entry:2462 %res = call i32 @llvm.vector.reduce.umax.v2i32(<2 x i32> %v)2463 ret i32 %res2464}2465 2466define i32 @test_vector_reduce_umax_v3i32(<3 x i32> %v) {2467; GFX7-SDAG-LABEL: test_vector_reduce_umax_v3i32:2468; GFX7-SDAG: ; %bb.0: ; %entry2469; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2470; GFX7-SDAG-NEXT: v_max3_u32 v0, v0, v1, v22471; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]2472;2473; GFX7-GISEL-LABEL: test_vector_reduce_umax_v3i32:2474; GFX7-GISEL: ; %bb.0: ; %entry2475; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2476; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v12477; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v22478; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]2479;2480; GFX8-SDAG-LABEL: test_vector_reduce_umax_v3i32:2481; GFX8-SDAG: ; %bb.0: ; %entry2482; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2483; GFX8-SDAG-NEXT: v_max3_u32 v0, v0, v1, v22484; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]2485;2486; GFX8-GISEL-LABEL: test_vector_reduce_umax_v3i32:2487; GFX8-GISEL: ; %bb.0: ; %entry2488; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2489; GFX8-GISEL-NEXT: v_max_u32_e32 v0, v0, v12490; GFX8-GISEL-NEXT: v_max_u32_e32 v0, v0, v22491; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]2492;2493; GFX9-SDAG-LABEL: test_vector_reduce_umax_v3i32:2494; GFX9-SDAG: ; %bb.0: ; %entry2495; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2496; GFX9-SDAG-NEXT: v_max3_u32 v0, v0, v1, v22497; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]2498;2499; GFX9-GISEL-LABEL: test_vector_reduce_umax_v3i32:2500; GFX9-GISEL: ; %bb.0: ; %entry2501; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2502; GFX9-GISEL-NEXT: v_max_u32_e32 v0, v0, v12503; GFX9-GISEL-NEXT: v_max_u32_e32 v0, v0, v22504; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2505;2506; GFX10-SDAG-LABEL: test_vector_reduce_umax_v3i32:2507; GFX10-SDAG: ; %bb.0: ; %entry2508; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2509; GFX10-SDAG-NEXT: v_max3_u32 v0, v0, v1, v22510; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]2511;2512; GFX10-GISEL-LABEL: test_vector_reduce_umax_v3i32:2513; GFX10-GISEL: ; %bb.0: ; %entry2514; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2515; GFX10-GISEL-NEXT: v_max_u32_e32 v0, v0, v12516; GFX10-GISEL-NEXT: v_max_u32_e32 v0, v0, v22517; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]2518;2519; GFX11-SDAG-LABEL: test_vector_reduce_umax_v3i32:2520; GFX11-SDAG: ; %bb.0: ; %entry2521; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2522; GFX11-SDAG-NEXT: v_max3_u32 v0, v0, v1, v22523; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]2524;2525; GFX11-GISEL-LABEL: test_vector_reduce_umax_v3i32:2526; GFX11-GISEL: ; %bb.0: ; %entry2527; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2528; GFX11-GISEL-NEXT: v_max_u32_e32 v0, v0, v12529; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2530; GFX11-GISEL-NEXT: v_max_u32_e32 v0, v0, v22531; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2532;2533; GFX12-SDAG-LABEL: test_vector_reduce_umax_v3i32:2534; GFX12-SDAG: ; %bb.0: ; %entry2535; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x02536; GFX12-SDAG-NEXT: s_wait_expcnt 0x02537; GFX12-SDAG-NEXT: s_wait_samplecnt 0x02538; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x02539; GFX12-SDAG-NEXT: s_wait_kmcnt 0x02540; GFX12-SDAG-NEXT: v_max3_u32 v0, v0, v1, v22541; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]2542;2543; GFX12-GISEL-LABEL: test_vector_reduce_umax_v3i32:2544; GFX12-GISEL: ; %bb.0: ; %entry2545; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02546; GFX12-GISEL-NEXT: s_wait_expcnt 0x02547; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02548; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02549; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02550; GFX12-GISEL-NEXT: v_max_u32_e32 v0, v0, v12551; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2552; GFX12-GISEL-NEXT: v_max_u32_e32 v0, v0, v22553; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2554entry:2555 %res = call i32 @llvm.vector.reduce.umax.v3i32(<3 x i32> %v)2556 ret i32 %res2557}2558 2559define i32 @test_vector_reduce_umax_v4i32(<4 x i32> %v) {2560; GFX7-SDAG-LABEL: test_vector_reduce_umax_v4i32:2561; GFX7-SDAG: ; %bb.0: ; %entry2562; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2563; GFX7-SDAG-NEXT: v_max_u32_e32 v1, v1, v32564; GFX7-SDAG-NEXT: v_max3_u32 v0, v0, v2, v12565; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]2566;2567; GFX7-GISEL-LABEL: test_vector_reduce_umax_v4i32:2568; GFX7-GISEL: ; %bb.0: ; %entry2569; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2570; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v22571; GFX7-GISEL-NEXT: v_max_u32_e32 v1, v1, v32572; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v12573; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]2574;2575; GFX8-SDAG-LABEL: test_vector_reduce_umax_v4i32:2576; GFX8-SDAG: ; %bb.0: ; %entry2577; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2578; GFX8-SDAG-NEXT: v_max_u32_e32 v1, v1, v32579; GFX8-SDAG-NEXT: v_max3_u32 v0, v0, v2, v12580; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]2581;2582; GFX8-GISEL-LABEL: test_vector_reduce_umax_v4i32:2583; GFX8-GISEL: ; %bb.0: ; %entry2584; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2585; GFX8-GISEL-NEXT: v_max_u32_e32 v0, v0, v22586; GFX8-GISEL-NEXT: v_max_u32_e32 v1, v1, v32587; GFX8-GISEL-NEXT: v_max_u32_e32 v0, v0, v12588; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]2589;2590; GFX9-SDAG-LABEL: test_vector_reduce_umax_v4i32:2591; GFX9-SDAG: ; %bb.0: ; %entry2592; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2593; GFX9-SDAG-NEXT: v_max_u32_e32 v1, v1, v32594; GFX9-SDAG-NEXT: v_max3_u32 v0, v0, v2, v12595; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]2596;2597; GFX9-GISEL-LABEL: test_vector_reduce_umax_v4i32:2598; GFX9-GISEL: ; %bb.0: ; %entry2599; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2600; GFX9-GISEL-NEXT: v_max_u32_e32 v0, v0, v22601; GFX9-GISEL-NEXT: v_max_u32_e32 v1, v1, v32602; GFX9-GISEL-NEXT: v_max_u32_e32 v0, v0, v12603; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2604;2605; GFX10-SDAG-LABEL: test_vector_reduce_umax_v4i32:2606; GFX10-SDAG: ; %bb.0: ; %entry2607; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2608; GFX10-SDAG-NEXT: v_max_u32_e32 v1, v1, v32609; GFX10-SDAG-NEXT: v_max3_u32 v0, v0, v2, v12610; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]2611;2612; GFX10-GISEL-LABEL: test_vector_reduce_umax_v4i32:2613; GFX10-GISEL: ; %bb.0: ; %entry2614; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2615; GFX10-GISEL-NEXT: v_max_u32_e32 v0, v0, v22616; GFX10-GISEL-NEXT: v_max_u32_e32 v1, v1, v32617; GFX10-GISEL-NEXT: v_max_u32_e32 v0, v0, v12618; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]2619;2620; GFX11-SDAG-LABEL: test_vector_reduce_umax_v4i32:2621; GFX11-SDAG: ; %bb.0: ; %entry2622; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2623; GFX11-SDAG-NEXT: v_max_u32_e32 v1, v1, v32624; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)2625; GFX11-SDAG-NEXT: v_max3_u32 v0, v0, v2, v12626; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]2627;2628; GFX11-GISEL-LABEL: test_vector_reduce_umax_v4i32:2629; GFX11-GISEL: ; %bb.0: ; %entry2630; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2631; GFX11-GISEL-NEXT: v_max_u32_e32 v0, v0, v22632; GFX11-GISEL-NEXT: v_max_u32_e32 v1, v1, v32633; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2634; GFX11-GISEL-NEXT: v_max_u32_e32 v0, v0, v12635; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2636;2637; GFX12-SDAG-LABEL: test_vector_reduce_umax_v4i32:2638; GFX12-SDAG: ; %bb.0: ; %entry2639; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x02640; GFX12-SDAG-NEXT: s_wait_expcnt 0x02641; GFX12-SDAG-NEXT: s_wait_samplecnt 0x02642; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x02643; GFX12-SDAG-NEXT: s_wait_kmcnt 0x02644; GFX12-SDAG-NEXT: v_max_u32_e32 v1, v1, v32645; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)2646; GFX12-SDAG-NEXT: v_max3_u32 v0, v0, v2, v12647; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]2648;2649; GFX12-GISEL-LABEL: test_vector_reduce_umax_v4i32:2650; GFX12-GISEL: ; %bb.0: ; %entry2651; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02652; GFX12-GISEL-NEXT: s_wait_expcnt 0x02653; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02654; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02655; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02656; GFX12-GISEL-NEXT: v_max_u32_e32 v0, v0, v22657; GFX12-GISEL-NEXT: v_max_u32_e32 v1, v1, v32658; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2659; GFX12-GISEL-NEXT: v_max_u32_e32 v0, v0, v12660; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2661entry:2662 %res = call i32 @llvm.vector.reduce.umax.v4i32(<4 x i32> %v)2663 ret i32 %res2664}2665 2666define i32 @test_vector_reduce_umax_v8i32(<8 x i32> %v) {2667; GFX7-SDAG-LABEL: test_vector_reduce_umax_v8i32:2668; GFX7-SDAG: ; %bb.0: ; %entry2669; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2670; GFX7-SDAG-NEXT: v_max_u32_e32 v2, v2, v62671; GFX7-SDAG-NEXT: v_max_u32_e32 v3, v3, v72672; GFX7-SDAG-NEXT: v_max3_u32 v1, v1, v5, v32673; GFX7-SDAG-NEXT: v_max3_u32 v0, v0, v4, v22674; GFX7-SDAG-NEXT: v_max_u32_e32 v0, v0, v12675; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]2676;2677; GFX7-GISEL-LABEL: test_vector_reduce_umax_v8i32:2678; GFX7-GISEL: ; %bb.0: ; %entry2679; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2680; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v42681; GFX7-GISEL-NEXT: v_max_u32_e32 v1, v1, v52682; GFX7-GISEL-NEXT: v_max_u32_e32 v2, v2, v62683; GFX7-GISEL-NEXT: v_max_u32_e32 v3, v3, v72684; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v22685; GFX7-GISEL-NEXT: v_max_u32_e32 v1, v1, v32686; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v12687; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]2688;2689; GFX8-SDAG-LABEL: test_vector_reduce_umax_v8i32:2690; GFX8-SDAG: ; %bb.0: ; %entry2691; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2692; GFX8-SDAG-NEXT: v_max_u32_e32 v2, v2, v62693; GFX8-SDAG-NEXT: v_max_u32_e32 v3, v3, v72694; GFX8-SDAG-NEXT: v_max3_u32 v1, v1, v5, v32695; GFX8-SDAG-NEXT: v_max3_u32 v0, v0, v4, v22696; GFX8-SDAG-NEXT: v_max_u32_e32 v0, v0, v12697; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]2698;2699; GFX8-GISEL-LABEL: test_vector_reduce_umax_v8i32:2700; GFX8-GISEL: ; %bb.0: ; %entry2701; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2702; GFX8-GISEL-NEXT: v_max_u32_e32 v0, v0, v42703; GFX8-GISEL-NEXT: v_max_u32_e32 v1, v1, v52704; GFX8-GISEL-NEXT: v_max_u32_e32 v2, v2, v62705; GFX8-GISEL-NEXT: v_max_u32_e32 v3, v3, v72706; GFX8-GISEL-NEXT: v_max_u32_e32 v0, v0, v22707; GFX8-GISEL-NEXT: v_max_u32_e32 v1, v1, v32708; GFX8-GISEL-NEXT: v_max_u32_e32 v0, v0, v12709; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]2710;2711; GFX9-SDAG-LABEL: test_vector_reduce_umax_v8i32:2712; GFX9-SDAG: ; %bb.0: ; %entry2713; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2714; GFX9-SDAG-NEXT: v_max_u32_e32 v2, v2, v62715; GFX9-SDAG-NEXT: v_max_u32_e32 v3, v3, v72716; GFX9-SDAG-NEXT: v_max3_u32 v1, v1, v5, v32717; GFX9-SDAG-NEXT: v_max3_u32 v0, v0, v4, v22718; GFX9-SDAG-NEXT: v_max_u32_e32 v0, v0, v12719; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]2720;2721; GFX9-GISEL-LABEL: test_vector_reduce_umax_v8i32:2722; GFX9-GISEL: ; %bb.0: ; %entry2723; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2724; GFX9-GISEL-NEXT: v_max_u32_e32 v0, v0, v42725; GFX9-GISEL-NEXT: v_max_u32_e32 v1, v1, v52726; GFX9-GISEL-NEXT: v_max_u32_e32 v2, v2, v62727; GFX9-GISEL-NEXT: v_max_u32_e32 v3, v3, v72728; GFX9-GISEL-NEXT: v_max_u32_e32 v0, v0, v22729; GFX9-GISEL-NEXT: v_max_u32_e32 v1, v1, v32730; GFX9-GISEL-NEXT: v_max_u32_e32 v0, v0, v12731; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2732;2733; GFX10-SDAG-LABEL: test_vector_reduce_umax_v8i32:2734; GFX10-SDAG: ; %bb.0: ; %entry2735; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2736; GFX10-SDAG-NEXT: v_max_u32_e32 v3, v3, v72737; GFX10-SDAG-NEXT: v_max_u32_e32 v2, v2, v62738; GFX10-SDAG-NEXT: v_max3_u32 v1, v1, v5, v32739; GFX10-SDAG-NEXT: v_max3_u32 v0, v0, v4, v22740; GFX10-SDAG-NEXT: v_max_u32_e32 v0, v0, v12741; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]2742;2743; GFX10-GISEL-LABEL: test_vector_reduce_umax_v8i32:2744; GFX10-GISEL: ; %bb.0: ; %entry2745; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2746; GFX10-GISEL-NEXT: v_max_u32_e32 v0, v0, v42747; GFX10-GISEL-NEXT: v_max_u32_e32 v1, v1, v52748; GFX10-GISEL-NEXT: v_max_u32_e32 v2, v2, v62749; GFX10-GISEL-NEXT: v_max_u32_e32 v3, v3, v72750; GFX10-GISEL-NEXT: v_max_u32_e32 v0, v0, v22751; GFX10-GISEL-NEXT: v_max_u32_e32 v1, v1, v32752; GFX10-GISEL-NEXT: v_max_u32_e32 v0, v0, v12753; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]2754;2755; GFX11-SDAG-LABEL: test_vector_reduce_umax_v8i32:2756; GFX11-SDAG: ; %bb.0: ; %entry2757; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2758; GFX11-SDAG-NEXT: v_max_u32_e32 v3, v3, v72759; GFX11-SDAG-NEXT: v_max_u32_e32 v2, v2, v62760; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2761; GFX11-SDAG-NEXT: v_max3_u32 v1, v1, v5, v32762; GFX11-SDAG-NEXT: v_max3_u32 v0, v0, v4, v22763; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)2764; GFX11-SDAG-NEXT: v_max_u32_e32 v0, v0, v12765; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]2766;2767; GFX11-GISEL-LABEL: test_vector_reduce_umax_v8i32:2768; GFX11-GISEL: ; %bb.0: ; %entry2769; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2770; GFX11-GISEL-NEXT: v_max_u32_e32 v0, v0, v42771; GFX11-GISEL-NEXT: v_max_u32_e32 v1, v1, v52772; GFX11-GISEL-NEXT: v_max_u32_e32 v2, v2, v62773; GFX11-GISEL-NEXT: v_max_u32_e32 v3, v3, v72774; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2775; GFX11-GISEL-NEXT: v_max_u32_e32 v0, v0, v22776; GFX11-GISEL-NEXT: v_max_u32_e32 v1, v1, v32777; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2778; GFX11-GISEL-NEXT: v_max_u32_e32 v0, v0, v12779; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2780;2781; GFX12-SDAG-LABEL: test_vector_reduce_umax_v8i32:2782; GFX12-SDAG: ; %bb.0: ; %entry2783; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x02784; GFX12-SDAG-NEXT: s_wait_expcnt 0x02785; GFX12-SDAG-NEXT: s_wait_samplecnt 0x02786; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x02787; GFX12-SDAG-NEXT: s_wait_kmcnt 0x02788; GFX12-SDAG-NEXT: v_max_u32_e32 v3, v3, v72789; GFX12-SDAG-NEXT: v_max_u32_e32 v2, v2, v62790; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2791; GFX12-SDAG-NEXT: v_max3_u32 v1, v1, v5, v32792; GFX12-SDAG-NEXT: v_max3_u32 v0, v0, v4, v22793; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)2794; GFX12-SDAG-NEXT: v_max_u32_e32 v0, v0, v12795; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]2796;2797; GFX12-GISEL-LABEL: test_vector_reduce_umax_v8i32:2798; GFX12-GISEL: ; %bb.0: ; %entry2799; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02800; GFX12-GISEL-NEXT: s_wait_expcnt 0x02801; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02802; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02803; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02804; GFX12-GISEL-NEXT: v_max_u32_e32 v0, v0, v42805; GFX12-GISEL-NEXT: v_max_u32_e32 v1, v1, v52806; GFX12-GISEL-NEXT: v_max_u32_e32 v2, v2, v62807; GFX12-GISEL-NEXT: v_max_u32_e32 v3, v3, v72808; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2809; GFX12-GISEL-NEXT: v_max_u32_e32 v0, v0, v22810; GFX12-GISEL-NEXT: v_max_u32_e32 v1, v1, v32811; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2812; GFX12-GISEL-NEXT: v_max_u32_e32 v0, v0, v12813; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2814entry:2815 %res = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> %v)2816 ret i32 %res2817}2818 2819define i32 @test_vector_reduce_umax_v16i32(<16 x i32> %v) {2820; GFX7-SDAG-LABEL: test_vector_reduce_umax_v16i32:2821; GFX7-SDAG: ; %bb.0: ; %entry2822; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2823; GFX7-SDAG-NEXT: v_max_u32_e32 v7, v7, v152824; GFX7-SDAG-NEXT: v_max_u32_e32 v6, v6, v142825; GFX7-SDAG-NEXT: v_max_u32_e32 v4, v4, v122826; GFX7-SDAG-NEXT: v_max_u32_e32 v0, v0, v82827; GFX7-SDAG-NEXT: v_max_u32_e32 v5, v5, v132828; GFX7-SDAG-NEXT: v_max_u32_e32 v1, v1, v92829; GFX7-SDAG-NEXT: v_max3_u32 v2, v2, v10, v62830; GFX7-SDAG-NEXT: v_max3_u32 v3, v3, v11, v72831; GFX7-SDAG-NEXT: v_max3_u32 v1, v1, v5, v32832; GFX7-SDAG-NEXT: v_max3_u32 v0, v0, v4, v22833; GFX7-SDAG-NEXT: v_max_u32_e32 v0, v0, v12834; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]2835;2836; GFX7-GISEL-LABEL: test_vector_reduce_umax_v16i32:2837; GFX7-GISEL: ; %bb.0: ; %entry2838; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2839; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v82840; GFX7-GISEL-NEXT: v_max_u32_e32 v1, v1, v92841; GFX7-GISEL-NEXT: v_max_u32_e32 v2, v2, v102842; GFX7-GISEL-NEXT: v_max_u32_e32 v3, v3, v112843; GFX7-GISEL-NEXT: v_max_u32_e32 v4, v4, v122844; GFX7-GISEL-NEXT: v_max_u32_e32 v5, v5, v132845; GFX7-GISEL-NEXT: v_max_u32_e32 v6, v6, v142846; GFX7-GISEL-NEXT: v_max_u32_e32 v7, v7, v152847; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v42848; GFX7-GISEL-NEXT: v_max_u32_e32 v1, v1, v52849; GFX7-GISEL-NEXT: v_max_u32_e32 v2, v2, v62850; GFX7-GISEL-NEXT: v_max_u32_e32 v3, v3, v72851; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v22852; GFX7-GISEL-NEXT: v_max_u32_e32 v1, v1, v32853; GFX7-GISEL-NEXT: v_max_u32_e32 v0, v0, v12854; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]2855;2856; GFX8-SDAG-LABEL: test_vector_reduce_umax_v16i32:2857; GFX8-SDAG: ; %bb.0: ; %entry2858; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2859; GFX8-SDAG-NEXT: v_max_u32_e32 v7, v7, v152860; GFX8-SDAG-NEXT: v_max_u32_e32 v6, v6, v142861; GFX8-SDAG-NEXT: v_max_u32_e32 v4, v4, v122862; GFX8-SDAG-NEXT: v_max_u32_e32 v0, v0, v82863; GFX8-SDAG-NEXT: v_max_u32_e32 v5, v5, v132864; GFX8-SDAG-NEXT: v_max_u32_e32 v1, v1, v92865; GFX8-SDAG-NEXT: v_max3_u32 v2, v2, v10, v62866; GFX8-SDAG-NEXT: v_max3_u32 v3, v3, v11, v72867; GFX8-SDAG-NEXT: v_max3_u32 v1, v1, v5, v32868; GFX8-SDAG-NEXT: v_max3_u32 v0, v0, v4, v22869; GFX8-SDAG-NEXT: v_max_u32_e32 v0, v0, v12870; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]2871;2872; GFX8-GISEL-LABEL: test_vector_reduce_umax_v16i32:2873; GFX8-GISEL: ; %bb.0: ; %entry2874; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2875; GFX8-GISEL-NEXT: v_max_u32_e32 v0, v0, v82876; GFX8-GISEL-NEXT: v_max_u32_e32 v1, v1, v92877; GFX8-GISEL-NEXT: v_max_u32_e32 v2, v2, v102878; GFX8-GISEL-NEXT: v_max_u32_e32 v3, v3, v112879; GFX8-GISEL-NEXT: v_max_u32_e32 v4, v4, v122880; GFX8-GISEL-NEXT: v_max_u32_e32 v5, v5, v132881; GFX8-GISEL-NEXT: v_max_u32_e32 v6, v6, v142882; GFX8-GISEL-NEXT: v_max_u32_e32 v7, v7, v152883; GFX8-GISEL-NEXT: v_max_u32_e32 v0, v0, v42884; GFX8-GISEL-NEXT: v_max_u32_e32 v1, v1, v52885; GFX8-GISEL-NEXT: v_max_u32_e32 v2, v2, v62886; GFX8-GISEL-NEXT: v_max_u32_e32 v3, v3, v72887; GFX8-GISEL-NEXT: v_max_u32_e32 v0, v0, v22888; GFX8-GISEL-NEXT: v_max_u32_e32 v1, v1, v32889; GFX8-GISEL-NEXT: v_max_u32_e32 v0, v0, v12890; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]2891;2892; GFX9-SDAG-LABEL: test_vector_reduce_umax_v16i32:2893; GFX9-SDAG: ; %bb.0: ; %entry2894; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2895; GFX9-SDAG-NEXT: v_max_u32_e32 v7, v7, v152896; GFX9-SDAG-NEXT: v_max_u32_e32 v6, v6, v142897; GFX9-SDAG-NEXT: v_max_u32_e32 v4, v4, v122898; GFX9-SDAG-NEXT: v_max_u32_e32 v0, v0, v82899; GFX9-SDAG-NEXT: v_max_u32_e32 v5, v5, v132900; GFX9-SDAG-NEXT: v_max_u32_e32 v1, v1, v92901; GFX9-SDAG-NEXT: v_max3_u32 v2, v2, v10, v62902; GFX9-SDAG-NEXT: v_max3_u32 v3, v3, v11, v72903; GFX9-SDAG-NEXT: v_max3_u32 v1, v1, v5, v32904; GFX9-SDAG-NEXT: v_max3_u32 v0, v0, v4, v22905; GFX9-SDAG-NEXT: v_max_u32_e32 v0, v0, v12906; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]2907;2908; GFX9-GISEL-LABEL: test_vector_reduce_umax_v16i32:2909; GFX9-GISEL: ; %bb.0: ; %entry2910; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2911; GFX9-GISEL-NEXT: v_max_u32_e32 v0, v0, v82912; GFX9-GISEL-NEXT: v_max_u32_e32 v1, v1, v92913; GFX9-GISEL-NEXT: v_max_u32_e32 v2, v2, v102914; GFX9-GISEL-NEXT: v_max_u32_e32 v3, v3, v112915; GFX9-GISEL-NEXT: v_max_u32_e32 v4, v4, v122916; GFX9-GISEL-NEXT: v_max_u32_e32 v5, v5, v132917; GFX9-GISEL-NEXT: v_max_u32_e32 v6, v6, v142918; GFX9-GISEL-NEXT: v_max_u32_e32 v7, v7, v152919; GFX9-GISEL-NEXT: v_max_u32_e32 v0, v0, v42920; GFX9-GISEL-NEXT: v_max_u32_e32 v1, v1, v52921; GFX9-GISEL-NEXT: v_max_u32_e32 v2, v2, v62922; GFX9-GISEL-NEXT: v_max_u32_e32 v3, v3, v72923; GFX9-GISEL-NEXT: v_max_u32_e32 v0, v0, v22924; GFX9-GISEL-NEXT: v_max_u32_e32 v1, v1, v32925; GFX9-GISEL-NEXT: v_max_u32_e32 v0, v0, v12926; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2927;2928; GFX10-SDAG-LABEL: test_vector_reduce_umax_v16i32:2929; GFX10-SDAG: ; %bb.0: ; %entry2930; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2931; GFX10-SDAG-NEXT: v_max_u32_e32 v7, v7, v152932; GFX10-SDAG-NEXT: v_max_u32_e32 v6, v6, v142933; GFX10-SDAG-NEXT: v_max_u32_e32 v4, v4, v122934; GFX10-SDAG-NEXT: v_max_u32_e32 v0, v0, v82935; GFX10-SDAG-NEXT: v_max_u32_e32 v5, v5, v132936; GFX10-SDAG-NEXT: v_max_u32_e32 v1, v1, v92937; GFX10-SDAG-NEXT: v_max3_u32 v3, v3, v11, v72938; GFX10-SDAG-NEXT: v_max3_u32 v2, v2, v10, v62939; GFX10-SDAG-NEXT: v_max3_u32 v1, v1, v5, v32940; GFX10-SDAG-NEXT: v_max3_u32 v0, v0, v4, v22941; GFX10-SDAG-NEXT: v_max_u32_e32 v0, v0, v12942; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]2943;2944; GFX10-GISEL-LABEL: test_vector_reduce_umax_v16i32:2945; GFX10-GISEL: ; %bb.0: ; %entry2946; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2947; GFX10-GISEL-NEXT: v_max_u32_e32 v0, v0, v82948; GFX10-GISEL-NEXT: v_max_u32_e32 v1, v1, v92949; GFX10-GISEL-NEXT: v_max_u32_e32 v2, v2, v102950; GFX10-GISEL-NEXT: v_max_u32_e32 v3, v3, v112951; GFX10-GISEL-NEXT: v_max_u32_e32 v4, v4, v122952; GFX10-GISEL-NEXT: v_max_u32_e32 v5, v5, v132953; GFX10-GISEL-NEXT: v_max_u32_e32 v6, v6, v142954; GFX10-GISEL-NEXT: v_max_u32_e32 v7, v7, v152955; GFX10-GISEL-NEXT: v_max_u32_e32 v0, v0, v42956; GFX10-GISEL-NEXT: v_max_u32_e32 v1, v1, v52957; GFX10-GISEL-NEXT: v_max_u32_e32 v2, v2, v62958; GFX10-GISEL-NEXT: v_max_u32_e32 v3, v3, v72959; GFX10-GISEL-NEXT: v_max_u32_e32 v0, v0, v22960; GFX10-GISEL-NEXT: v_max_u32_e32 v1, v1, v32961; GFX10-GISEL-NEXT: v_max_u32_e32 v0, v0, v12962; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]2963;2964; GFX11-SDAG-LABEL: test_vector_reduce_umax_v16i32:2965; GFX11-SDAG: ; %bb.0: ; %entry2966; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2967; GFX11-SDAG-NEXT: v_max_u32_e32 v7, v7, v152968; GFX11-SDAG-NEXT: v_max_u32_e32 v6, v6, v142969; GFX11-SDAG-NEXT: v_max_u32_e32 v4, v4, v122970; GFX11-SDAG-NEXT: v_max_u32_e32 v0, v0, v82971; GFX11-SDAG-NEXT: v_max_u32_e32 v5, v5, v132972; GFX11-SDAG-NEXT: v_max_u32_e32 v1, v1, v92973; GFX11-SDAG-NEXT: v_max3_u32 v3, v3, v11, v72974; GFX11-SDAG-NEXT: v_max3_u32 v2, v2, v10, v62975; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2976; GFX11-SDAG-NEXT: v_max3_u32 v1, v1, v5, v32977; GFX11-SDAG-NEXT: v_max3_u32 v0, v0, v4, v22978; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)2979; GFX11-SDAG-NEXT: v_max_u32_e32 v0, v0, v12980; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]2981;2982; GFX11-GISEL-LABEL: test_vector_reduce_umax_v16i32:2983; GFX11-GISEL: ; %bb.0: ; %entry2984; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2985; GFX11-GISEL-NEXT: v_max_u32_e32 v0, v0, v82986; GFX11-GISEL-NEXT: v_max_u32_e32 v1, v1, v92987; GFX11-GISEL-NEXT: v_max_u32_e32 v2, v2, v102988; GFX11-GISEL-NEXT: v_max_u32_e32 v3, v3, v112989; GFX11-GISEL-NEXT: v_max_u32_e32 v4, v4, v122990; GFX11-GISEL-NEXT: v_max_u32_e32 v5, v5, v132991; GFX11-GISEL-NEXT: v_max_u32_e32 v6, v6, v142992; GFX11-GISEL-NEXT: v_max_u32_e32 v7, v7, v152993; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)2994; GFX11-GISEL-NEXT: v_max_u32_e32 v0, v0, v42995; GFX11-GISEL-NEXT: v_max_u32_e32 v1, v1, v52996; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)2997; GFX11-GISEL-NEXT: v_max_u32_e32 v2, v2, v62998; GFX11-GISEL-NEXT: v_max_u32_e32 v3, v3, v72999; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)3000; GFX11-GISEL-NEXT: v_max_u32_e32 v0, v0, v23001; GFX11-GISEL-NEXT: v_max_u32_e32 v1, v1, v33002; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)3003; GFX11-GISEL-NEXT: v_max_u32_e32 v0, v0, v13004; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]3005;3006; GFX12-SDAG-LABEL: test_vector_reduce_umax_v16i32:3007; GFX12-SDAG: ; %bb.0: ; %entry3008; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x03009; GFX12-SDAG-NEXT: s_wait_expcnt 0x03010; GFX12-SDAG-NEXT: s_wait_samplecnt 0x03011; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x03012; GFX12-SDAG-NEXT: s_wait_kmcnt 0x03013; GFX12-SDAG-NEXT: v_max_u32_e32 v7, v7, v153014; GFX12-SDAG-NEXT: v_max_u32_e32 v6, v6, v143015; GFX12-SDAG-NEXT: v_max_u32_e32 v4, v4, v123016; GFX12-SDAG-NEXT: v_max_u32_e32 v0, v0, v83017; GFX12-SDAG-NEXT: v_max_u32_e32 v5, v5, v133018; GFX12-SDAG-NEXT: v_max_u32_e32 v1, v1, v93019; GFX12-SDAG-NEXT: v_max3_u32 v3, v3, v11, v73020; GFX12-SDAG-NEXT: v_max3_u32 v2, v2, v10, v63021; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)3022; GFX12-SDAG-NEXT: v_max3_u32 v1, v1, v5, v33023; GFX12-SDAG-NEXT: v_max3_u32 v0, v0, v4, v23024; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)3025; GFX12-SDAG-NEXT: v_max_u32_e32 v0, v0, v13026; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]3027;3028; GFX12-GISEL-LABEL: test_vector_reduce_umax_v16i32:3029; GFX12-GISEL: ; %bb.0: ; %entry3030; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x03031; GFX12-GISEL-NEXT: s_wait_expcnt 0x03032; GFX12-GISEL-NEXT: s_wait_samplecnt 0x03033; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x03034; GFX12-GISEL-NEXT: s_wait_kmcnt 0x03035; GFX12-GISEL-NEXT: v_max_u32_e32 v0, v0, v83036; GFX12-GISEL-NEXT: v_max_u32_e32 v1, v1, v93037; GFX12-GISEL-NEXT: v_max_u32_e32 v2, v2, v103038; GFX12-GISEL-NEXT: v_max_u32_e32 v3, v3, v113039; GFX12-GISEL-NEXT: v_max_u32_e32 v4, v4, v123040; GFX12-GISEL-NEXT: v_max_u32_e32 v5, v5, v133041; GFX12-GISEL-NEXT: v_max_u32_e32 v6, v6, v143042; GFX12-GISEL-NEXT: v_max_u32_e32 v7, v7, v153043; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)3044; GFX12-GISEL-NEXT: v_max_u32_e32 v0, v0, v43045; GFX12-GISEL-NEXT: v_max_u32_e32 v1, v1, v53046; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)3047; GFX12-GISEL-NEXT: v_max_u32_e32 v2, v2, v63048; GFX12-GISEL-NEXT: v_max_u32_e32 v3, v3, v73049; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)3050; GFX12-GISEL-NEXT: v_max_u32_e32 v0, v0, v23051; GFX12-GISEL-NEXT: v_max_u32_e32 v1, v1, v33052; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)3053; GFX12-GISEL-NEXT: v_max_u32_e32 v0, v0, v13054; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]3055entry:3056 %res = call i32 @llvm.vector.reduce.umax.v16i32(<16 x i32> %v)3057 ret i32 %res3058}3059 3060define i64 @test_vector_reduce_umax_v2i64(<2 x i64> %v) {3061; GFX7-LABEL: test_vector_reduce_umax_v2i64:3062; GFX7: ; %bb.0: ; %entry3063; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3064; GFX7-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3065; GFX7-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3066; GFX7-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3067; GFX7-NEXT: s_setpc_b64 s[30:31]3068;3069; GFX8-LABEL: test_vector_reduce_umax_v2i64:3070; GFX8: ; %bb.0: ; %entry3071; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3072; GFX8-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3073; GFX8-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3074; GFX8-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3075; GFX8-NEXT: s_setpc_b64 s[30:31]3076;3077; GFX9-LABEL: test_vector_reduce_umax_v2i64:3078; GFX9: ; %bb.0: ; %entry3079; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3080; GFX9-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3081; GFX9-NEXT: s_nop 13082; GFX9-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3083; GFX9-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3084; GFX9-NEXT: s_setpc_b64 s[30:31]3085;3086; GFX10-LABEL: test_vector_reduce_umax_v2i64:3087; GFX10: ; %bb.0: ; %entry3088; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3089; GFX10-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]3090; GFX10-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc_lo3091; GFX10-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo3092; GFX10-NEXT: s_setpc_b64 s[30:31]3093;3094; GFX11-LABEL: test_vector_reduce_umax_v2i64:3095; GFX11: ; %bb.0: ; %entry3096; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3097; GFX11-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]3098; GFX11-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13099; GFX11-NEXT: s_setpc_b64 s[30:31]3100;3101; GFX12-LABEL: test_vector_reduce_umax_v2i64:3102; GFX12: ; %bb.0: ; %entry3103; GFX12-NEXT: s_wait_loadcnt_dscnt 0x03104; GFX12-NEXT: s_wait_expcnt 0x03105; GFX12-NEXT: s_wait_samplecnt 0x03106; GFX12-NEXT: s_wait_bvhcnt 0x03107; GFX12-NEXT: s_wait_kmcnt 0x03108; GFX12-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]3109; GFX12-NEXT: s_wait_alu depctr_va_vcc(0)3110; GFX12-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13111; GFX12-NEXT: s_setpc_b64 s[30:31]3112entry:3113 %res = call i64 @llvm.vector.reduce.umax.v2i64(<2 x i64> %v)3114 ret i64 %res3115}3116 3117define i64 @test_vector_reduce_umax_v3i64(<3 x i64> %v) {3118; GFX7-SDAG-LABEL: test_vector_reduce_umax_v3i64:3119; GFX7-SDAG: ; %bb.0: ; %entry3120; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3121; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3122; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3123; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3124; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[4:5]3125; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3126; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3127; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]3128;3129; GFX7-GISEL-LABEL: test_vector_reduce_umax_v3i64:3130; GFX7-GISEL: ; %bb.0: ; %entry3131; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3132; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3133; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3134; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3135; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[4:5]3136; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3137; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3138; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]3139;3140; GFX8-SDAG-LABEL: test_vector_reduce_umax_v3i64:3141; GFX8-SDAG: ; %bb.0: ; %entry3142; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3143; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3144; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3145; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3146; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[4:5]3147; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3148; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3149; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]3150;3151; GFX8-GISEL-LABEL: test_vector_reduce_umax_v3i64:3152; GFX8-GISEL: ; %bb.0: ; %entry3153; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3154; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3155; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3156; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3157; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[4:5]3158; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3159; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3160; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]3161;3162; GFX9-SDAG-LABEL: test_vector_reduce_umax_v3i64:3163; GFX9-SDAG: ; %bb.0: ; %entry3164; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3165; GFX9-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3166; GFX9-SDAG-NEXT: s_nop 13167; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3168; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3169; GFX9-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[4:5]3170; GFX9-SDAG-NEXT: s_nop 13171; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3172; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3173; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]3174;3175; GFX9-GISEL-LABEL: test_vector_reduce_umax_v3i64:3176; GFX9-GISEL: ; %bb.0: ; %entry3177; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3178; GFX9-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3179; GFX9-GISEL-NEXT: s_nop 13180; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3181; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3182; GFX9-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[4:5]3183; GFX9-GISEL-NEXT: s_nop 13184; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3185; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3186; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]3187;3188; GFX10-SDAG-LABEL: test_vector_reduce_umax_v3i64:3189; GFX10-SDAG: ; %bb.0: ; %entry3190; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3191; GFX10-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]3192; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo3193; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc_lo3194; GFX10-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[4:5]3195; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc_lo3196; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc_lo3197; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]3198;3199; GFX10-GISEL-LABEL: test_vector_reduce_umax_v3i64:3200; GFX10-GISEL: ; %bb.0: ; %entry3201; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3202; GFX10-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]3203; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc_lo3204; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo3205; GFX10-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[4:5]3206; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc_lo3207; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc_lo3208; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]3209;3210; GFX11-SDAG-LABEL: test_vector_reduce_umax_v3i64:3211; GFX11-SDAG: ; %bb.0: ; %entry3212; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3213; GFX11-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]3214; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v1, v3, v1 :: v_dual_cndmask_b32 v0, v2, v03215; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)3216; GFX11-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[4:5]3217; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v13218; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]3219;3220; GFX11-GISEL-LABEL: test_vector_reduce_umax_v3i64:3221; GFX11-GISEL: ; %bb.0: ; %entry3222; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3223; GFX11-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]3224; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13225; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)3226; GFX11-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[4:5]3227; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v13228; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]3229;3230; GFX12-SDAG-LABEL: test_vector_reduce_umax_v3i64:3231; GFX12-SDAG: ; %bb.0: ; %entry3232; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x03233; GFX12-SDAG-NEXT: s_wait_expcnt 0x03234; GFX12-SDAG-NEXT: s_wait_samplecnt 0x03235; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x03236; GFX12-SDAG-NEXT: s_wait_kmcnt 0x03237; GFX12-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]3238; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)3239; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v1, v3, v1 :: v_dual_cndmask_b32 v0, v2, v03240; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)3241; GFX12-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[4:5]3242; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)3243; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v13244; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]3245;3246; GFX12-GISEL-LABEL: test_vector_reduce_umax_v3i64:3247; GFX12-GISEL: ; %bb.0: ; %entry3248; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x03249; GFX12-GISEL-NEXT: s_wait_expcnt 0x03250; GFX12-GISEL-NEXT: s_wait_samplecnt 0x03251; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x03252; GFX12-GISEL-NEXT: s_wait_kmcnt 0x03253; GFX12-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]3254; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)3255; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13256; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)3257; GFX12-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[4:5]3258; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)3259; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v13260; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]3261entry:3262 %res = call i64 @llvm.vector.reduce.umax.v3i64(<3 x i64> %v)3263 ret i64 %res3264}3265 3266define i64 @test_vector_reduce_umax_v4i64(<4 x i64> %v) {3267; GFX7-SDAG-LABEL: test_vector_reduce_umax_v4i64:3268; GFX7-SDAG: ; %bb.0: ; %entry3269; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3270; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[6:7]3271; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3272; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3273; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[4:5]3274; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3275; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3276; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3277; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3278; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3279; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]3280;3281; GFX7-GISEL-LABEL: test_vector_reduce_umax_v4i64:3282; GFX7-GISEL: ; %bb.0: ; %entry3283; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3284; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[4:5]3285; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3286; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3287; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[6:7]3288; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3289; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3290; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3291; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3292; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3293; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]3294;3295; GFX8-SDAG-LABEL: test_vector_reduce_umax_v4i64:3296; GFX8-SDAG: ; %bb.0: ; %entry3297; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3298; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[6:7]3299; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3300; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3301; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[4:5]3302; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3303; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3304; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3305; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3306; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3307; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]3308;3309; GFX8-GISEL-LABEL: test_vector_reduce_umax_v4i64:3310; GFX8-GISEL: ; %bb.0: ; %entry3311; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3312; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[4:5]3313; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3314; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3315; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[6:7]3316; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3317; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3318; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3319; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3320; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3321; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]3322;3323; GFX9-SDAG-LABEL: test_vector_reduce_umax_v4i64:3324; GFX9-SDAG: ; %bb.0: ; %entry3325; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3326; GFX9-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[6:7]3327; GFX9-SDAG-NEXT: s_nop 13328; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3329; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3330; GFX9-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[4:5]3331; GFX9-SDAG-NEXT: s_nop 13332; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3333; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3334; GFX9-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3335; GFX9-SDAG-NEXT: s_nop 13336; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3337; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3338; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]3339;3340; GFX9-GISEL-LABEL: test_vector_reduce_umax_v4i64:3341; GFX9-GISEL: ; %bb.0: ; %entry3342; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3343; GFX9-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[4:5]3344; GFX9-GISEL-NEXT: s_nop 13345; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3346; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3347; GFX9-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[6:7]3348; GFX9-GISEL-NEXT: s_nop 13349; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3350; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3351; GFX9-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3352; GFX9-GISEL-NEXT: s_nop 13353; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3354; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3355; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]3356;3357; GFX10-SDAG-LABEL: test_vector_reduce_umax_v4i64:3358; GFX10-SDAG: ; %bb.0: ; %entry3359; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3360; GFX10-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[2:3], v[6:7]3361; GFX10-SDAG-NEXT: v_cmp_gt_u64_e64 s4, v[0:1], v[4:5]3362; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc_lo3363; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc_lo3364; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v1, v5, v1, s43365; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v0, v4, v0, s43366; GFX10-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]3367; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc_lo3368; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo3369; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]3370;3371; GFX10-GISEL-LABEL: test_vector_reduce_umax_v4i64:3372; GFX10-GISEL: ; %bb.0: ; %entry3373; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3374; GFX10-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[4:5]3375; GFX10-GISEL-NEXT: v_cmp_gt_u64_e64 s4, v[2:3], v[6:7]3376; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc_lo3377; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc_lo3378; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v2, v6, v2, s43379; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v3, v7, v3, s43380; GFX10-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]3381; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc_lo3382; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo3383; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]3384;3385; GFX11-SDAG-LABEL: test_vector_reduce_umax_v4i64:3386; GFX11-SDAG: ; %bb.0: ; %entry3387; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3388; GFX11-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[2:3], v[6:7]3389; GFX11-SDAG-NEXT: v_cmp_gt_u64_e64 s0, v[0:1], v[4:5]3390; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v3, v7, v3 :: v_dual_cndmask_b32 v2, v6, v23391; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)3392; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v1, v5, v1, s03393; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v0, v4, v0, s03394; GFX11-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]3395; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13396; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]3397;3398; GFX11-GISEL-LABEL: test_vector_reduce_umax_v4i64:3399; GFX11-GISEL: ; %bb.0: ; %entry3400; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3401; GFX11-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[4:5]3402; GFX11-GISEL-NEXT: v_cmp_gt_u64_e64 s0, v[2:3], v[6:7]3403; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v13404; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)3405; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v2, v6, v2, s03406; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v3, v7, v3, s03407; GFX11-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]3408; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13409; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]3410;3411; GFX12-SDAG-LABEL: test_vector_reduce_umax_v4i64:3412; GFX12-SDAG: ; %bb.0: ; %entry3413; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x03414; GFX12-SDAG-NEXT: s_wait_expcnt 0x03415; GFX12-SDAG-NEXT: s_wait_samplecnt 0x03416; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x03417; GFX12-SDAG-NEXT: s_wait_kmcnt 0x03418; GFX12-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[2:3], v[6:7]3419; GFX12-SDAG-NEXT: v_cmp_gt_u64_e64 s0, v[0:1], v[4:5]3420; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)3421; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v3, v7, v3 :: v_dual_cndmask_b32 v2, v6, v23422; GFX12-SDAG-NEXT: s_wait_alu depctr_va_sdst(0)3423; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)3424; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v1, v5, v1, s03425; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v0, v4, v0, s03426; GFX12-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]3427; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)3428; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13429; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]3430;3431; GFX12-GISEL-LABEL: test_vector_reduce_umax_v4i64:3432; GFX12-GISEL: ; %bb.0: ; %entry3433; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x03434; GFX12-GISEL-NEXT: s_wait_expcnt 0x03435; GFX12-GISEL-NEXT: s_wait_samplecnt 0x03436; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x03437; GFX12-GISEL-NEXT: s_wait_kmcnt 0x03438; GFX12-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[4:5]3439; GFX12-GISEL-NEXT: v_cmp_gt_u64_e64 s0, v[2:3], v[6:7]3440; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)3441; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v13442; GFX12-GISEL-NEXT: s_wait_alu depctr_va_sdst(0)3443; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)3444; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v2, v6, v2, s03445; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v3, v7, v3, s03446; GFX12-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]3447; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)3448; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13449; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]3450entry:3451 %res = call i64 @llvm.vector.reduce.umax.v4i64(<4 x i64> %v)3452 ret i64 %res3453}3454 3455define i64 @test_vector_reduce_umax_v8i64(<8 x i64> %v) {3456; GFX7-SDAG-LABEL: test_vector_reduce_umax_v8i64:3457; GFX7-SDAG: ; %bb.0: ; %entry3458; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3459; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[4:5], v[12:13]3460; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v5, v13, v5, vcc3461; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v4, v12, v4, vcc3462; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[8:9]3463; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc3464; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc3465; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[6:7], v[14:15]3466; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v7, v15, v7, vcc3467; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v6, v14, v6, vcc3468; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[10:11]3469; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v3, v11, v3, vcc3470; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v2, v10, v2, vcc3471; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[6:7]3472; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3473; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3474; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[4:5]3475; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3476; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3477; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3478; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3479; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3480; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]3481;3482; GFX7-GISEL-LABEL: test_vector_reduce_umax_v8i64:3483; GFX7-GISEL: ; %bb.0: ; %entry3484; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3485; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[8:9]3486; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc3487; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc3488; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[10:11]3489; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v2, v10, v2, vcc3490; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v3, v11, v3, vcc3491; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[4:5], v[12:13]3492; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v4, v12, v4, vcc3493; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v5, v13, v5, vcc3494; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[6:7], v[14:15]3495; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v6, v14, v6, vcc3496; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v7, v15, v7, vcc3497; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[4:5]3498; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3499; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3500; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[6:7]3501; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3502; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3503; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3504; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3505; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3506; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]3507;3508; GFX8-SDAG-LABEL: test_vector_reduce_umax_v8i64:3509; GFX8-SDAG: ; %bb.0: ; %entry3510; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3511; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[4:5], v[12:13]3512; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v5, v13, v5, vcc3513; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v4, v12, v4, vcc3514; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[8:9]3515; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc3516; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc3517; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[6:7], v[14:15]3518; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v7, v15, v7, vcc3519; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v6, v14, v6, vcc3520; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[10:11]3521; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v3, v11, v3, vcc3522; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v2, v10, v2, vcc3523; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[6:7]3524; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3525; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3526; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[4:5]3527; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3528; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3529; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3530; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3531; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3532; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]3533;3534; GFX8-GISEL-LABEL: test_vector_reduce_umax_v8i64:3535; GFX8-GISEL: ; %bb.0: ; %entry3536; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3537; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[8:9]3538; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc3539; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc3540; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[10:11]3541; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v2, v10, v2, vcc3542; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v3, v11, v3, vcc3543; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[4:5], v[12:13]3544; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v4, v12, v4, vcc3545; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v5, v13, v5, vcc3546; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[6:7], v[14:15]3547; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v6, v14, v6, vcc3548; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v7, v15, v7, vcc3549; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[4:5]3550; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3551; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3552; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[6:7]3553; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3554; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3555; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3556; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3557; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3558; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]3559;3560; GFX9-SDAG-LABEL: test_vector_reduce_umax_v8i64:3561; GFX9-SDAG: ; %bb.0: ; %entry3562; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3563; GFX9-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[4:5], v[12:13]3564; GFX9-SDAG-NEXT: s_nop 13565; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v5, v13, v5, vcc3566; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v4, v12, v4, vcc3567; GFX9-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[8:9]3568; GFX9-SDAG-NEXT: s_nop 13569; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc3570; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc3571; GFX9-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[6:7], v[14:15]3572; GFX9-SDAG-NEXT: s_nop 13573; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v7, v15, v7, vcc3574; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v6, v14, v6, vcc3575; GFX9-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[10:11]3576; GFX9-SDAG-NEXT: s_nop 13577; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v3, v11, v3, vcc3578; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v2, v10, v2, vcc3579; GFX9-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[6:7]3580; GFX9-SDAG-NEXT: s_nop 13581; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3582; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3583; GFX9-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[4:5]3584; GFX9-SDAG-NEXT: s_nop 13585; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3586; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3587; GFX9-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3588; GFX9-SDAG-NEXT: s_nop 13589; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3590; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3591; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]3592;3593; GFX9-GISEL-LABEL: test_vector_reduce_umax_v8i64:3594; GFX9-GISEL: ; %bb.0: ; %entry3595; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3596; GFX9-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[8:9]3597; GFX9-GISEL-NEXT: s_nop 13598; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc3599; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc3600; GFX9-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[10:11]3601; GFX9-GISEL-NEXT: s_nop 13602; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v2, v10, v2, vcc3603; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v3, v11, v3, vcc3604; GFX9-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[4:5], v[12:13]3605; GFX9-GISEL-NEXT: s_nop 13606; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v4, v12, v4, vcc3607; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v5, v13, v5, vcc3608; GFX9-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[6:7], v[14:15]3609; GFX9-GISEL-NEXT: s_nop 13610; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v6, v14, v6, vcc3611; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v7, v15, v7, vcc3612; GFX9-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[4:5]3613; GFX9-GISEL-NEXT: s_nop 13614; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3615; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3616; GFX9-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[6:7]3617; GFX9-GISEL-NEXT: s_nop 13618; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc3619; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc3620; GFX9-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3621; GFX9-GISEL-NEXT: s_nop 13622; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3623; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3624; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]3625;3626; GFX10-SDAG-LABEL: test_vector_reduce_umax_v8i64:3627; GFX10-SDAG: ; %bb.0: ; %entry3628; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3629; GFX10-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[4:5], v[12:13]3630; GFX10-SDAG-NEXT: v_cmp_gt_u64_e64 s4, v[6:7], v[14:15]3631; GFX10-SDAG-NEXT: v_cmp_gt_u64_e64 s5, v[2:3], v[10:11]3632; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v5, v13, v5, vcc_lo3633; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v4, v12, v4, vcc_lo3634; GFX10-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[8:9]3635; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v7, v15, v7, s43636; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v6, v14, v6, s43637; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v3, v11, v3, s53638; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v2, v10, v2, s53639; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc_lo3640; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc_lo3641; GFX10-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[2:3], v[6:7]3642; GFX10-SDAG-NEXT: v_cmp_gt_u64_e64 s4, v[0:1], v[4:5]3643; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc_lo3644; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc_lo3645; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v1, v5, v1, s43646; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v0, v4, v0, s43647; GFX10-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]3648; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc_lo3649; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo3650; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]3651;3652; GFX10-GISEL-LABEL: test_vector_reduce_umax_v8i64:3653; GFX10-GISEL: ; %bb.0: ; %entry3654; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3655; GFX10-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[8:9]3656; GFX10-GISEL-NEXT: v_cmp_gt_u64_e64 s4, v[2:3], v[10:11]3657; GFX10-GISEL-NEXT: v_cmp_gt_u64_e64 s5, v[4:5], v[12:13]3658; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc_lo3659; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc_lo3660; GFX10-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[6:7], v[14:15]3661; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v2, v10, v2, s43662; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v3, v11, v3, s43663; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v4, v12, v4, s53664; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v5, v13, v5, s53665; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v6, v14, v6, vcc_lo3666; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v7, v15, v7, vcc_lo3667; GFX10-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[4:5]3668; GFX10-GISEL-NEXT: v_cmp_gt_u64_e64 s4, v[2:3], v[6:7]3669; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc_lo3670; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc_lo3671; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v2, v6, v2, s43672; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v3, v7, v3, s43673; GFX10-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]3674; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc_lo3675; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo3676; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]3677;3678; GFX11-SDAG-LABEL: test_vector_reduce_umax_v8i64:3679; GFX11-SDAG: ; %bb.0: ; %entry3680; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3681; GFX11-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[4:5], v[12:13]3682; GFX11-SDAG-NEXT: v_cmp_gt_u64_e64 s0, v[6:7], v[14:15]3683; GFX11-SDAG-NEXT: v_cmp_gt_u64_e64 s1, v[2:3], v[10:11]3684; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v5, v13, v5 :: v_dual_cndmask_b32 v4, v12, v43685; GFX11-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[8:9]3686; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_4) | instid1(VALU_DEP_2)3687; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v7, v15, v7, s03688; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v6, v14, v6, s03689; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v3, v11, v3, s13690; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v2, v10, v2, s13691; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v1, v9, v1 :: v_dual_cndmask_b32 v0, v8, v03692; GFX11-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[2:3], v[6:7]3693; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3694; GFX11-SDAG-NEXT: v_cmp_gt_u64_e64 s0, v[0:1], v[4:5]3695; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v3, v7, v3 :: v_dual_cndmask_b32 v2, v6, v23696; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v1, v5, v1, s03697; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v0, v4, v0, s03698; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)3699; GFX11-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]3700; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13701; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]3702;3703; GFX11-GISEL-LABEL: test_vector_reduce_umax_v8i64:3704; GFX11-GISEL: ; %bb.0: ; %entry3705; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3706; GFX11-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[8:9]3707; GFX11-GISEL-NEXT: v_cmp_gt_u64_e64 s0, v[2:3], v[10:11]3708; GFX11-GISEL-NEXT: v_cmp_gt_u64_e64 s1, v[4:5], v[12:13]3709; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v0, v8, v0 :: v_dual_cndmask_b32 v1, v9, v13710; GFX11-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[6:7], v[14:15]3711; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_4) | instid1(VALU_DEP_2)3712; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v2, v10, v2, s03713; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v3, v11, v3, s03714; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v4, v12, v4, s13715; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v5, v13, v5, s13716; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v6, v14, v6 :: v_dual_cndmask_b32 v7, v15, v73717; GFX11-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[4:5]3718; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3719; GFX11-GISEL-NEXT: v_cmp_gt_u64_e64 s0, v[2:3], v[6:7]3720; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v13721; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v2, v6, v2, s03722; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v3, v7, v3, s03723; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)3724; GFX11-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]3725; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13726; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]3727;3728; GFX12-SDAG-LABEL: test_vector_reduce_umax_v8i64:3729; GFX12-SDAG: ; %bb.0: ; %entry3730; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x03731; GFX12-SDAG-NEXT: s_wait_expcnt 0x03732; GFX12-SDAG-NEXT: s_wait_samplecnt 0x03733; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x03734; GFX12-SDAG-NEXT: s_wait_kmcnt 0x03735; GFX12-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[4:5], v[12:13]3736; GFX12-SDAG-NEXT: v_cmp_gt_u64_e64 s0, v[6:7], v[14:15]3737; GFX12-SDAG-NEXT: v_cmp_gt_u64_e64 s1, v[2:3], v[10:11]3738; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)3739; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v5, v13, v5 :: v_dual_cndmask_b32 v4, v12, v43740; GFX12-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[8:9]3741; GFX12-SDAG-NEXT: s_wait_alu depctr_va_sdst(0)3742; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v7, v15, v7, s03743; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v6, v14, v6, s03744; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v3, v11, v3, s13745; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v2, v10, v2, s13746; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)3747; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v1, v9, v1 :: v_dual_cndmask_b32 v0, v8, v03748; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)3749; GFX12-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[2:3], v[6:7]3750; GFX12-SDAG-NEXT: v_cmp_gt_u64_e64 s0, v[0:1], v[4:5]3751; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)3752; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v3, v7, v3 :: v_dual_cndmask_b32 v2, v6, v23753; GFX12-SDAG-NEXT: s_wait_alu depctr_va_sdst(0)3754; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)3755; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v1, v5, v1, s03756; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v0, v4, v0, s03757; GFX12-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]3758; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)3759; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13760; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]3761;3762; GFX12-GISEL-LABEL: test_vector_reduce_umax_v8i64:3763; GFX12-GISEL: ; %bb.0: ; %entry3764; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x03765; GFX12-GISEL-NEXT: s_wait_expcnt 0x03766; GFX12-GISEL-NEXT: s_wait_samplecnt 0x03767; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x03768; GFX12-GISEL-NEXT: s_wait_kmcnt 0x03769; GFX12-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[8:9]3770; GFX12-GISEL-NEXT: v_cmp_gt_u64_e64 s0, v[2:3], v[10:11]3771; GFX12-GISEL-NEXT: v_cmp_gt_u64_e64 s1, v[4:5], v[12:13]3772; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)3773; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v0, v8, v0 :: v_dual_cndmask_b32 v1, v9, v13774; GFX12-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[6:7], v[14:15]3775; GFX12-GISEL-NEXT: s_wait_alu depctr_va_sdst(0)3776; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v2, v10, v2, s03777; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v3, v11, v3, s03778; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v4, v12, v4, s13779; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v5, v13, v5, s13780; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)3781; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v6, v14, v6 :: v_dual_cndmask_b32 v7, v15, v73782; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)3783; GFX12-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[4:5]3784; GFX12-GISEL-NEXT: v_cmp_gt_u64_e64 s0, v[2:3], v[6:7]3785; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)3786; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v13787; GFX12-GISEL-NEXT: s_wait_alu depctr_va_sdst(0)3788; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)3789; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v2, v6, v2, s03790; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v3, v7, v3, s03791; GFX12-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]3792; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)3793; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v13794; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]3795entry:3796 %res = call i64 @llvm.vector.reduce.umax.v8i64(<8 x i64> %v)3797 ret i64 %res3798}3799 3800define i64 @test_vector_reduce_umax_v16i64(<16 x i64> %v) {3801; GFX7-SDAG-LABEL: test_vector_reduce_umax_v16i64:3802; GFX7-SDAG: ; %bb.0: ; %entry3803; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3804; GFX7-SDAG-NEXT: buffer_load_dword v31, off, s[0:3], s323805; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[8:9], v[24:25]3806; GFX7-SDAG-NEXT: v_cmp_gt_u64_e64 s[4:5], v[10:11], v[26:27]3807; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v9, v25, v9, vcc3808; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v8, v24, v8, vcc3809; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[16:17]3810; GFX7-SDAG-NEXT: v_cndmask_b32_e64 v11, v27, v11, s[4:5]3811; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v1, v17, v1, vcc3812; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v0, v16, v0, vcc3813; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[12:13], v[28:29]3814; GFX7-SDAG-NEXT: v_cndmask_b32_e64 v10, v26, v10, s[4:5]3815; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v13, v29, v13, vcc3816; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v12, v28, v12, vcc3817; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[4:5], v[20:21]3818; GFX7-SDAG-NEXT: v_cmp_gt_u64_e64 s[6:7], v[0:1], v[8:9]3819; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v5, v21, v5, vcc3820; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v4, v20, v4, vcc3821; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[6:7], v[22:23]3822; GFX7-SDAG-NEXT: v_cmp_gt_u64_e64 s[4:5], v[4:5], v[12:13]3823; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v7, v23, v7, vcc3824; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v6, v22, v6, vcc3825; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[18:19]3826; GFX7-SDAG-NEXT: v_cndmask_b32_e64 v5, v13, v5, s[4:5]3827; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v3, v19, v3, vcc3828; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v2, v18, v2, vcc3829; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[10:11]3830; GFX7-SDAG-NEXT: v_cndmask_b32_e64 v1, v9, v1, s[6:7]3831; GFX7-SDAG-NEXT: v_cndmask_b32_e64 v4, v12, v4, s[4:5]3832; GFX7-SDAG-NEXT: v_cndmask_b32_e64 v0, v8, v0, s[6:7]3833; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v3, v11, v3, vcc3834; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v2, v10, v2, vcc3835; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[4:5]3836; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3837; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3838; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)3839; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[14:15], v[30:31]3840; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v5, v31, v15, vcc3841; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v4, v30, v14, vcc3842; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[6:7], v[4:5]3843; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v5, v5, v7, vcc3844; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v4, v4, v6, vcc3845; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[4:5]3846; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc3847; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc3848; GFX7-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3849; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3850; GFX7-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3851; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]3852;3853; GFX7-GISEL-LABEL: test_vector_reduce_umax_v16i64:3854; GFX7-GISEL: ; %bb.0: ; %entry3855; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3856; GFX7-GISEL-NEXT: buffer_load_dword v31, off, s[0:3], s323857; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[16:17]3858; GFX7-GISEL-NEXT: v_cmp_gt_u64_e64 s[4:5], v[10:11], v[26:27]3859; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v0, v16, v0, vcc3860; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v1, v17, v1, vcc3861; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[18:19]3862; GFX7-GISEL-NEXT: v_cndmask_b32_e64 v10, v26, v10, s[4:5]3863; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v2, v18, v2, vcc3864; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v3, v19, v3, vcc3865; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[4:5], v[20:21]3866; GFX7-GISEL-NEXT: v_cndmask_b32_e64 v11, v27, v11, s[4:5]3867; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v4, v20, v4, vcc3868; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v5, v21, v5, vcc3869; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[6:7], v[22:23]3870; GFX7-GISEL-NEXT: v_cmp_gt_u64_e64 s[4:5], v[2:3], v[10:11]3871; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v6, v22, v6, vcc3872; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v7, v23, v7, vcc3873; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[8:9], v[24:25]3874; GFX7-GISEL-NEXT: v_cndmask_b32_e64 v2, v10, v2, s[4:5]3875; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v8, v24, v8, vcc3876; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v9, v25, v9, vcc3877; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[12:13], v[28:29]3878; GFX7-GISEL-NEXT: v_cndmask_b32_e64 v3, v11, v3, s[4:5]3879; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v12, v28, v12, vcc3880; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v13, v29, v13, vcc3881; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[8:9]3882; GFX7-GISEL-NEXT: v_cmp_gt_u64_e64 s[6:7], v[4:5], v[12:13]3883; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc3884; GFX7-GISEL-NEXT: v_cndmask_b32_e64 v4, v12, v4, s[6:7]3885; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc3886; GFX7-GISEL-NEXT: v_cndmask_b32_e64 v5, v13, v5, s[6:7]3887; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[4:5]3888; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3889; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3890; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)3891; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[14:15], v[30:31]3892; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v4, v30, v14, vcc3893; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v5, v31, v15, vcc3894; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[6:7], v[4:5]3895; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v4, v4, v6, vcc3896; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v5, v5, v7, vcc3897; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[4:5]3898; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc3899; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc3900; GFX7-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3901; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3902; GFX7-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3903; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]3904;3905; GFX8-SDAG-LABEL: test_vector_reduce_umax_v16i64:3906; GFX8-SDAG: ; %bb.0: ; %entry3907; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3908; GFX8-SDAG-NEXT: buffer_load_dword v31, off, s[0:3], s323909; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[8:9], v[24:25]3910; GFX8-SDAG-NEXT: v_cmp_gt_u64_e64 s[4:5], v[10:11], v[26:27]3911; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v9, v25, v9, vcc3912; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v8, v24, v8, vcc3913; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[16:17]3914; GFX8-SDAG-NEXT: v_cndmask_b32_e64 v11, v27, v11, s[4:5]3915; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v1, v17, v1, vcc3916; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v0, v16, v0, vcc3917; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[12:13], v[28:29]3918; GFX8-SDAG-NEXT: v_cndmask_b32_e64 v10, v26, v10, s[4:5]3919; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v13, v29, v13, vcc3920; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v12, v28, v12, vcc3921; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[4:5], v[20:21]3922; GFX8-SDAG-NEXT: v_cmp_gt_u64_e64 s[6:7], v[0:1], v[8:9]3923; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v5, v21, v5, vcc3924; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v4, v20, v4, vcc3925; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[6:7], v[22:23]3926; GFX8-SDAG-NEXT: v_cmp_gt_u64_e64 s[4:5], v[4:5], v[12:13]3927; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v7, v23, v7, vcc3928; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v6, v22, v6, vcc3929; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[18:19]3930; GFX8-SDAG-NEXT: v_cndmask_b32_e64 v5, v13, v5, s[4:5]3931; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v3, v19, v3, vcc3932; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v2, v18, v2, vcc3933; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[10:11]3934; GFX8-SDAG-NEXT: v_cndmask_b32_e64 v1, v9, v1, s[6:7]3935; GFX8-SDAG-NEXT: v_cndmask_b32_e64 v4, v12, v4, s[4:5]3936; GFX8-SDAG-NEXT: v_cndmask_b32_e64 v0, v8, v0, s[6:7]3937; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v3, v11, v3, vcc3938; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v2, v10, v2, vcc3939; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[4:5]3940; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3941; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3942; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0)3943; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[14:15], v[30:31]3944; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v5, v31, v15, vcc3945; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v4, v30, v14, vcc3946; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[6:7], v[4:5]3947; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v5, v5, v7, vcc3948; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v4, v4, v6, vcc3949; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[4:5]3950; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc3951; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc3952; GFX8-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]3953; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc3954; GFX8-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc3955; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]3956;3957; GFX8-GISEL-LABEL: test_vector_reduce_umax_v16i64:3958; GFX8-GISEL: ; %bb.0: ; %entry3959; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3960; GFX8-GISEL-NEXT: buffer_load_dword v31, off, s[0:3], s323961; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[16:17]3962; GFX8-GISEL-NEXT: v_cmp_gt_u64_e64 s[4:5], v[10:11], v[26:27]3963; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v0, v16, v0, vcc3964; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v1, v17, v1, vcc3965; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[18:19]3966; GFX8-GISEL-NEXT: v_cndmask_b32_e64 v10, v26, v10, s[4:5]3967; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v2, v18, v2, vcc3968; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v3, v19, v3, vcc3969; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[4:5], v[20:21]3970; GFX8-GISEL-NEXT: v_cndmask_b32_e64 v11, v27, v11, s[4:5]3971; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v4, v20, v4, vcc3972; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v5, v21, v5, vcc3973; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[6:7], v[22:23]3974; GFX8-GISEL-NEXT: v_cmp_gt_u64_e64 s[4:5], v[2:3], v[10:11]3975; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v6, v22, v6, vcc3976; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v7, v23, v7, vcc3977; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[8:9], v[24:25]3978; GFX8-GISEL-NEXT: v_cndmask_b32_e64 v2, v10, v2, s[4:5]3979; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v8, v24, v8, vcc3980; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v9, v25, v9, vcc3981; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[12:13], v[28:29]3982; GFX8-GISEL-NEXT: v_cndmask_b32_e64 v3, v11, v3, s[4:5]3983; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v12, v28, v12, vcc3984; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v13, v29, v13, vcc3985; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[8:9]3986; GFX8-GISEL-NEXT: v_cmp_gt_u64_e64 s[6:7], v[4:5], v[12:13]3987; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc3988; GFX8-GISEL-NEXT: v_cndmask_b32_e64 v4, v12, v4, s[6:7]3989; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc3990; GFX8-GISEL-NEXT: v_cndmask_b32_e64 v5, v13, v5, s[6:7]3991; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[4:5]3992; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc3993; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc3994; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)3995; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[14:15], v[30:31]3996; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v4, v30, v14, vcc3997; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v5, v31, v15, vcc3998; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[6:7], v[4:5]3999; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v4, v4, v6, vcc4000; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v5, v5, v7, vcc4001; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[4:5]4002; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc4003; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc4004; GFX8-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]4005; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc4006; GFX8-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc4007; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]4008;4009; GFX9-SDAG-LABEL: test_vector_reduce_umax_v16i64:4010; GFX9-SDAG: ; %bb.0: ; %entry4011; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4012; GFX9-SDAG-NEXT: scratch_load_dword v31, off, s324013; GFX9-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[8:9], v[24:25]4014; GFX9-SDAG-NEXT: v_cmp_gt_u64_e64 s[0:1], v[0:1], v[16:17]4015; GFX9-SDAG-NEXT: v_cmp_gt_u64_e64 s[2:3], v[12:13], v[28:29]4016; GFX9-SDAG-NEXT: v_cmp_gt_u64_e64 s[4:5], v[4:5], v[20:21]4017; GFX9-SDAG-NEXT: v_cmp_gt_u64_e64 s[6:7], v[6:7], v[22:23]4018; GFX9-SDAG-NEXT: v_cmp_gt_u64_e64 s[8:9], v[10:11], v[26:27]4019; GFX9-SDAG-NEXT: v_cmp_gt_u64_e64 s[10:11], v[2:3], v[18:19]4020; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v9, v25, v9, vcc4021; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v1, v17, v1, s[0:1]4022; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v13, v29, v13, s[2:3]4023; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v17, v21, v5, s[4:5]4024; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v5, v23, v7, s[6:7]4025; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v7, v27, v11, s[8:9]4026; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v3, v19, v3, s[10:11]4027; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v8, v24, v8, vcc4028; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v0, v16, v0, s[0:1]4029; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v12, v28, v12, s[2:3]4030; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v16, v20, v4, s[4:5]4031; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v4, v22, v6, s[6:7]4032; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v6, v26, v10, s[8:9]4033; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v2, v18, v2, s[10:11]4034; GFX9-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[6:7]4035; GFX9-SDAG-NEXT: v_cmp_gt_u64_e64 s[0:1], v[16:17], v[12:13]4036; GFX9-SDAG-NEXT: v_cmp_gt_u64_e64 s[2:3], v[0:1], v[8:9]4037; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc4038; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v7, v13, v17, s[0:1]4039; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v1, v9, v1, s[2:3]4040; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc4041; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v6, v12, v16, s[0:1]4042; GFX9-SDAG-NEXT: v_cndmask_b32_e64 v0, v8, v0, s[2:3]4043; GFX9-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[6:7]4044; GFX9-SDAG-NEXT: s_nop 14045; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v1, v7, v1, vcc4046; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v0, v6, v0, vcc4047; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0)4048; GFX9-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[14:15], v[30:31]4049; GFX9-SDAG-NEXT: s_nop 14050; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v7, v31, v15, vcc4051; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v6, v30, v14, vcc4052; GFX9-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[4:5], v[6:7]4053; GFX9-SDAG-NEXT: s_nop 14054; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v5, v7, v5, vcc4055; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc4056; GFX9-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[4:5]4057; GFX9-SDAG-NEXT: s_nop 14058; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc4059; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc4060; GFX9-SDAG-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]4061; GFX9-SDAG-NEXT: s_nop 14062; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc4063; GFX9-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc4064; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]4065;4066; GFX9-GISEL-LABEL: test_vector_reduce_umax_v16i64:4067; GFX9-GISEL: ; %bb.0: ; %entry4068; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4069; GFX9-GISEL-NEXT: scratch_load_dword v31, off, s324070; GFX9-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[16:17]4071; GFX9-GISEL-NEXT: v_cmp_gt_u64_e64 s[2:3], v[4:5], v[20:21]4072; GFX9-GISEL-NEXT: v_cmp_gt_u64_e64 s[6:7], v[8:9], v[24:25]4073; GFX9-GISEL-NEXT: v_cmp_gt_u64_e64 s[10:11], v[12:13], v[28:29]4074; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v0, v16, v0, vcc4075; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v4, v20, v4, s[2:3]4076; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v8, v24, v8, s[6:7]4077; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v12, v28, v12, s[10:11]4078; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v1, v17, v1, vcc4079; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v5, v21, v5, s[2:3]4080; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v9, v25, v9, s[6:7]4081; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v13, v29, v13, s[10:11]4082; GFX9-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[8:9]4083; GFX9-GISEL-NEXT: v_cmp_gt_u64_e64 s[2:3], v[4:5], v[12:13]4084; GFX9-GISEL-NEXT: v_cmp_gt_u64_e64 s[0:1], v[2:3], v[18:19]4085; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc4086; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v4, v12, v4, s[2:3]4087; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc4088; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v5, v13, v5, s[2:3]4089; GFX9-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[4:5]4090; GFX9-GISEL-NEXT: v_cmp_gt_u64_e64 s[4:5], v[6:7], v[22:23]4091; GFX9-GISEL-NEXT: v_cmp_gt_u64_e64 s[8:9], v[10:11], v[26:27]4092; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc4093; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc4094; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v2, v18, v2, s[0:1]4095; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v6, v22, v6, s[4:5]4096; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v10, v26, v10, s[8:9]4097; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v3, v19, v3, s[0:1]4098; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v7, v23, v7, s[4:5]4099; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v11, v27, v11, s[8:9]4100; GFX9-GISEL-NEXT: v_cmp_gt_u64_e64 s[0:1], v[2:3], v[10:11]4101; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)4102; GFX9-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[14:15], v[30:31]4103; GFX9-GISEL-NEXT: s_nop 14104; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v4, v30, v14, vcc4105; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v5, v31, v15, vcc4106; GFX9-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[6:7], v[4:5]4107; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v2, v10, v2, s[0:1]4108; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v3, v11, v3, s[0:1]4109; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v4, v4, v6, vcc4110; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v5, v5, v7, vcc4111; GFX9-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[4:5]4112; GFX9-GISEL-NEXT: s_nop 14113; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc4114; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc4115; GFX9-GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[0:1], v[2:3]4116; GFX9-GISEL-NEXT: s_nop 14117; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc4118; GFX9-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc4119; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]4120;4121; GFX10-SDAG-LABEL: test_vector_reduce_umax_v16i64:4122; GFX10-SDAG: ; %bb.0: ; %entry4123; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4124; GFX10-SDAG-NEXT: buffer_load_dword v31, off, s[0:3], s324125; GFX10-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[8:9], v[24:25]4126; GFX10-SDAG-NEXT: v_cmp_gt_u64_e64 s4, v[0:1], v[16:17]4127; GFX10-SDAG-NEXT: v_cmp_gt_u64_e64 s5, v[12:13], v[28:29]4128; GFX10-SDAG-NEXT: v_cmp_gt_u64_e64 s6, v[6:7], v[22:23]4129; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v9, v25, v9, vcc_lo4130; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v8, v24, v8, vcc_lo4131; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v1, v17, v1, s44132; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v0, v16, v0, s44133; GFX10-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[10:11], v[26:27]4134; GFX10-SDAG-NEXT: v_cmp_gt_u64_e64 s4, v[2:3], v[18:19]4135; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v13, v29, v13, s54136; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v12, v28, v12, s54137; GFX10-SDAG-NEXT: v_cmp_gt_u64_e64 s5, v[4:5], v[20:21]4138; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v7, v23, v7, s64139; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v11, v27, v11, vcc_lo4140; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v10, v26, v10, vcc_lo4141; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v3, v19, v3, s44142; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v2, v18, v2, s44143; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v5, v21, v5, s54144; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v4, v20, v4, s54145; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v6, v22, v6, s64146; GFX10-SDAG-NEXT: v_cmp_gt_u64_e64 s5, v[0:1], v[8:9]4147; GFX10-SDAG-NEXT: v_cmp_gt_u64_e64 s4, v[2:3], v[10:11]4148; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v1, v9, v1, s54149; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v3, v11, v3, s44150; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v2, v10, v2, s44151; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v0, v8, v0, s54152; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)4153; GFX10-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[14:15], v[30:31]4154; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v15, v31, v15, vcc_lo4155; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v14, v30, v14, vcc_lo4156; GFX10-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[4:5], v[12:13]4157; GFX10-SDAG-NEXT: v_cmp_gt_u64_e64 s4, v[6:7], v[14:15]4158; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v5, v13, v5, vcc_lo4159; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v4, v12, v4, vcc_lo4160; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v7, v15, v7, s44161; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v6, v14, v6, s44162; GFX10-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[4:5]4163; GFX10-SDAG-NEXT: v_cmp_gt_u64_e64 s4, v[2:3], v[6:7]4164; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc_lo4165; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc_lo4166; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v2, v6, v2, s44167; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v3, v7, v3, s44168; GFX10-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]4169; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc_lo4170; GFX10-SDAG-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo4171; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]4172;4173; GFX10-GISEL-LABEL: test_vector_reduce_umax_v16i64:4174; GFX10-GISEL: ; %bb.0: ; %entry4175; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4176; GFX10-GISEL-NEXT: buffer_load_dword v31, off, s[0:3], s324177; GFX10-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[16:17]4178; GFX10-GISEL-NEXT: v_cmp_gt_u64_e64 s4, v[2:3], v[18:19]4179; GFX10-GISEL-NEXT: v_cmp_gt_u64_e64 s5, v[4:5], v[20:21]4180; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v0, v16, v0, vcc_lo4181; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v1, v17, v1, vcc_lo4182; GFX10-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[6:7], v[22:23]4183; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v2, v18, v2, s44184; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v3, v19, v3, s44185; GFX10-GISEL-NEXT: v_cmp_gt_u64_e64 s4, v[8:9], v[24:25]4186; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v4, v20, v4, s54187; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v5, v21, v5, s54188; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v6, v22, v6, vcc_lo4189; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v7, v23, v7, vcc_lo4190; GFX10-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[10:11], v[26:27]4191; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v8, v24, v8, s44192; GFX10-GISEL-NEXT: v_cmp_gt_u64_e64 s5, v[12:13], v[28:29]4193; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v9, v25, v9, s44194; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v10, v26, v10, vcc_lo4195; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v11, v27, v11, vcc_lo4196; GFX10-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[8:9]4197; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v12, v28, v12, s54198; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v13, v29, v13, s54199; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc_lo4200; GFX10-GISEL-NEXT: v_cmp_gt_u64_e64 s5, v[4:5], v[12:13]4201; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc_lo4202; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v4, v12, v4, s54203; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v5, v13, v5, s54204; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)4205; GFX10-GISEL-NEXT: v_cmp_gt_u64_e64 s4, v[14:15], v[30:31]4206; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v14, v30, v14, s44207; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v15, v31, v15, s44208; GFX10-GISEL-NEXT: v_cmp_gt_u64_e64 s4, v[2:3], v[10:11]4209; GFX10-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[6:7], v[14:15]4210; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v2, v10, v2, s44211; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v3, v11, v3, s44212; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v6, v14, v6, vcc_lo4213; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v7, v15, v7, vcc_lo4214; GFX10-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[4:5]4215; GFX10-GISEL-NEXT: v_cmp_gt_u64_e64 s4, v[2:3], v[6:7]4216; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc_lo4217; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc_lo4218; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v2, v6, v2, s44219; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v3, v7, v3, s44220; GFX10-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]4221; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc_lo4222; GFX10-GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo4223; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]4224;4225; GFX11-SDAG-LABEL: test_vector_reduce_umax_v16i64:4226; GFX11-SDAG: ; %bb.0: ; %entry4227; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4228; GFX11-SDAG-NEXT: scratch_load_b32 v31, off, s324229; GFX11-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[8:9], v[24:25]4230; GFX11-SDAG-NEXT: v_cmp_gt_u64_e64 s0, v[0:1], v[16:17]4231; GFX11-SDAG-NEXT: v_cmp_gt_u64_e64 s1, v[12:13], v[28:29]4232; GFX11-SDAG-NEXT: v_cmp_gt_u64_e64 s2, v[6:7], v[22:23]4233; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v9, v25, v9 :: v_dual_cndmask_b32 v8, v24, v84234; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_4)4235; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v1, v17, v1, s04236; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v0, v16, v0, s04237; GFX11-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[10:11], v[26:27]4238; GFX11-SDAG-NEXT: v_cmp_gt_u64_e64 s0, v[2:3], v[18:19]4239; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v13, v29, v13, s14240; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v12, v28, v12, s14241; GFX11-SDAG-NEXT: v_cmp_gt_u64_e64 s1, v[4:5], v[20:21]4242; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v7, v23, v7, s24243; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v11, v27, v11 :: v_dual_cndmask_b32 v10, v26, v104244; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v3, v19, v3, s04245; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v2, v18, v2, s04246; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v5, v21, v5, s14247; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v4, v20, v4, s14248; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v6, v22, v6, s24249; GFX11-SDAG-NEXT: v_cmp_gt_u64_e64 s1, v[0:1], v[8:9]4250; GFX11-SDAG-NEXT: v_cmp_gt_u64_e64 s0, v[2:3], v[10:11]4251; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)4252; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v1, v9, v1, s14253; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v3, v11, v3, s04254; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v2, v10, v2, s04255; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v0, v8, v0, s14256; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)4257; GFX11-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[14:15], v[30:31]4258; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v15, v31, v15 :: v_dual_cndmask_b32 v14, v30, v144259; GFX11-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[4:5], v[12:13]4260; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)4261; GFX11-SDAG-NEXT: v_cmp_gt_u64_e64 s0, v[6:7], v[14:15]4262; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v5, v13, v5 :: v_dual_cndmask_b32 v4, v12, v44263; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v7, v15, v7, s04264; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v6, v14, v6, s04265; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)4266; GFX11-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[4:5]4267; GFX11-SDAG-NEXT: v_cmp_gt_u64_e64 s0, v[2:3], v[6:7]4268; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v1, v5, v1 :: v_dual_cndmask_b32 v0, v4, v04269; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)4270; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v2, v6, v2, s04271; GFX11-SDAG-NEXT: v_cndmask_b32_e64 v3, v7, v3, s04272; GFX11-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]4273; GFX11-SDAG-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v14274; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]4275;4276; GFX11-GISEL-LABEL: test_vector_reduce_umax_v16i64:4277; GFX11-GISEL: ; %bb.0: ; %entry4278; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4279; GFX11-GISEL-NEXT: scratch_load_b32 v31, off, s324280; GFX11-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[16:17]4281; GFX11-GISEL-NEXT: v_cmp_gt_u64_e64 s0, v[2:3], v[18:19]4282; GFX11-GISEL-NEXT: v_cmp_gt_u64_e64 s1, v[4:5], v[20:21]4283; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v0, v16, v0 :: v_dual_cndmask_b32 v1, v17, v14284; GFX11-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[6:7], v[22:23]4285; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4)4286; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v2, v18, v2, s04287; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v3, v19, v3, s04288; GFX11-GISEL-NEXT: v_cmp_gt_u64_e64 s0, v[8:9], v[24:25]4289; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v4, v20, v4, s14290; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v5, v21, v5, s14291; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v6, v22, v6 :: v_dual_cndmask_b32 v7, v23, v74292; GFX11-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[10:11], v[26:27]4293; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v8, v24, v8, s04294; GFX11-GISEL-NEXT: v_cmp_gt_u64_e64 s1, v[12:13], v[28:29]4295; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v9, v25, v9, s04296; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v10, v26, v10 :: v_dual_cndmask_b32 v11, v27, v114297; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_4)4298; GFX11-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[8:9]4299; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v12, v28, v12, s14300; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v13, v29, v13, s14301; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v0, v8, v0 :: v_dual_cndmask_b32 v1, v9, v14302; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4303; GFX11-GISEL-NEXT: v_cmp_gt_u64_e64 s1, v[4:5], v[12:13]4304; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v4, v12, v4, s14305; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v5, v13, v5, s14306; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)4307; GFX11-GISEL-NEXT: v_cmp_gt_u64_e64 s0, v[14:15], v[30:31]4308; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)4309; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v14, v30, v14, s04310; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v15, v31, v15, s04311; GFX11-GISEL-NEXT: v_cmp_gt_u64_e64 s0, v[2:3], v[10:11]4312; GFX11-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[6:7], v[14:15]4313; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_2)4314; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v2, v10, v2, s04315; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v3, v11, v3, s04316; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v6, v14, v6 :: v_dual_cndmask_b32 v7, v15, v74317; GFX11-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[4:5]4318; GFX11-GISEL-NEXT: v_cmp_gt_u64_e64 s0, v[2:3], v[6:7]4319; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v14320; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)4321; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v2, v6, v2, s04322; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v3, v7, v3, s04323; GFX11-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]4324; GFX11-GISEL-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v14325; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]4326;4327; GFX12-SDAG-LABEL: test_vector_reduce_umax_v16i64:4328; GFX12-SDAG: ; %bb.0: ; %entry4329; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x04330; GFX12-SDAG-NEXT: s_wait_expcnt 0x04331; GFX12-SDAG-NEXT: s_wait_samplecnt 0x04332; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x04333; GFX12-SDAG-NEXT: s_wait_kmcnt 0x04334; GFX12-SDAG-NEXT: scratch_load_b32 v31, off, s324335; GFX12-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[8:9], v[24:25]4336; GFX12-SDAG-NEXT: v_cmp_gt_u64_e64 s0, v[0:1], v[16:17]4337; GFX12-SDAG-NEXT: v_cmp_gt_u64_e64 s1, v[12:13], v[28:29]4338; GFX12-SDAG-NEXT: v_cmp_gt_u64_e64 s2, v[6:7], v[22:23]4339; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)4340; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v9, v25, v9 :: v_dual_cndmask_b32 v8, v24, v84341; GFX12-SDAG-NEXT: s_wait_alu depctr_va_sdst(0)4342; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v1, v17, v1, s04343; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v0, v16, v0, s04344; GFX12-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[10:11], v[26:27]4345; GFX12-SDAG-NEXT: v_cmp_gt_u64_e64 s0, v[2:3], v[18:19]4346; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v13, v29, v13, s14347; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v12, v28, v12, s14348; GFX12-SDAG-NEXT: v_cmp_gt_u64_e64 s1, v[4:5], v[20:21]4349; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v7, v23, v7, s24350; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)4351; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v11, v27, v11 :: v_dual_cndmask_b32 v10, v26, v104352; GFX12-SDAG-NEXT: s_wait_alu depctr_va_sdst(0)4353; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v3, v19, v3, s04354; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v2, v18, v2, s04355; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v5, v21, v5, s14356; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v4, v20, v4, s14357; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v6, v22, v6, s24358; GFX12-SDAG-NEXT: v_cmp_gt_u64_e64 s1, v[0:1], v[8:9]4359; GFX12-SDAG-NEXT: v_cmp_gt_u64_e64 s0, v[2:3], v[10:11]4360; GFX12-SDAG-NEXT: s_wait_alu depctr_va_sdst(0)4361; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)4362; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v1, v9, v1, s14363; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v3, v11, v3, s04364; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v2, v10, v2, s04365; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v0, v8, v0, s14366; GFX12-SDAG-NEXT: s_wait_loadcnt 0x04367; GFX12-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[14:15], v[30:31]4368; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)4369; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v15, v31, v15 :: v_dual_cndmask_b32 v14, v30, v144370; GFX12-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[4:5], v[12:13]4371; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_2)4372; GFX12-SDAG-NEXT: v_cmp_gt_u64_e64 s0, v[6:7], v[14:15]4373; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)4374; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v5, v13, v5 :: v_dual_cndmask_b32 v4, v12, v44375; GFX12-SDAG-NEXT: s_wait_alu depctr_va_sdst(0)4376; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v7, v15, v7, s04377; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v6, v14, v6, s04378; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)4379; GFX12-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[4:5]4380; GFX12-SDAG-NEXT: v_cmp_gt_u64_e64 s0, v[2:3], v[6:7]4381; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)4382; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v1, v5, v1 :: v_dual_cndmask_b32 v0, v4, v04383; GFX12-SDAG-NEXT: s_wait_alu depctr_va_sdst(0)4384; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)4385; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v2, v6, v2, s04386; GFX12-SDAG-NEXT: v_cndmask_b32_e64 v3, v7, v3, s04387; GFX12-SDAG-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]4388; GFX12-SDAG-NEXT: s_wait_alu depctr_va_vcc(0)4389; GFX12-SDAG-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v14390; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]4391;4392; GFX12-GISEL-LABEL: test_vector_reduce_umax_v16i64:4393; GFX12-GISEL: ; %bb.0: ; %entry4394; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x04395; GFX12-GISEL-NEXT: s_wait_expcnt 0x04396; GFX12-GISEL-NEXT: s_wait_samplecnt 0x04397; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x04398; GFX12-GISEL-NEXT: s_wait_kmcnt 0x04399; GFX12-GISEL-NEXT: scratch_load_b32 v31, off, s324400; GFX12-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[16:17]4401; GFX12-GISEL-NEXT: v_cmp_gt_u64_e64 s0, v[2:3], v[18:19]4402; GFX12-GISEL-NEXT: v_cmp_gt_u64_e64 s1, v[4:5], v[20:21]4403; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)4404; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v0, v16, v0 :: v_dual_cndmask_b32 v1, v17, v14405; GFX12-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[6:7], v[22:23]4406; GFX12-GISEL-NEXT: s_wait_alu depctr_va_sdst(0)4407; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v2, v18, v2, s04408; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v3, v19, v3, s04409; GFX12-GISEL-NEXT: v_cmp_gt_u64_e64 s0, v[8:9], v[24:25]4410; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v4, v20, v4, s14411; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v5, v21, v5, s14412; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)4413; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v6, v22, v6 :: v_dual_cndmask_b32 v7, v23, v74414; GFX12-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[10:11], v[26:27]4415; GFX12-GISEL-NEXT: s_wait_alu depctr_va_sdst(0)4416; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v8, v24, v8, s04417; GFX12-GISEL-NEXT: v_cmp_gt_u64_e64 s1, v[12:13], v[28:29]4418; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v9, v25, v9, s04419; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)4420; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v10, v26, v10 :: v_dual_cndmask_b32 v11, v27, v114421; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2)4422; GFX12-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[8:9]4423; GFX12-GISEL-NEXT: s_wait_alu depctr_va_sdst(0)4424; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v12, v28, v12, s14425; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v13, v29, v13, s14426; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)4427; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v0, v8, v0 :: v_dual_cndmask_b32 v1, v9, v14428; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)4429; GFX12-GISEL-NEXT: v_cmp_gt_u64_e64 s1, v[4:5], v[12:13]4430; GFX12-GISEL-NEXT: s_wait_alu depctr_va_sdst(0)4431; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v4, v12, v4, s14432; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v5, v13, v5, s14433; GFX12-GISEL-NEXT: s_wait_loadcnt 0x04434; GFX12-GISEL-NEXT: v_cmp_gt_u64_e64 s0, v[14:15], v[30:31]4435; GFX12-GISEL-NEXT: s_wait_alu depctr_va_sdst(0)4436; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)4437; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v14, v30, v14, s04438; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v15, v31, v15, s04439; GFX12-GISEL-NEXT: v_cmp_gt_u64_e64 s0, v[2:3], v[10:11]4440; GFX12-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[6:7], v[14:15]4441; GFX12-GISEL-NEXT: s_wait_alu depctr_va_sdst(0)4442; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(VALU_DEP_2)4443; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v2, v10, v2, s04444; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v3, v11, v3, s04445; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)4446; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v6, v14, v6 :: v_dual_cndmask_b32 v7, v15, v74447; GFX12-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[4:5]4448; GFX12-GISEL-NEXT: v_cmp_gt_u64_e64 s0, v[2:3], v[6:7]4449; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)4450; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v0, v4, v0 :: v_dual_cndmask_b32 v1, v5, v14451; GFX12-GISEL-NEXT: s_wait_alu depctr_va_sdst(0)4452; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)4453; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v2, v6, v2, s04454; GFX12-GISEL-NEXT: v_cndmask_b32_e64 v3, v7, v3, s04455; GFX12-GISEL-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[0:1], v[2:3]4456; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)4457; GFX12-GISEL-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_cndmask_b32 v1, v3, v14458; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]4459entry:4460 %res = call i64 @llvm.vector.reduce.umax.v16i64(<16 x i64> %v)4461 ret i64 %res4462}4463 4464declare i8 @llvm.vector.reduce.umax.v2i8(<2 x i8>)4465declare i8 @llvm.vector.reduce.umax.v3i8(<3 x i8>)4466declare i8 @llvm.vector.reduce.umax.v4i8(<4 x i8>)4467declare i8 @llvm.vector.reduce.umax.v8i8(<8 x i8>)4468declare i8 @llvm.vector.reduce.umax.v16i8(<16 x i8>)4469 4470declare i16 @llvm.vector.reduce.umax.v2i16(<2 x i16>)4471declare i16 @llvm.vector.reduce.umax.v3i16(<3 x i16>)4472declare i16 @llvm.vector.reduce.umax.v4i16(<4 x i16>)4473declare i16 @llvm.vector.reduce.umax.v8i16(<8 x i16>)4474declare i16 @llvm.vector.reduce.umax.v16i16(<16 x i16>)4475 4476declare i32 @llvm.vector.reduce.umax.v2i32(<2 x i32>)4477declare i32 @llvm.vector.reduce.umax.v3i32(<3 x i32>)4478declare i32 @llvm.vector.reduce.umax.v4i32(<4 x i32>)4479declare i32 @llvm.vector.reduce.umax.v8i32(<8 x i32>)4480declare i32 @llvm.vector.reduce.umax.v16i32(<16 x i32>)4481 4482declare i64 @llvm.vector.reduce.umax.v2i64(<2 x i64>)4483declare i64 @llvm.vector.reduce.umax.v3i64(<3 x i64>)4484declare i64 @llvm.vector.reduce.umax.v4i64(<4 x i64>)4485declare i64 @llvm.vector.reduce.umax.v8i64(<8 x i64>)4486declare i64 @llvm.vector.reduce.umax.v16i64(<16 x i64>)4487;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:4488; GFX11-GISEL-FAKE16: {{.*}}4489; GFX12-GISEL-FAKE16: {{.*}}4490