3587 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx700 < %s | FileCheck -check-prefixes=GFX7,GFX7-SDAG %s3; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx700 < %s | FileCheck -check-prefixes=GFX7,GFX7-GISEL %s4; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx801 < %s | FileCheck -check-prefixes=GFX8,GFX8-SDAG %s5; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx801 < %s | FileCheck -check-prefixes=GFX8,GFX8-GISEL %s6; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx942 < %s | FileCheck -check-prefixes=GFX9,GFX9-SDAG %s7; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx942 < %s | FileCheck -check-prefixes=GFX9,GFX9-GISEL %s8; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1010 < %s | FileCheck -check-prefixes=GFX10,GFX10-SDAG %s9; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1010 < %s | FileCheck -check-prefixes=GFX10,GFX10-GISEL %s10; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1100 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-SDAG,GFX11-SDAG-TRUE16 %s11; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1100 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-SDAG,GFX11-SDAG-FAKE16 %s12; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1100 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-GISEL,GFX11-GISEL-TRUE16 %s13; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1100 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-GISEL,GFX11-GISEL-FAKE16 %s14; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1200 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-SDAG,GFX12-SDAG-TRUE16 %s15; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1200 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-SDAG,GFX12-SDAG-FAKE16 %s16; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1200 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-GISEL,GFX12-GISEL-TRUE16 %s17; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1200 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-GISEL,GFX12-GISEL-FAKE16 %s18 19define half @test_vector_reduce_fmin_v2half(<2 x half> %v) {20; GFX7-SDAG-LABEL: test_vector_reduce_fmin_v2half:21; GFX7-SDAG: ; %bb.0: ; %entry22; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)23; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v0, v024; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v1, v125; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v0, v026; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v1, v127; GFX7-SDAG-NEXT: v_min_f32_e32 v0, v0, v128; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]29;30; GFX7-GISEL-LABEL: test_vector_reduce_fmin_v2half:31; GFX7-GISEL: ; %bb.0: ; %entry32; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)33; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v0, v034; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v1, v135; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v136; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v0, v037; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]38;39; GFX8-SDAG-LABEL: test_vector_reduce_fmin_v2half:40; GFX8-SDAG: ; %bb.0: ; %entry41; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)42; GFX8-SDAG-NEXT: v_max_f16_sdwa v1, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_143; GFX8-SDAG-NEXT: v_max_f16_e32 v0, v0, v044; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v145; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]46;47; GFX8-GISEL-LABEL: test_vector_reduce_fmin_v2half:48; GFX8-GISEL: ; %bb.0: ; %entry49; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)50; GFX8-GISEL-NEXT: v_max_f16_e32 v1, v0, v051; GFX8-GISEL-NEXT: v_max_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_152; GFX8-GISEL-NEXT: v_min_f16_e32 v0, v1, v053; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]54;55; GFX9-SDAG-LABEL: test_vector_reduce_fmin_v2half:56; GFX9-SDAG: ; %bb.0: ; %entry57; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)58; GFX9-SDAG-NEXT: v_max_f16_sdwa v1, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_159; GFX9-SDAG-NEXT: v_max_f16_e32 v0, v0, v060; GFX9-SDAG-NEXT: v_min_f16_e32 v0, v0, v161; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]62;63; GFX9-GISEL-LABEL: test_vector_reduce_fmin_v2half:64; GFX9-GISEL: ; %bb.0: ; %entry65; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)66; GFX9-GISEL-NEXT: v_max_f16_e32 v1, v0, v067; GFX9-GISEL-NEXT: v_max_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_168; GFX9-GISEL-NEXT: v_min_f16_e32 v0, v1, v069; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]70;71; GFX10-SDAG-LABEL: test_vector_reduce_fmin_v2half:72; GFX10-SDAG: ; %bb.0: ; %entry73; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)74; GFX10-SDAG-NEXT: v_max_f16_sdwa v1, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_175; GFX10-SDAG-NEXT: v_max_f16_e32 v0, v0, v076; GFX10-SDAG-NEXT: v_min_f16_e32 v0, v0, v177; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]78;79; GFX10-GISEL-LABEL: test_vector_reduce_fmin_v2half:80; GFX10-GISEL: ; %bb.0: ; %entry81; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)82; GFX10-GISEL-NEXT: v_max_f16_e32 v1, v0, v083; GFX10-GISEL-NEXT: v_max_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_184; GFX10-GISEL-NEXT: v_min_f16_e32 v0, v1, v085; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]86;87; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_fmin_v2half:88; GFX11-SDAG-TRUE16: ; %bb.0: ; %entry89; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)90; GFX11-SDAG-TRUE16-NEXT: v_max_f16_e32 v0.h, v0.h, v0.h91; GFX11-SDAG-TRUE16-NEXT: v_max_f16_e32 v0.l, v0.l, v0.l92; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)93; GFX11-SDAG-TRUE16-NEXT: v_min_f16_e32 v0.l, v0.l, v0.h94; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]95;96; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_fmin_v2half:97; GFX11-SDAG-FAKE16: ; %bb.0: ; %entry98; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)99; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v0100; GFX11-SDAG-FAKE16-NEXT: v_max_f16_e32 v0, v0, v0101; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)102; GFX11-SDAG-FAKE16-NEXT: v_max_f16_e32 v1, v1, v1103; GFX11-SDAG-FAKE16-NEXT: v_min_f16_e32 v0, v0, v1104; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]105;106; GFX11-GISEL-TRUE16-LABEL: test_vector_reduce_fmin_v2half:107; GFX11-GISEL-TRUE16: ; %bb.0: ; %entry108; GFX11-GISEL-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)109; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v0.l, v0.l, v0.l110; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v0.h, v0.h, v0.h111; GFX11-GISEL-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)112; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v0.l, v0.l, v0.h113; GFX11-GISEL-TRUE16-NEXT: s_setpc_b64 s[30:31]114;115; GFX11-GISEL-FAKE16-LABEL: test_vector_reduce_fmin_v2half:116; GFX11-GISEL-FAKE16: ; %bb.0: ; %entry117; GFX11-GISEL-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)118; GFX11-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v0119; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v0, v0, v0120; GFX11-GISEL-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)121; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v1, v1, v1122; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v0, v0, v1123; GFX11-GISEL-FAKE16-NEXT: s_setpc_b64 s[30:31]124;125; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_fmin_v2half:126; GFX12-SDAG-TRUE16: ; %bb.0: ; %entry127; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0128; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x0129; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x0130; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x0131; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0132; GFX12-SDAG-TRUE16-NEXT: v_max_num_f16_e32 v0.h, v0.h, v0.h133; GFX12-SDAG-TRUE16-NEXT: v_max_num_f16_e32 v0.l, v0.l, v0.l134; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)135; GFX12-SDAG-TRUE16-NEXT: v_min_num_f16_e32 v0.l, v0.l, v0.h136; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]137;138; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_fmin_v2half:139; GFX12-SDAG-FAKE16: ; %bb.0: ; %entry140; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0141; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x0142; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x0143; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x0144; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x0145; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v0146; GFX12-SDAG-FAKE16-NEXT: v_max_num_f16_e32 v0, v0, v0147; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)148; GFX12-SDAG-FAKE16-NEXT: v_max_num_f16_e32 v1, v1, v1149; GFX12-SDAG-FAKE16-NEXT: v_min_num_f16_e32 v0, v0, v1150; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]151;152; GFX12-GISEL-TRUE16-LABEL: test_vector_reduce_fmin_v2half:153; GFX12-GISEL-TRUE16: ; %bb.0: ; %entry154; GFX12-GISEL-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0155; GFX12-GISEL-TRUE16-NEXT: s_wait_expcnt 0x0156; GFX12-GISEL-TRUE16-NEXT: s_wait_samplecnt 0x0157; GFX12-GISEL-TRUE16-NEXT: s_wait_bvhcnt 0x0158; GFX12-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0159; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v0.l, v0.l, v0.l160; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v0.h, v0.h, v0.h161; GFX12-GISEL-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)162; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v0.l, v0.l, v0.h163; GFX12-GISEL-TRUE16-NEXT: s_setpc_b64 s[30:31]164;165; GFX12-GISEL-FAKE16-LABEL: test_vector_reduce_fmin_v2half:166; GFX12-GISEL-FAKE16: ; %bb.0: ; %entry167; GFX12-GISEL-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0168; GFX12-GISEL-FAKE16-NEXT: s_wait_expcnt 0x0169; GFX12-GISEL-FAKE16-NEXT: s_wait_samplecnt 0x0170; GFX12-GISEL-FAKE16-NEXT: s_wait_bvhcnt 0x0171; GFX12-GISEL-FAKE16-NEXT: s_wait_kmcnt 0x0172; GFX12-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v0173; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v0, v0, v0174; GFX12-GISEL-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)175; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v1, v1, v1176; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v0, v0, v1177; GFX12-GISEL-FAKE16-NEXT: s_setpc_b64 s[30:31]178entry:179 %res = call half @llvm.vector.reduce.fmin.v2half(<2 x half> %v)180 ret half %res181}182 183define half @test_vector_reduce_fmin_v3half(<3 x half> %v) {184; GFX7-SDAG-LABEL: test_vector_reduce_fmin_v3half:185; GFX7-SDAG: ; %bb.0: ; %entry186; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)187; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v2, v2188; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v1, v1189; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v0, v0190; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v2, v2191; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v1, v1192; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v0, v0193; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v1, v2194; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]195;196; GFX7-GISEL-LABEL: test_vector_reduce_fmin_v3half:197; GFX7-GISEL: ; %bb.0: ; %entry198; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)199; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v0, v0200; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v1, v1201; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v1202; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v0, v0203; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v1, v2204; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v0, v0205; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v1206; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v0, v0207; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]208;209; GFX8-SDAG-LABEL: test_vector_reduce_fmin_v3half:210; GFX8-SDAG: ; %bb.0: ; %entry211; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)212; GFX8-SDAG-NEXT: v_max_f16_sdwa v2, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1213; GFX8-SDAG-NEXT: v_max_f16_e32 v0, v0, v0214; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v2215; GFX8-SDAG-NEXT: v_max_f16_e32 v1, v1, v1216; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v1217; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]218;219; GFX8-GISEL-LABEL: test_vector_reduce_fmin_v3half:220; GFX8-GISEL: ; %bb.0: ; %entry221; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)222; GFX8-GISEL-NEXT: v_max_f16_e32 v2, v0, v0223; GFX8-GISEL-NEXT: v_max_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1224; GFX8-GISEL-NEXT: v_min_f16_e32 v0, v2, v0225; GFX8-GISEL-NEXT: v_max_f16_e32 v1, v1, v1226; GFX8-GISEL-NEXT: v_min_f16_e32 v0, v0, v1227; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]228;229; GFX9-SDAG-LABEL: test_vector_reduce_fmin_v3half:230; GFX9-SDAG: ; %bb.0: ; %entry231; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)232; GFX9-SDAG-NEXT: v_max_f16_e32 v1, v1, v1233; GFX9-SDAG-NEXT: s_movk_i32 s0, 0x7e00234; GFX9-SDAG-NEXT: v_pack_b32_f16 v1, v1, s0235; GFX9-SDAG-NEXT: v_pk_max_f16 v0, v0, v0236; GFX9-SDAG-NEXT: s_nop 0237; GFX9-SDAG-NEXT: v_pk_min_f16 v0, v0, v1238; GFX9-SDAG-NEXT: s_nop 0239; GFX9-SDAG-NEXT: v_min_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1240; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]241;242; GFX9-GISEL-LABEL: test_vector_reduce_fmin_v3half:243; GFX9-GISEL: ; %bb.0: ; %entry244; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)245; GFX9-GISEL-NEXT: v_max_f16_e32 v2, v0, v0246; GFX9-GISEL-NEXT: v_max_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1247; GFX9-GISEL-NEXT: v_min_f16_e32 v0, v2, v0248; GFX9-GISEL-NEXT: v_max_f16_e32 v1, v1, v1249; GFX9-GISEL-NEXT: v_min_f16_e32 v0, v0, v1250; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]251;252; GFX10-SDAG-LABEL: test_vector_reduce_fmin_v3half:253; GFX10-SDAG: ; %bb.0: ; %entry254; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)255; GFX10-SDAG-NEXT: v_max_f16_e32 v1, v1, v1256; GFX10-SDAG-NEXT: v_pk_max_f16 v0, v0, v0257; GFX10-SDAG-NEXT: v_pack_b32_f16 v1, v1, 0x7e00258; GFX10-SDAG-NEXT: v_pk_min_f16 v0, v0, v1259; GFX10-SDAG-NEXT: v_min_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1260; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]261;262; GFX10-GISEL-LABEL: test_vector_reduce_fmin_v3half:263; GFX10-GISEL: ; %bb.0: ; %entry264; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)265; GFX10-GISEL-NEXT: v_max_f16_e32 v2, v0, v0266; GFX10-GISEL-NEXT: v_max_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1267; GFX10-GISEL-NEXT: v_max_f16_e32 v1, v1, v1268; GFX10-GISEL-NEXT: v_min_f16_e32 v0, v2, v0269; GFX10-GISEL-NEXT: v_min_f16_e32 v0, v0, v1270; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]271;272; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_fmin_v3half:273; GFX11-SDAG-TRUE16: ; %bb.0: ; %entry274; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)275; GFX11-SDAG-TRUE16-NEXT: v_max_f16_e32 v1.l, v1.l, v1.l276; GFX11-SDAG-TRUE16-NEXT: v_pk_max_f16 v0, v0, v0277; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)278; GFX11-SDAG-TRUE16-NEXT: v_pack_b32_f16 v1, v1.l, 0x7e00279; GFX11-SDAG-TRUE16-NEXT: v_pk_min_f16 v0, v0, v1280; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)281; GFX11-SDAG-TRUE16-NEXT: v_min_f16_e32 v0.l, v0.l, v0.h282; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]283;284; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_fmin_v3half:285; GFX11-SDAG-FAKE16: ; %bb.0: ; %entry286; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)287; GFX11-SDAG-FAKE16-NEXT: v_max_f16_e32 v1, v1, v1288; GFX11-SDAG-FAKE16-NEXT: v_pk_max_f16 v0, v0, v0289; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)290; GFX11-SDAG-FAKE16-NEXT: v_pack_b32_f16 v1, v1, 0x7e00291; GFX11-SDAG-FAKE16-NEXT: v_pk_min_f16 v0, v0, v1292; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)293; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v0294; GFX11-SDAG-FAKE16-NEXT: v_min_f16_e32 v0, v0, v1295; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]296;297; GFX11-GISEL-TRUE16-LABEL: test_vector_reduce_fmin_v3half:298; GFX11-GISEL-TRUE16: ; %bb.0: ; %entry299; GFX11-GISEL-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)300; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v0.l, v0.l, v0.l301; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v0.h, v0.h, v0.h302; GFX11-GISEL-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)303; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v0.l, v0.l, v0.h304; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v0.h, v1.l, v1.l305; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v0.l, v0.l, v0.h306; GFX11-GISEL-TRUE16-NEXT: s_setpc_b64 s[30:31]307;308; GFX11-GISEL-FAKE16-LABEL: test_vector_reduce_fmin_v3half:309; GFX11-GISEL-FAKE16: ; %bb.0: ; %entry310; GFX11-GISEL-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)311; GFX11-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v2, 16, v0312; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v0, v0, v0313; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v1, v1, v1314; GFX11-GISEL-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)315; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v2, v2, v2316; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v0, v0, v2317; GFX11-GISEL-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)318; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v0, v0, v1319; GFX11-GISEL-FAKE16-NEXT: s_setpc_b64 s[30:31]320;321; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_fmin_v3half:322; GFX12-SDAG-TRUE16: ; %bb.0: ; %entry323; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0324; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x0325; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x0326; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x0327; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0328; GFX12-SDAG-TRUE16-NEXT: v_max_num_f16_e32 v1.l, v1.l, v1.l329; GFX12-SDAG-TRUE16-NEXT: v_pk_max_num_f16 v0, v0, v0330; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)331; GFX12-SDAG-TRUE16-NEXT: v_pack_b32_f16 v1, v1.l, 0x7e00332; GFX12-SDAG-TRUE16-NEXT: v_pk_min_num_f16 v0, v0, v1333; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)334; GFX12-SDAG-TRUE16-NEXT: v_min_num_f16_e32 v0.l, v0.l, v0.h335; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]336;337; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_fmin_v3half:338; GFX12-SDAG-FAKE16: ; %bb.0: ; %entry339; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0340; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x0341; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x0342; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x0343; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x0344; GFX12-SDAG-FAKE16-NEXT: v_max_num_f16_e32 v1, v1, v1345; GFX12-SDAG-FAKE16-NEXT: v_pk_max_num_f16 v0, v0, v0346; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)347; GFX12-SDAG-FAKE16-NEXT: v_pack_b32_f16 v1, v1, 0x7e00348; GFX12-SDAG-FAKE16-NEXT: v_pk_min_num_f16 v0, v0, v1349; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)350; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v0351; GFX12-SDAG-FAKE16-NEXT: v_min_num_f16_e32 v0, v0, v1352; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]353;354; GFX12-GISEL-TRUE16-LABEL: test_vector_reduce_fmin_v3half:355; GFX12-GISEL-TRUE16: ; %bb.0: ; %entry356; GFX12-GISEL-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0357; GFX12-GISEL-TRUE16-NEXT: s_wait_expcnt 0x0358; GFX12-GISEL-TRUE16-NEXT: s_wait_samplecnt 0x0359; GFX12-GISEL-TRUE16-NEXT: s_wait_bvhcnt 0x0360; GFX12-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0361; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v0.l, v0.l, v0.l362; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v0.h, v0.h, v0.h363; GFX12-GISEL-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)364; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v0.l, v0.l, v0.h365; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v0.h, v1.l, v1.l366; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v0.l, v0.l, v0.h367; GFX12-GISEL-TRUE16-NEXT: s_setpc_b64 s[30:31]368;369; GFX12-GISEL-FAKE16-LABEL: test_vector_reduce_fmin_v3half:370; GFX12-GISEL-FAKE16: ; %bb.0: ; %entry371; GFX12-GISEL-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0372; GFX12-GISEL-FAKE16-NEXT: s_wait_expcnt 0x0373; GFX12-GISEL-FAKE16-NEXT: s_wait_samplecnt 0x0374; GFX12-GISEL-FAKE16-NEXT: s_wait_bvhcnt 0x0375; GFX12-GISEL-FAKE16-NEXT: s_wait_kmcnt 0x0376; GFX12-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v2, 16, v0377; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v0, v0, v0378; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v1, v1, v1379; GFX12-GISEL-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)380; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v2, v2, v2381; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v0, v0, v2382; GFX12-GISEL-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)383; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v0, v0, v1384; GFX12-GISEL-FAKE16-NEXT: s_setpc_b64 s[30:31]385entry:386 %res = call half @llvm.vector.reduce.fmin.v3half(<3 x half> %v)387 ret half %res388}389 390define half @test_vector_reduce_fmin_v4half(<4 x half> %v) {391; GFX7-SDAG-LABEL: test_vector_reduce_fmin_v4half:392; GFX7-SDAG: ; %bb.0: ; %entry393; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)394; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v0, v0395; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v1, v1396; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v3, v3397; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v2, v2398; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v0, v0399; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v1, v1400; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v3, v3401; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v2, v2402; GFX7-SDAG-NEXT: v_min_f32_e32 v0, v0, v1403; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v2, v3404; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]405;406; GFX7-GISEL-LABEL: test_vector_reduce_fmin_v4half:407; GFX7-GISEL: ; %bb.0: ; %entry408; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)409; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v0, v0410; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v1, v1411; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v2, v2412; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v3, v3413; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v1414; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v0, v0415; GFX7-GISEL-NEXT: v_min_f32_e32 v1, v2, v3416; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v1, v1417; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v0, v0418; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v1, v1419; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v1420; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v0, v0421; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]422;423; GFX8-SDAG-LABEL: test_vector_reduce_fmin_v4half:424; GFX8-SDAG: ; %bb.0: ; %entry425; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)426; GFX8-SDAG-NEXT: v_max_f16_sdwa v3, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1427; GFX8-SDAG-NEXT: v_max_f16_e32 v0, v0, v0428; GFX8-SDAG-NEXT: v_max_f16_sdwa v2, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1429; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v3430; GFX8-SDAG-NEXT: v_max_f16_e32 v1, v1, v1431; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v1432; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v2433; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]434;435; GFX8-GISEL-LABEL: test_vector_reduce_fmin_v4half:436; GFX8-GISEL: ; %bb.0: ; %entry437; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)438; GFX8-GISEL-NEXT: v_max_f16_e32 v2, v0, v0439; GFX8-GISEL-NEXT: v_max_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1440; GFX8-GISEL-NEXT: v_min_f16_e32 v0, v2, v0441; GFX8-GISEL-NEXT: v_max_f16_e32 v2, v1, v1442; GFX8-GISEL-NEXT: v_max_f16_sdwa v1, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1443; GFX8-GISEL-NEXT: v_min_f16_e32 v1, v2, v1444; GFX8-GISEL-NEXT: v_min_f16_e32 v0, v0, v1445; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]446;447; GFX9-SDAG-LABEL: test_vector_reduce_fmin_v4half:448; GFX9-SDAG: ; %bb.0: ; %entry449; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)450; GFX9-SDAG-NEXT: v_pk_max_f16 v1, v1, v1451; GFX9-SDAG-NEXT: v_pk_max_f16 v0, v0, v0452; GFX9-SDAG-NEXT: s_nop 0453; GFX9-SDAG-NEXT: v_pk_min_f16 v0, v0, v1454; GFX9-SDAG-NEXT: s_nop 0455; GFX9-SDAG-NEXT: v_min_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1456; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]457;458; GFX9-GISEL-LABEL: test_vector_reduce_fmin_v4half:459; GFX9-GISEL: ; %bb.0: ; %entry460; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)461; GFX9-GISEL-NEXT: v_max_f16_e32 v2, v0, v0462; GFX9-GISEL-NEXT: v_max_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1463; GFX9-GISEL-NEXT: v_min_f16_e32 v0, v2, v0464; GFX9-GISEL-NEXT: v_max_f16_e32 v2, v1, v1465; GFX9-GISEL-NEXT: v_max_f16_sdwa v1, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1466; GFX9-GISEL-NEXT: v_min_f16_e32 v1, v2, v1467; GFX9-GISEL-NEXT: v_min_f16_e32 v0, v0, v1468; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]469;470; GFX10-SDAG-LABEL: test_vector_reduce_fmin_v4half:471; GFX10-SDAG: ; %bb.0: ; %entry472; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)473; GFX10-SDAG-NEXT: v_pk_max_f16 v1, v1, v1474; GFX10-SDAG-NEXT: v_pk_max_f16 v0, v0, v0475; GFX10-SDAG-NEXT: v_pk_min_f16 v0, v0, v1476; GFX10-SDAG-NEXT: v_min_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1477; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]478;479; GFX10-GISEL-LABEL: test_vector_reduce_fmin_v4half:480; GFX10-GISEL: ; %bb.0: ; %entry481; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)482; GFX10-GISEL-NEXT: v_max_f16_e32 v2, v0, v0483; GFX10-GISEL-NEXT: v_max_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1484; GFX10-GISEL-NEXT: v_max_f16_e32 v3, v1, v1485; GFX10-GISEL-NEXT: v_max_f16_sdwa v1, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1486; GFX10-GISEL-NEXT: v_min_f16_e32 v0, v2, v0487; GFX10-GISEL-NEXT: v_min_f16_e32 v1, v3, v1488; GFX10-GISEL-NEXT: v_min_f16_e32 v0, v0, v1489; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]490;491; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_fmin_v4half:492; GFX11-SDAG-TRUE16: ; %bb.0: ; %entry493; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)494; GFX11-SDAG-TRUE16-NEXT: v_pk_max_f16 v1, v1, v1495; GFX11-SDAG-TRUE16-NEXT: v_pk_max_f16 v0, v0, v0496; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)497; GFX11-SDAG-TRUE16-NEXT: v_pk_min_f16 v0, v0, v1498; GFX11-SDAG-TRUE16-NEXT: v_min_f16_e32 v0.l, v0.l, v0.h499; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]500;501; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_fmin_v4half:502; GFX11-SDAG-FAKE16: ; %bb.0: ; %entry503; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)504; GFX11-SDAG-FAKE16-NEXT: v_pk_max_f16 v1, v1, v1505; GFX11-SDAG-FAKE16-NEXT: v_pk_max_f16 v0, v0, v0506; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)507; GFX11-SDAG-FAKE16-NEXT: v_pk_min_f16 v0, v0, v1508; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v0509; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)510; GFX11-SDAG-FAKE16-NEXT: v_min_f16_e32 v0, v0, v1511; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]512;513; GFX11-GISEL-TRUE16-LABEL: test_vector_reduce_fmin_v4half:514; GFX11-GISEL-TRUE16: ; %bb.0: ; %entry515; GFX11-GISEL-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)516; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v0.l, v0.l, v0.l517; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v0.h, v0.h, v0.h518; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v1.l, v1.l, v1.l519; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v1.h, v1.h, v1.h520; GFX11-GISEL-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)521; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v0.l, v0.l, v0.h522; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v0.h, v1.l, v1.h523; GFX11-GISEL-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)524; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v0.l, v0.l, v0.h525; GFX11-GISEL-TRUE16-NEXT: s_setpc_b64 s[30:31]526;527; GFX11-GISEL-FAKE16-LABEL: test_vector_reduce_fmin_v4half:528; GFX11-GISEL-FAKE16: ; %bb.0: ; %entry529; GFX11-GISEL-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)530; GFX11-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v2, 16, v0531; GFX11-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v3, 16, v1532; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v0, v0, v0533; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v1, v1, v1534; GFX11-GISEL-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)535; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v2, v2, v2536; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v3, v3, v3537; GFX11-GISEL-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)538; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v0, v0, v2539; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v1, v1, v3540; GFX11-GISEL-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)541; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v0, v0, v1542; GFX11-GISEL-FAKE16-NEXT: s_setpc_b64 s[30:31]543;544; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_fmin_v4half:545; GFX12-SDAG-TRUE16: ; %bb.0: ; %entry546; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0547; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x0548; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x0549; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x0550; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0551; GFX12-SDAG-TRUE16-NEXT: v_pk_max_num_f16 v1, v1, v1552; GFX12-SDAG-TRUE16-NEXT: v_pk_max_num_f16 v0, v0, v0553; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)554; GFX12-SDAG-TRUE16-NEXT: v_pk_min_num_f16 v0, v0, v1555; GFX12-SDAG-TRUE16-NEXT: v_min_num_f16_e32 v0.l, v0.l, v0.h556; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]557;558; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_fmin_v4half:559; GFX12-SDAG-FAKE16: ; %bb.0: ; %entry560; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0561; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x0562; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x0563; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x0564; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x0565; GFX12-SDAG-FAKE16-NEXT: v_pk_max_num_f16 v1, v1, v1566; GFX12-SDAG-FAKE16-NEXT: v_pk_max_num_f16 v0, v0, v0567; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)568; GFX12-SDAG-FAKE16-NEXT: v_pk_min_num_f16 v0, v0, v1569; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v0570; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)571; GFX12-SDAG-FAKE16-NEXT: v_min_num_f16_e32 v0, v0, v1572; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]573;574; GFX12-GISEL-TRUE16-LABEL: test_vector_reduce_fmin_v4half:575; GFX12-GISEL-TRUE16: ; %bb.0: ; %entry576; GFX12-GISEL-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0577; GFX12-GISEL-TRUE16-NEXT: s_wait_expcnt 0x0578; GFX12-GISEL-TRUE16-NEXT: s_wait_samplecnt 0x0579; GFX12-GISEL-TRUE16-NEXT: s_wait_bvhcnt 0x0580; GFX12-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0581; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v0.l, v0.l, v0.l582; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v0.h, v0.h, v0.h583; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v1.l, v1.l, v1.l584; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v1.h, v1.h, v1.h585; GFX12-GISEL-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)586; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v0.l, v0.l, v0.h587; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v0.h, v1.l, v1.h588; GFX12-GISEL-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)589; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v0.l, v0.l, v0.h590; GFX12-GISEL-TRUE16-NEXT: s_setpc_b64 s[30:31]591;592; GFX12-GISEL-FAKE16-LABEL: test_vector_reduce_fmin_v4half:593; GFX12-GISEL-FAKE16: ; %bb.0: ; %entry594; GFX12-GISEL-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0595; GFX12-GISEL-FAKE16-NEXT: s_wait_expcnt 0x0596; GFX12-GISEL-FAKE16-NEXT: s_wait_samplecnt 0x0597; GFX12-GISEL-FAKE16-NEXT: s_wait_bvhcnt 0x0598; GFX12-GISEL-FAKE16-NEXT: s_wait_kmcnt 0x0599; GFX12-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v2, 16, v0600; GFX12-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v3, 16, v1601; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v0, v0, v0602; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v1, v1, v1603; GFX12-GISEL-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)604; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v2, v2, v2605; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v3, v3, v3606; GFX12-GISEL-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)607; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v0, v0, v2608; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v1, v1, v3609; GFX12-GISEL-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)610; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v0, v0, v1611; GFX12-GISEL-FAKE16-NEXT: s_setpc_b64 s[30:31]612entry:613 %res = call half @llvm.vector.reduce.fmin.v4half(<4 x half> %v)614 ret half %res615}616 617define half @test_vector_reduce_fmin_v8half(<8 x half> %v) {618; GFX7-SDAG-LABEL: test_vector_reduce_fmin_v8half:619; GFX7-SDAG: ; %bb.0: ; %entry620; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)621; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v0, v0622; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v1, v1623; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v3, v3624; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v2, v2625; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v5, v5626; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v4, v4627; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v7, v7628; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v6, v6629; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v0, v0630; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v1, v1631; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v3, v3632; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v2, v2633; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v5, v5634; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v4, v4635; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v7, v7636; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v6, v6637; GFX7-SDAG-NEXT: v_min_f32_e32 v0, v0, v1638; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v2, v3639; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v4, v5640; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v6, v7641; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]642;643; GFX7-GISEL-LABEL: test_vector_reduce_fmin_v8half:644; GFX7-GISEL: ; %bb.0: ; %entry645; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)646; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v0, v0647; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v1, v1648; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v2, v2649; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v3, v3650; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v1651; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v0, v0652; GFX7-GISEL-NEXT: v_min_f32_e32 v1, v2, v3653; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v2, v4654; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v3, v5655; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v4, v6656; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v5, v7657; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v1, v1658; GFX7-GISEL-NEXT: v_min_f32_e32 v2, v2, v3659; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v2, v2660; GFX7-GISEL-NEXT: v_min_f32_e32 v3, v4, v5661; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v3, v3662; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v0, v0663; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v1, v1664; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v2, v2665; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v3, v3666; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v1667; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v0, v0668; GFX7-GISEL-NEXT: v_min_f32_e32 v1, v2, v3669; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v1, v1670; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v0, v0671; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v1, v1672; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v1673; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v0, v0674; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]675;676; GFX8-SDAG-LABEL: test_vector_reduce_fmin_v8half:677; GFX8-SDAG: ; %bb.0: ; %entry678; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)679; GFX8-SDAG-NEXT: v_max_f16_sdwa v5, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1680; GFX8-SDAG-NEXT: v_max_f16_e32 v0, v0, v0681; GFX8-SDAG-NEXT: v_max_f16_sdwa v4, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1682; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v5683; GFX8-SDAG-NEXT: v_max_f16_e32 v1, v1, v1684; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v1685; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v4686; GFX8-SDAG-NEXT: v_max_f16_e32 v1, v2, v2687; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v1688; GFX8-SDAG-NEXT: v_max_f16_sdwa v1, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1689; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v1690; GFX8-SDAG-NEXT: v_max_f16_e32 v1, v3, v3691; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v1692; GFX8-SDAG-NEXT: v_max_f16_sdwa v1, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1693; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v1694; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]695;696; GFX8-GISEL-LABEL: test_vector_reduce_fmin_v8half:697; GFX8-GISEL: ; %bb.0: ; %entry698; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)699; GFX8-GISEL-NEXT: v_max_f16_e32 v4, v0, v0700; GFX8-GISEL-NEXT: v_max_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1701; GFX8-GISEL-NEXT: v_min_f16_e32 v0, v4, v0702; GFX8-GISEL-NEXT: v_max_f16_e32 v4, v1, v1703; GFX8-GISEL-NEXT: v_max_f16_sdwa v1, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1704; GFX8-GISEL-NEXT: v_min_f16_e32 v1, v4, v1705; GFX8-GISEL-NEXT: v_max_f16_e32 v4, v2, v2706; GFX8-GISEL-NEXT: v_max_f16_sdwa v2, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1707; GFX8-GISEL-NEXT: v_min_f16_e32 v2, v4, v2708; GFX8-GISEL-NEXT: v_max_f16_e32 v4, v3, v3709; GFX8-GISEL-NEXT: v_max_f16_sdwa v3, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1710; GFX8-GISEL-NEXT: v_min_f16_e32 v3, v4, v3711; GFX8-GISEL-NEXT: v_min_f16_e32 v0, v0, v1712; GFX8-GISEL-NEXT: v_min_f16_e32 v1, v2, v3713; GFX8-GISEL-NEXT: v_min_f16_e32 v0, v0, v1714; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]715;716; GFX9-SDAG-LABEL: test_vector_reduce_fmin_v8half:717; GFX9-SDAG: ; %bb.0: ; %entry718; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)719; GFX9-SDAG-NEXT: v_pk_max_f16 v3, v3, v3720; GFX9-SDAG-NEXT: v_pk_max_f16 v1, v1, v1721; GFX9-SDAG-NEXT: v_pk_max_f16 v2, v2, v2722; GFX9-SDAG-NEXT: v_pk_max_f16 v0, v0, v0723; GFX9-SDAG-NEXT: v_pk_min_f16 v1, v1, v3724; GFX9-SDAG-NEXT: v_pk_min_f16 v0, v0, v2725; GFX9-SDAG-NEXT: s_nop 0726; GFX9-SDAG-NEXT: v_pk_min_f16 v0, v0, v1727; GFX9-SDAG-NEXT: s_nop 0728; GFX9-SDAG-NEXT: v_min_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1729; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]730;731; GFX9-GISEL-LABEL: test_vector_reduce_fmin_v8half:732; GFX9-GISEL: ; %bb.0: ; %entry733; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)734; GFX9-GISEL-NEXT: v_max_f16_e32 v4, v0, v0735; GFX9-GISEL-NEXT: v_max_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1736; GFX9-GISEL-NEXT: v_min_f16_e32 v0, v4, v0737; GFX9-GISEL-NEXT: v_max_f16_e32 v4, v1, v1738; GFX9-GISEL-NEXT: v_max_f16_sdwa v1, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1739; GFX9-GISEL-NEXT: v_min_f16_e32 v1, v4, v1740; GFX9-GISEL-NEXT: v_max_f16_e32 v4, v2, v2741; GFX9-GISEL-NEXT: v_max_f16_sdwa v2, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1742; GFX9-GISEL-NEXT: v_min_f16_e32 v2, v4, v2743; GFX9-GISEL-NEXT: v_max_f16_e32 v4, v3, v3744; GFX9-GISEL-NEXT: v_max_f16_sdwa v3, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1745; GFX9-GISEL-NEXT: v_min_f16_e32 v3, v4, v3746; GFX9-GISEL-NEXT: v_min_f16_e32 v0, v0, v1747; GFX9-GISEL-NEXT: v_min_f16_e32 v1, v2, v3748; GFX9-GISEL-NEXT: v_min_f16_e32 v0, v0, v1749; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]750;751; GFX10-SDAG-LABEL: test_vector_reduce_fmin_v8half:752; GFX10-SDAG: ; %bb.0: ; %entry753; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)754; GFX10-SDAG-NEXT: v_pk_max_f16 v3, v3, v3755; GFX10-SDAG-NEXT: v_pk_max_f16 v1, v1, v1756; GFX10-SDAG-NEXT: v_pk_max_f16 v2, v2, v2757; GFX10-SDAG-NEXT: v_pk_max_f16 v0, v0, v0758; GFX10-SDAG-NEXT: v_pk_min_f16 v1, v1, v3759; GFX10-SDAG-NEXT: v_pk_min_f16 v0, v0, v2760; GFX10-SDAG-NEXT: v_pk_min_f16 v0, v0, v1761; GFX10-SDAG-NEXT: v_min_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1762; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]763;764; GFX10-GISEL-LABEL: test_vector_reduce_fmin_v8half:765; GFX10-GISEL: ; %bb.0: ; %entry766; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)767; GFX10-GISEL-NEXT: v_max_f16_e32 v4, v0, v0768; GFX10-GISEL-NEXT: v_max_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1769; GFX10-GISEL-NEXT: v_max_f16_e32 v5, v1, v1770; GFX10-GISEL-NEXT: v_max_f16_sdwa v1, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1771; GFX10-GISEL-NEXT: v_max_f16_e32 v6, v2, v2772; GFX10-GISEL-NEXT: v_max_f16_sdwa v2, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1773; GFX10-GISEL-NEXT: v_max_f16_e32 v7, v3, v3774; GFX10-GISEL-NEXT: v_max_f16_sdwa v3, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1775; GFX10-GISEL-NEXT: v_min_f16_e32 v0, v4, v0776; GFX10-GISEL-NEXT: v_min_f16_e32 v1, v5, v1777; GFX10-GISEL-NEXT: v_min_f16_e32 v2, v6, v2778; GFX10-GISEL-NEXT: v_min_f16_e32 v3, v7, v3779; GFX10-GISEL-NEXT: v_min_f16_e32 v0, v0, v1780; GFX10-GISEL-NEXT: v_min_f16_e32 v1, v2, v3781; GFX10-GISEL-NEXT: v_min_f16_e32 v0, v0, v1782; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]783;784; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_fmin_v8half:785; GFX11-SDAG-TRUE16: ; %bb.0: ; %entry786; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)787; GFX11-SDAG-TRUE16-NEXT: v_pk_max_f16 v3, v3, v3788; GFX11-SDAG-TRUE16-NEXT: v_pk_max_f16 v1, v1, v1789; GFX11-SDAG-TRUE16-NEXT: v_pk_max_f16 v2, v2, v2790; GFX11-SDAG-TRUE16-NEXT: v_pk_max_f16 v0, v0, v0791; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)792; GFX11-SDAG-TRUE16-NEXT: v_pk_min_f16 v1, v1, v3793; GFX11-SDAG-TRUE16-NEXT: v_pk_min_f16 v0, v0, v2794; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)795; GFX11-SDAG-TRUE16-NEXT: v_pk_min_f16 v0, v0, v1796; GFX11-SDAG-TRUE16-NEXT: v_min_f16_e32 v0.l, v0.l, v0.h797; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]798;799; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_fmin_v8half:800; GFX11-SDAG-FAKE16: ; %bb.0: ; %entry801; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)802; GFX11-SDAG-FAKE16-NEXT: v_pk_max_f16 v3, v3, v3803; GFX11-SDAG-FAKE16-NEXT: v_pk_max_f16 v1, v1, v1804; GFX11-SDAG-FAKE16-NEXT: v_pk_max_f16 v2, v2, v2805; GFX11-SDAG-FAKE16-NEXT: v_pk_max_f16 v0, v0, v0806; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)807; GFX11-SDAG-FAKE16-NEXT: v_pk_min_f16 v1, v1, v3808; GFX11-SDAG-FAKE16-NEXT: v_pk_min_f16 v0, v0, v2809; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)810; GFX11-SDAG-FAKE16-NEXT: v_pk_min_f16 v0, v0, v1811; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v0812; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)813; GFX11-SDAG-FAKE16-NEXT: v_min_f16_e32 v0, v0, v1814; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]815;816; GFX11-GISEL-TRUE16-LABEL: test_vector_reduce_fmin_v8half:817; GFX11-GISEL-TRUE16: ; %bb.0: ; %entry818; GFX11-GISEL-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)819; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v0.l, v0.l, v0.l820; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v0.h, v0.h, v0.h821; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v1.l, v1.l, v1.l822; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v1.h, v1.h, v1.h823; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v2.l, v2.l, v2.l824; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v2.h, v2.h, v2.h825; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v3.l, v3.l, v3.l826; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v3.h, v3.h, v3.h827; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v0.l, v0.l, v0.h828; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v0.h, v1.l, v1.h829; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v1.l, v2.l, v2.h830; GFX11-GISEL-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)831; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v1.h, v3.l, v3.h832; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v0.l, v0.l, v0.h833; GFX11-GISEL-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)834; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v0.h, v1.l, v1.h835; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v0.l, v0.l, v0.h836; GFX11-GISEL-TRUE16-NEXT: s_setpc_b64 s[30:31]837;838; GFX11-GISEL-FAKE16-LABEL: test_vector_reduce_fmin_v8half:839; GFX11-GISEL-FAKE16: ; %bb.0: ; %entry840; GFX11-GISEL-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)841; GFX11-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v4, 16, v0842; GFX11-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v5, 16, v1843; GFX11-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v6, 16, v2844; GFX11-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v7, 16, v3845; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v0, v0, v0846; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v1, v1, v1847; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v4, v4, v4848; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v5, v5, v5849; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v2, v2, v2850; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v6, v6, v6851; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v3, v3, v3852; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v7, v7, v7853; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v0, v0, v4854; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v1, v1, v5855; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v2, v2, v6856; GFX11-GISEL-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)857; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v3, v3, v7858; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v0, v0, v1859; GFX11-GISEL-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)860; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v1, v2, v3861; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v0, v0, v1862; GFX11-GISEL-FAKE16-NEXT: s_setpc_b64 s[30:31]863;864; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_fmin_v8half:865; GFX12-SDAG-TRUE16: ; %bb.0: ; %entry866; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0867; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x0868; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x0869; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x0870; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0871; GFX12-SDAG-TRUE16-NEXT: v_pk_max_num_f16 v3, v3, v3872; GFX12-SDAG-TRUE16-NEXT: v_pk_max_num_f16 v1, v1, v1873; GFX12-SDAG-TRUE16-NEXT: v_pk_max_num_f16 v2, v2, v2874; GFX12-SDAG-TRUE16-NEXT: v_pk_max_num_f16 v0, v0, v0875; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)876; GFX12-SDAG-TRUE16-NEXT: v_pk_min_num_f16 v1, v1, v3877; GFX12-SDAG-TRUE16-NEXT: v_pk_min_num_f16 v0, v0, v2878; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)879; GFX12-SDAG-TRUE16-NEXT: v_pk_min_num_f16 v0, v0, v1880; GFX12-SDAG-TRUE16-NEXT: v_min_num_f16_e32 v0.l, v0.l, v0.h881; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]882;883; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_fmin_v8half:884; GFX12-SDAG-FAKE16: ; %bb.0: ; %entry885; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0886; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x0887; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x0888; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x0889; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x0890; GFX12-SDAG-FAKE16-NEXT: v_pk_max_num_f16 v3, v3, v3891; GFX12-SDAG-FAKE16-NEXT: v_pk_max_num_f16 v1, v1, v1892; GFX12-SDAG-FAKE16-NEXT: v_pk_max_num_f16 v2, v2, v2893; GFX12-SDAG-FAKE16-NEXT: v_pk_max_num_f16 v0, v0, v0894; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)895; GFX12-SDAG-FAKE16-NEXT: v_pk_min_num_f16 v1, v1, v3896; GFX12-SDAG-FAKE16-NEXT: v_pk_min_num_f16 v0, v0, v2897; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)898; GFX12-SDAG-FAKE16-NEXT: v_pk_min_num_f16 v0, v0, v1899; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v0900; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)901; GFX12-SDAG-FAKE16-NEXT: v_min_num_f16_e32 v0, v0, v1902; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]903;904; GFX12-GISEL-TRUE16-LABEL: test_vector_reduce_fmin_v8half:905; GFX12-GISEL-TRUE16: ; %bb.0: ; %entry906; GFX12-GISEL-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0907; GFX12-GISEL-TRUE16-NEXT: s_wait_expcnt 0x0908; GFX12-GISEL-TRUE16-NEXT: s_wait_samplecnt 0x0909; GFX12-GISEL-TRUE16-NEXT: s_wait_bvhcnt 0x0910; GFX12-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0911; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v0.l, v0.l, v0.l912; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v0.h, v0.h, v0.h913; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v1.l, v1.l, v1.l914; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v1.h, v1.h, v1.h915; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v2.l, v2.l, v2.l916; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v2.h, v2.h, v2.h917; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v3.l, v3.l, v3.l918; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v3.h, v3.h, v3.h919; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v0.l, v0.l, v0.h920; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v0.h, v1.l, v1.h921; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v1.l, v2.l, v2.h922; GFX12-GISEL-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)923; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v1.h, v3.l, v3.h924; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v0.l, v0.l, v0.h925; GFX12-GISEL-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)926; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v0.h, v1.l, v1.h927; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v0.l, v0.l, v0.h928; GFX12-GISEL-TRUE16-NEXT: s_setpc_b64 s[30:31]929;930; GFX12-GISEL-FAKE16-LABEL: test_vector_reduce_fmin_v8half:931; GFX12-GISEL-FAKE16: ; %bb.0: ; %entry932; GFX12-GISEL-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0933; GFX12-GISEL-FAKE16-NEXT: s_wait_expcnt 0x0934; GFX12-GISEL-FAKE16-NEXT: s_wait_samplecnt 0x0935; GFX12-GISEL-FAKE16-NEXT: s_wait_bvhcnt 0x0936; GFX12-GISEL-FAKE16-NEXT: s_wait_kmcnt 0x0937; GFX12-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v4, 16, v0938; GFX12-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v5, 16, v1939; GFX12-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v6, 16, v2940; GFX12-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v7, 16, v3941; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v0, v0, v0942; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v1, v1, v1943; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v4, v4, v4944; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v5, v5, v5945; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v2, v2, v2946; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v6, v6, v6947; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v3, v3, v3948; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v7, v7, v7949; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v0, v0, v4950; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v1, v1, v5951; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v2, v2, v6952; GFX12-GISEL-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)953; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v3, v3, v7954; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v0, v0, v1955; GFX12-GISEL-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)956; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v1, v2, v3957; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v0, v0, v1958; GFX12-GISEL-FAKE16-NEXT: s_setpc_b64 s[30:31]959entry:960 %res = call half @llvm.vector.reduce.fmin.v8half(<8 x half> %v)961 ret half %res962}963 964define half @test_vector_reduce_fmin_v16half(<16 x half> %v) {965; GFX7-SDAG-LABEL: test_vector_reduce_fmin_v16half:966; GFX7-SDAG: ; %bb.0: ; %entry967; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)968; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v0, v0969; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v1, v1970; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v3, v3971; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v2, v2972; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v5, v5973; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v4, v4974; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v7, v7975; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v6, v6976; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v9, v9977; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v8, v8978; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v0, v0979; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v1, v1980; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v11, v11981; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v10, v10982; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v3, v3983; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v2, v2984; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v13, v13985; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v12, v12986; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v5, v5987; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v4, v4988; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v15, v15989; GFX7-SDAG-NEXT: v_cvt_f16_f32_e32 v14, v14990; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v7, v7991; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v6, v6992; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v9, v9993; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v8, v8994; GFX7-SDAG-NEXT: v_min_f32_e32 v0, v0, v1995; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v11, v11996; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v10, v10997; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v2, v3998; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v13, v13999; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v12, v121000; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v4, v51001; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v15, v151002; GFX7-SDAG-NEXT: v_cvt_f32_f16_e32 v14, v141003; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v6, v71004; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v8, v91005; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v10, v111006; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v12, v131007; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v14, v151008; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]1009;1010; GFX7-GISEL-LABEL: test_vector_reduce_fmin_v16half:1011; GFX7-GISEL: ; %bb.0: ; %entry1012; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1013; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v0, v01014; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v1, v11015; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v2, v21016; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v3, v31017; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v11018; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v0, v01019; GFX7-GISEL-NEXT: v_min_f32_e32 v1, v2, v31020; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v2, v41021; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v3, v51022; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v4, v61023; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v5, v71024; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v6, v101025; GFX7-GISEL-NEXT: v_min_f32_e32 v2, v2, v31026; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v7, v111027; GFX7-GISEL-NEXT: v_min_f32_e32 v3, v4, v51028; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v4, v81029; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v5, v91030; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v8, v141031; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v9, v151032; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v1, v11033; GFX7-GISEL-NEXT: v_min_f32_e32 v4, v4, v51034; GFX7-GISEL-NEXT: v_min_f32_e32 v5, v6, v71035; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v6, v121036; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v7, v131037; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v2, v21038; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v3, v31039; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v4, v41040; GFX7-GISEL-NEXT: v_min_f32_e32 v6, v6, v71041; GFX7-GISEL-NEXT: v_min_f32_e32 v7, v8, v91042; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v5, v51043; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v6, v61044; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v0, v01045; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v1, v11046; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v2, v21047; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v3, v31048; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v7, v71049; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v11050; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v0, v01051; GFX7-GISEL-NEXT: v_min_f32_e32 v1, v2, v31052; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v2, v41053; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v3, v51054; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v4, v61055; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v5, v71056; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v1, v11057; GFX7-GISEL-NEXT: v_min_f32_e32 v2, v2, v31058; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v2, v21059; GFX7-GISEL-NEXT: v_min_f32_e32 v3, v4, v51060; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v3, v31061; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v0, v01062; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v1, v11063; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v2, v21064; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v3, v31065; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v11066; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v0, v01067; GFX7-GISEL-NEXT: v_min_f32_e32 v1, v2, v31068; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v1, v11069; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v0, v01070; GFX7-GISEL-NEXT: v_cvt_f32_f16_e32 v1, v11071; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v11072; GFX7-GISEL-NEXT: v_cvt_f16_f32_e32 v0, v01073; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]1074;1075; GFX8-SDAG-LABEL: test_vector_reduce_fmin_v16half:1076; GFX8-SDAG: ; %bb.0: ; %entry1077; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1078; GFX8-SDAG-NEXT: v_max_f16_sdwa v9, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11079; GFX8-SDAG-NEXT: v_max_f16_e32 v0, v0, v01080; GFX8-SDAG-NEXT: v_max_f16_sdwa v8, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11081; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v91082; GFX8-SDAG-NEXT: v_max_f16_e32 v1, v1, v11083; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v11084; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v81085; GFX8-SDAG-NEXT: v_max_f16_e32 v1, v2, v21086; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v11087; GFX8-SDAG-NEXT: v_max_f16_sdwa v1, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11088; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v11089; GFX8-SDAG-NEXT: v_max_f16_e32 v1, v3, v31090; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v11091; GFX8-SDAG-NEXT: v_max_f16_sdwa v1, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11092; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v11093; GFX8-SDAG-NEXT: v_max_f16_e32 v1, v4, v41094; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v11095; GFX8-SDAG-NEXT: v_max_f16_sdwa v1, v4, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11096; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v11097; GFX8-SDAG-NEXT: v_max_f16_e32 v1, v5, v51098; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v11099; GFX8-SDAG-NEXT: v_max_f16_sdwa v1, v5, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11100; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v11101; GFX8-SDAG-NEXT: v_max_f16_e32 v1, v6, v61102; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v11103; GFX8-SDAG-NEXT: v_max_f16_sdwa v1, v6, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11104; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v11105; GFX8-SDAG-NEXT: v_max_f16_e32 v1, v7, v71106; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v11107; GFX8-SDAG-NEXT: v_max_f16_sdwa v1, v7, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11108; GFX8-SDAG-NEXT: v_min_f16_e32 v0, v0, v11109; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]1110;1111; GFX8-GISEL-LABEL: test_vector_reduce_fmin_v16half:1112; GFX8-GISEL: ; %bb.0: ; %entry1113; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1114; GFX8-GISEL-NEXT: v_max_f16_e32 v8, v0, v01115; GFX8-GISEL-NEXT: v_max_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11116; GFX8-GISEL-NEXT: v_min_f16_e32 v0, v8, v01117; GFX8-GISEL-NEXT: v_max_f16_e32 v8, v1, v11118; GFX8-GISEL-NEXT: v_max_f16_sdwa v1, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11119; GFX8-GISEL-NEXT: v_min_f16_e32 v1, v8, v11120; GFX8-GISEL-NEXT: v_max_f16_e32 v8, v2, v21121; GFX8-GISEL-NEXT: v_max_f16_sdwa v2, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11122; GFX8-GISEL-NEXT: v_min_f16_e32 v2, v8, v21123; GFX8-GISEL-NEXT: v_max_f16_e32 v8, v3, v31124; GFX8-GISEL-NEXT: v_max_f16_sdwa v3, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11125; GFX8-GISEL-NEXT: v_min_f16_e32 v3, v8, v31126; GFX8-GISEL-NEXT: v_max_f16_e32 v8, v4, v41127; GFX8-GISEL-NEXT: v_max_f16_sdwa v4, v4, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11128; GFX8-GISEL-NEXT: v_min_f16_e32 v4, v8, v41129; GFX8-GISEL-NEXT: v_max_f16_e32 v8, v5, v51130; GFX8-GISEL-NEXT: v_max_f16_sdwa v5, v5, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11131; GFX8-GISEL-NEXT: v_min_f16_e32 v5, v8, v51132; GFX8-GISEL-NEXT: v_max_f16_e32 v8, v6, v61133; GFX8-GISEL-NEXT: v_max_f16_sdwa v6, v6, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11134; GFX8-GISEL-NEXT: v_min_f16_e32 v6, v8, v61135; GFX8-GISEL-NEXT: v_max_f16_e32 v8, v7, v71136; GFX8-GISEL-NEXT: v_max_f16_sdwa v7, v7, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11137; GFX8-GISEL-NEXT: v_min_f16_e32 v7, v8, v71138; GFX8-GISEL-NEXT: v_min_f16_e32 v0, v0, v11139; GFX8-GISEL-NEXT: v_min_f16_e32 v1, v2, v31140; GFX8-GISEL-NEXT: v_min_f16_e32 v2, v4, v51141; GFX8-GISEL-NEXT: v_min_f16_e32 v3, v6, v71142; GFX8-GISEL-NEXT: v_min_f16_e32 v0, v0, v11143; GFX8-GISEL-NEXT: v_min_f16_e32 v1, v2, v31144; GFX8-GISEL-NEXT: v_min_f16_e32 v0, v0, v11145; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]1146;1147; GFX9-SDAG-LABEL: test_vector_reduce_fmin_v16half:1148; GFX9-SDAG: ; %bb.0: ; %entry1149; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1150; GFX9-SDAG-NEXT: v_max_f16_sdwa v15, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11151; GFX9-SDAG-NEXT: v_max_f16_e32 v0, v0, v01152; GFX9-SDAG-NEXT: v_lshrrev_b32_e32 v14, 16, v11153; GFX9-SDAG-NEXT: v_min_f16_e32 v0, v0, v151154; GFX9-SDAG-NEXT: v_lshrrev_b32_e32 v13, 16, v21155; GFX9-SDAG-NEXT: v_min3_f16 v0, v0, v1, v141156; GFX9-SDAG-NEXT: v_lshrrev_b32_e32 v12, 16, v31157; GFX9-SDAG-NEXT: v_min3_f16 v0, v0, v2, v131158; GFX9-SDAG-NEXT: v_lshrrev_b32_e32 v11, 16, v41159; GFX9-SDAG-NEXT: v_min3_f16 v0, v0, v3, v121160; GFX9-SDAG-NEXT: v_lshrrev_b32_e32 v10, 16, v51161; GFX9-SDAG-NEXT: v_min3_f16 v0, v0, v4, v111162; GFX9-SDAG-NEXT: v_lshrrev_b32_e32 v9, 16, v61163; GFX9-SDAG-NEXT: v_min3_f16 v0, v0, v5, v101164; GFX9-SDAG-NEXT: v_lshrrev_b32_e32 v8, 16, v71165; GFX9-SDAG-NEXT: v_min3_f16 v0, v0, v6, v91166; GFX9-SDAG-NEXT: v_min3_f16 v0, v0, v7, v81167; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]1168;1169; GFX9-GISEL-LABEL: test_vector_reduce_fmin_v16half:1170; GFX9-GISEL: ; %bb.0: ; %entry1171; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1172; GFX9-GISEL-NEXT: v_max_f16_e32 v8, v0, v01173; GFX9-GISEL-NEXT: v_max_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11174; GFX9-GISEL-NEXT: v_min_f16_e32 v0, v8, v01175; GFX9-GISEL-NEXT: v_max_f16_e32 v8, v1, v11176; GFX9-GISEL-NEXT: v_max_f16_sdwa v1, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11177; GFX9-GISEL-NEXT: v_min_f16_e32 v1, v8, v11178; GFX9-GISEL-NEXT: v_max_f16_e32 v8, v2, v21179; GFX9-GISEL-NEXT: v_max_f16_sdwa v2, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11180; GFX9-GISEL-NEXT: v_min_f16_e32 v2, v8, v21181; GFX9-GISEL-NEXT: v_max_f16_e32 v8, v3, v31182; GFX9-GISEL-NEXT: v_max_f16_sdwa v3, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11183; GFX9-GISEL-NEXT: v_min_f16_e32 v3, v8, v31184; GFX9-GISEL-NEXT: v_max_f16_e32 v8, v4, v41185; GFX9-GISEL-NEXT: v_max_f16_sdwa v4, v4, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11186; GFX9-GISEL-NEXT: v_min_f16_e32 v4, v8, v41187; GFX9-GISEL-NEXT: v_max_f16_e32 v8, v5, v51188; GFX9-GISEL-NEXT: v_max_f16_sdwa v5, v5, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11189; GFX9-GISEL-NEXT: v_min_f16_e32 v5, v8, v51190; GFX9-GISEL-NEXT: v_max_f16_e32 v8, v6, v61191; GFX9-GISEL-NEXT: v_max_f16_sdwa v6, v6, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11192; GFX9-GISEL-NEXT: v_min_f16_e32 v6, v8, v61193; GFX9-GISEL-NEXT: v_max_f16_e32 v8, v7, v71194; GFX9-GISEL-NEXT: v_max_f16_sdwa v7, v7, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11195; GFX9-GISEL-NEXT: v_min_f16_e32 v7, v8, v71196; GFX9-GISEL-NEXT: v_min_f16_e32 v0, v0, v11197; GFX9-GISEL-NEXT: v_min_f16_e32 v1, v2, v31198; GFX9-GISEL-NEXT: v_min_f16_e32 v2, v4, v51199; GFX9-GISEL-NEXT: v_min_f16_e32 v3, v6, v71200; GFX9-GISEL-NEXT: v_min_f16_e32 v0, v0, v11201; GFX9-GISEL-NEXT: v_min_f16_e32 v1, v2, v31202; GFX9-GISEL-NEXT: v_min_f16_e32 v0, v0, v11203; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]1204;1205; GFX10-SDAG-LABEL: test_vector_reduce_fmin_v16half:1206; GFX10-SDAG: ; %bb.0: ; %entry1207; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1208; GFX10-SDAG-NEXT: v_max_f16_sdwa v8, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11209; GFX10-SDAG-NEXT: v_max_f16_e32 v0, v0, v01210; GFX10-SDAG-NEXT: v_lshrrev_b32_e32 v9, 16, v11211; GFX10-SDAG-NEXT: v_min_f16_e32 v0, v0, v81212; GFX10-SDAG-NEXT: v_lshrrev_b32_e32 v8, 16, v21213; GFX10-SDAG-NEXT: v_min3_f16 v0, v0, v1, v91214; GFX10-SDAG-NEXT: v_lshrrev_b32_e32 v1, 16, v31215; GFX10-SDAG-NEXT: v_min3_f16 v0, v0, v2, v81216; GFX10-SDAG-NEXT: v_lshrrev_b32_e32 v2, 16, v41217; GFX10-SDAG-NEXT: v_min3_f16 v0, v0, v3, v11218; GFX10-SDAG-NEXT: v_lshrrev_b32_e32 v1, 16, v51219; GFX10-SDAG-NEXT: v_min3_f16 v0, v0, v4, v21220; GFX10-SDAG-NEXT: v_lshrrev_b32_e32 v2, 16, v61221; GFX10-SDAG-NEXT: v_min3_f16 v0, v0, v5, v11222; GFX10-SDAG-NEXT: v_lshrrev_b32_e32 v1, 16, v71223; GFX10-SDAG-NEXT: v_min3_f16 v0, v0, v6, v21224; GFX10-SDAG-NEXT: v_min3_f16 v0, v0, v7, v11225; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]1226;1227; GFX10-GISEL-LABEL: test_vector_reduce_fmin_v16half:1228; GFX10-GISEL: ; %bb.0: ; %entry1229; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1230; GFX10-GISEL-NEXT: v_max_f16_e32 v8, v0, v01231; GFX10-GISEL-NEXT: v_max_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11232; GFX10-GISEL-NEXT: v_max_f16_e32 v9, v1, v11233; GFX10-GISEL-NEXT: v_max_f16_sdwa v1, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11234; GFX10-GISEL-NEXT: v_max_f16_e32 v10, v2, v21235; GFX10-GISEL-NEXT: v_max_f16_sdwa v2, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11236; GFX10-GISEL-NEXT: v_min_f16_e32 v0, v8, v01237; GFX10-GISEL-NEXT: v_max_f16_e32 v8, v3, v31238; GFX10-GISEL-NEXT: v_min_f16_e32 v1, v9, v11239; GFX10-GISEL-NEXT: v_max_f16_sdwa v3, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11240; GFX10-GISEL-NEXT: v_min_f16_e32 v2, v10, v21241; GFX10-GISEL-NEXT: v_max_f16_e32 v9, v4, v41242; GFX10-GISEL-NEXT: v_max_f16_sdwa v4, v4, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11243; GFX10-GISEL-NEXT: v_max_f16_e32 v10, v5, v51244; GFX10-GISEL-NEXT: v_max_f16_sdwa v5, v5, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11245; GFX10-GISEL-NEXT: v_max_f16_e32 v11, v6, v61246; GFX10-GISEL-NEXT: v_max_f16_sdwa v6, v6, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11247; GFX10-GISEL-NEXT: v_max_f16_e32 v12, v7, v71248; GFX10-GISEL-NEXT: v_max_f16_sdwa v7, v7, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_11249; GFX10-GISEL-NEXT: v_min_f16_e32 v3, v8, v31250; GFX10-GISEL-NEXT: v_min_f16_e32 v4, v9, v41251; GFX10-GISEL-NEXT: v_min_f16_e32 v5, v10, v51252; GFX10-GISEL-NEXT: v_min_f16_e32 v6, v11, v61253; GFX10-GISEL-NEXT: v_min_f16_e32 v7, v12, v71254; GFX10-GISEL-NEXT: v_min_f16_e32 v0, v0, v11255; GFX10-GISEL-NEXT: v_min_f16_e32 v1, v2, v31256; GFX10-GISEL-NEXT: v_min_f16_e32 v2, v4, v51257; GFX10-GISEL-NEXT: v_min_f16_e32 v3, v6, v71258; GFX10-GISEL-NEXT: v_min_f16_e32 v0, v0, v11259; GFX10-GISEL-NEXT: v_min_f16_e32 v1, v2, v31260; GFX10-GISEL-NEXT: v_min_f16_e32 v0, v0, v11261; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]1262;1263; GFX11-SDAG-TRUE16-LABEL: test_vector_reduce_fmin_v16half:1264; GFX11-SDAG-TRUE16: ; %bb.0: ; %entry1265; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1266; GFX11-SDAG-TRUE16-NEXT: v_max_f16_e32 v0.h, v0.h, v0.h1267; GFX11-SDAG-TRUE16-NEXT: v_max_f16_e32 v0.l, v0.l, v0.l1268; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1269; GFX11-SDAG-TRUE16-NEXT: v_min_f16_e32 v0.l, v0.l, v0.h1270; GFX11-SDAG-TRUE16-NEXT: v_min3_f16 v0.l, v0.l, v1.l, v1.h1271; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1272; GFX11-SDAG-TRUE16-NEXT: v_min3_f16 v0.l, v0.l, v2.l, v2.h1273; GFX11-SDAG-TRUE16-NEXT: v_min3_f16 v0.l, v0.l, v3.l, v3.h1274; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1275; GFX11-SDAG-TRUE16-NEXT: v_min3_f16 v0.l, v0.l, v4.l, v4.h1276; GFX11-SDAG-TRUE16-NEXT: v_min3_f16 v0.l, v0.l, v5.l, v5.h1277; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1278; GFX11-SDAG-TRUE16-NEXT: v_min3_f16 v0.l, v0.l, v6.l, v6.h1279; GFX11-SDAG-TRUE16-NEXT: v_min3_f16 v0.l, v0.l, v7.l, v7.h1280; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1281;1282; GFX11-SDAG-FAKE16-LABEL: test_vector_reduce_fmin_v16half:1283; GFX11-SDAG-FAKE16: ; %bb.0: ; %entry1284; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1285; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v8, 16, v01286; GFX11-SDAG-FAKE16-NEXT: v_max_f16_e32 v0, v0, v01287; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v9, 16, v11288; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)1289; GFX11-SDAG-FAKE16-NEXT: v_max_f16_e32 v8, v8, v81290; GFX11-SDAG-FAKE16-NEXT: v_min_f16_e32 v0, v0, v81291; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v8, 16, v21292; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)1293; GFX11-SDAG-FAKE16-NEXT: v_min3_f16 v0, v0, v1, v91294; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v31295; GFX11-SDAG-FAKE16-NEXT: v_min3_f16 v0, v0, v2, v81296; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v2, 16, v41297; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)1298; GFX11-SDAG-FAKE16-NEXT: v_min3_f16 v0, v0, v3, v11299; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v51300; GFX11-SDAG-FAKE16-NEXT: v_min3_f16 v0, v0, v4, v21301; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v2, 16, v61302; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)1303; GFX11-SDAG-FAKE16-NEXT: v_min3_f16 v0, v0, v5, v11304; GFX11-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v71305; GFX11-SDAG-FAKE16-NEXT: v_min3_f16 v0, v0, v6, v21306; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1307; GFX11-SDAG-FAKE16-NEXT: v_min3_f16 v0, v0, v7, v11308; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1309;1310; GFX11-GISEL-TRUE16-LABEL: test_vector_reduce_fmin_v16half:1311; GFX11-GISEL-TRUE16: ; %bb.0: ; %entry1312; GFX11-GISEL-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1313; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v0.l, v0.l, v0.l1314; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v0.h, v0.h, v0.h1315; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v1.l, v1.l, v1.l1316; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v1.h, v1.h, v1.h1317; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v2.l, v2.l, v2.l1318; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v2.h, v2.h, v2.h1319; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v0.l, v0.l, v0.h1320; GFX11-GISEL-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_4)1321; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v0.h, v1.l, v1.h1322; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v1.h, v3.l, v3.l1323; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v1.l, v2.l, v2.h1324; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v2.l, v3.h, v3.h1325; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v2.h, v4.l, v4.l1326; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v3.l, v4.h, v4.h1327; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v3.h, v5.l, v5.l1328; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v4.l, v5.h, v5.h1329; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v4.h, v6.l, v6.l1330; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v5.l, v6.h, v6.h1331; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v5.h, v7.l, v7.l1332; GFX11-GISEL-TRUE16-NEXT: v_max_f16_e32 v6.l, v7.h, v7.h1333; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v1.h, v1.h, v2.l1334; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v2.l, v2.h, v3.l1335; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v2.h, v3.h, v4.l1336; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v3.l, v4.h, v5.l1337; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v3.h, v5.h, v6.l1338; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v0.l, v0.l, v0.h1339; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v0.h, v1.l, v1.h1340; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v1.l, v2.l, v2.h1341; GFX11-GISEL-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)1342; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v1.h, v3.l, v3.h1343; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v0.l, v0.l, v0.h1344; GFX11-GISEL-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1345; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v0.h, v1.l, v1.h1346; GFX11-GISEL-TRUE16-NEXT: v_min_f16_e32 v0.l, v0.l, v0.h1347; GFX11-GISEL-TRUE16-NEXT: s_setpc_b64 s[30:31]1348;1349; GFX11-GISEL-FAKE16-LABEL: test_vector_reduce_fmin_v16half:1350; GFX11-GISEL-FAKE16: ; %bb.0: ; %entry1351; GFX11-GISEL-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1352; GFX11-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v8, 16, v01353; GFX11-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v9, 16, v11354; GFX11-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v10, 16, v21355; GFX11-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v11, 16, v31356; GFX11-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v12, 16, v41357; GFX11-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v13, 16, v51358; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v0, v0, v01359; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v8, v8, v81360; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v1, v1, v11361; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v9, v9, v91362; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v2, v2, v21363; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v10, v10, v101364; GFX11-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v14, 16, v61365; GFX11-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v15, 16, v71366; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v0, v0, v81367; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v1, v1, v91368; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v2, v2, v101369; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v3, v3, v31370; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v8, v11, v111371; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v4, v4, v41372; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v9, v12, v121373; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v5, v5, v51374; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v10, v13, v131375; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v6, v6, v61376; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v11, v14, v141377; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v7, v7, v71378; GFX11-GISEL-FAKE16-NEXT: v_max_f16_e32 v12, v15, v151379; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v3, v3, v81380; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v4, v4, v91381; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v5, v5, v101382; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v6, v6, v111383; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v7, v7, v121384; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v0, v0, v11385; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v1, v2, v31386; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v2, v4, v51387; GFX11-GISEL-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)1388; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v3, v6, v71389; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v0, v0, v11390; GFX11-GISEL-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1391; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v1, v2, v31392; GFX11-GISEL-FAKE16-NEXT: v_min_f16_e32 v0, v0, v11393; GFX11-GISEL-FAKE16-NEXT: s_setpc_b64 s[30:31]1394;1395; GFX12-SDAG-TRUE16-LABEL: test_vector_reduce_fmin_v16half:1396; GFX12-SDAG-TRUE16: ; %bb.0: ; %entry1397; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01398; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x01399; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x01400; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x01401; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x01402; GFX12-SDAG-TRUE16-NEXT: v_max_num_f16_e32 v0.h, v0.h, v0.h1403; GFX12-SDAG-TRUE16-NEXT: v_max_num_f16_e32 v0.l, v0.l, v0.l1404; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1405; GFX12-SDAG-TRUE16-NEXT: v_min_num_f16_e32 v0.l, v0.l, v0.h1406; GFX12-SDAG-TRUE16-NEXT: v_min3_num_f16 v0.l, v0.l, v1.l, v1.h1407; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1408; GFX12-SDAG-TRUE16-NEXT: v_min3_num_f16 v0.l, v0.l, v2.l, v2.h1409; GFX12-SDAG-TRUE16-NEXT: v_min3_num_f16 v0.l, v0.l, v3.l, v3.h1410; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1411; GFX12-SDAG-TRUE16-NEXT: v_min3_num_f16 v0.l, v0.l, v4.l, v4.h1412; GFX12-SDAG-TRUE16-NEXT: v_min3_num_f16 v0.l, v0.l, v5.l, v5.h1413; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1414; GFX12-SDAG-TRUE16-NEXT: v_min3_num_f16 v0.l, v0.l, v6.l, v6.h1415; GFX12-SDAG-TRUE16-NEXT: v_min3_num_f16 v0.l, v0.l, v7.l, v7.h1416; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1417;1418; GFX12-SDAG-FAKE16-LABEL: test_vector_reduce_fmin_v16half: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_lshrrev_b32_e32 v8, 16, v01426; GFX12-SDAG-FAKE16-NEXT: v_max_num_f16_e32 v0, v0, v01427; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v9, 16, v11428; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)1429; GFX12-SDAG-FAKE16-NEXT: v_max_num_f16_e32 v8, v8, v81430; GFX12-SDAG-FAKE16-NEXT: v_min_num_f16_e32 v0, v0, v81431; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v8, 16, v21432; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)1433; GFX12-SDAG-FAKE16-NEXT: v_min3_num_f16 v0, v0, v1, v91434; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v31435; GFX12-SDAG-FAKE16-NEXT: v_min3_num_f16 v0, v0, v2, v81436; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v2, 16, v41437; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)1438; GFX12-SDAG-FAKE16-NEXT: v_min3_num_f16 v0, v0, v3, v11439; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v51440; GFX12-SDAG-FAKE16-NEXT: v_min3_num_f16 v0, v0, v4, v21441; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v2, 16, v61442; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)1443; GFX12-SDAG-FAKE16-NEXT: v_min3_num_f16 v0, v0, v5, v11444; GFX12-SDAG-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v71445; GFX12-SDAG-FAKE16-NEXT: v_min3_num_f16 v0, v0, v6, v21446; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1447; GFX12-SDAG-FAKE16-NEXT: v_min3_num_f16 v0, v0, v7, v11448; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1449;1450; GFX12-GISEL-TRUE16-LABEL: test_vector_reduce_fmin_v16half:1451; GFX12-GISEL-TRUE16: ; %bb.0: ; %entry1452; GFX12-GISEL-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01453; GFX12-GISEL-TRUE16-NEXT: s_wait_expcnt 0x01454; GFX12-GISEL-TRUE16-NEXT: s_wait_samplecnt 0x01455; GFX12-GISEL-TRUE16-NEXT: s_wait_bvhcnt 0x01456; GFX12-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x01457; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v0.l, v0.l, v0.l1458; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v0.h, v0.h, v0.h1459; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v1.l, v1.l, v1.l1460; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v1.h, v1.h, v1.h1461; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v2.l, v2.l, v2.l1462; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v2.h, v2.h, v2.h1463; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v0.l, v0.l, v0.h1464; GFX12-GISEL-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_4)1465; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v0.h, v1.l, v1.h1466; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v1.h, v3.l, v3.l1467; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v1.l, v2.l, v2.h1468; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v2.l, v3.h, v3.h1469; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v2.h, v4.l, v4.l1470; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v3.l, v4.h, v4.h1471; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v3.h, v5.l, v5.l1472; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v4.l, v5.h, v5.h1473; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v4.h, v6.l, v6.l1474; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v5.l, v6.h, v6.h1475; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v5.h, v7.l, v7.l1476; GFX12-GISEL-TRUE16-NEXT: v_max_num_f16_e32 v6.l, v7.h, v7.h1477; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v1.h, v1.h, v2.l1478; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v2.l, v2.h, v3.l1479; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v2.h, v3.h, v4.l1480; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v3.l, v4.h, v5.l1481; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v3.h, v5.h, v6.l1482; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v0.l, v0.l, v0.h1483; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v0.h, v1.l, v1.h1484; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v1.l, v2.l, v2.h1485; GFX12-GISEL-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)1486; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v1.h, v3.l, v3.h1487; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v0.l, v0.l, v0.h1488; GFX12-GISEL-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1489; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v0.h, v1.l, v1.h1490; GFX12-GISEL-TRUE16-NEXT: v_min_num_f16_e32 v0.l, v0.l, v0.h1491; GFX12-GISEL-TRUE16-NEXT: s_setpc_b64 s[30:31]1492;1493; GFX12-GISEL-FAKE16-LABEL: test_vector_reduce_fmin_v16half:1494; GFX12-GISEL-FAKE16: ; %bb.0: ; %entry1495; GFX12-GISEL-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01496; GFX12-GISEL-FAKE16-NEXT: s_wait_expcnt 0x01497; GFX12-GISEL-FAKE16-NEXT: s_wait_samplecnt 0x01498; GFX12-GISEL-FAKE16-NEXT: s_wait_bvhcnt 0x01499; GFX12-GISEL-FAKE16-NEXT: s_wait_kmcnt 0x01500; GFX12-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v8, 16, v01501; GFX12-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v9, 16, v11502; GFX12-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v10, 16, v21503; GFX12-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v11, 16, v31504; GFX12-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v12, 16, v41505; GFX12-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v13, 16, v51506; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v0, v0, v01507; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v8, v8, v81508; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v1, v1, v11509; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v9, v9, v91510; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v2, v2, v21511; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v10, v10, v101512; GFX12-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v14, 16, v61513; GFX12-GISEL-FAKE16-NEXT: v_lshrrev_b32_e32 v15, 16, v71514; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v0, v0, v81515; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v1, v1, v91516; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v2, v2, v101517; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v3, v3, v31518; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v8, v11, v111519; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v4, v4, v41520; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v9, v12, v121521; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v5, v5, v51522; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v10, v13, v131523; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v6, v6, v61524; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v11, v14, v141525; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v7, v7, v71526; GFX12-GISEL-FAKE16-NEXT: v_max_num_f16_e32 v12, v15, v151527; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v3, v3, v81528; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v4, v4, v91529; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v5, v5, v101530; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v6, v6, v111531; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v7, v7, v121532; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v0, v0, v11533; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v1, v2, v31534; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v2, v4, v51535; GFX12-GISEL-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)1536; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v3, v6, v71537; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v0, v0, v11538; GFX12-GISEL-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1539; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v1, v2, v31540; GFX12-GISEL-FAKE16-NEXT: v_min_num_f16_e32 v0, v0, v11541; GFX12-GISEL-FAKE16-NEXT: s_setpc_b64 s[30:31]1542entry:1543 %res = call half @llvm.vector.reduce.fmin.v16half(<16 x half> %v)1544 ret half %res1545}1546 1547define float @test_vector_reduce_fmin_v2float(<2 x float> %v) {1548; GFX7-SDAG-LABEL: test_vector_reduce_fmin_v2float:1549; GFX7-SDAG: ; %bb.0: ; %entry1550; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1551; GFX7-SDAG-NEXT: v_mul_f32_e32 v1, 1.0, v11552; GFX7-SDAG-NEXT: v_mul_f32_e32 v0, 1.0, v01553; GFX7-SDAG-NEXT: v_min_f32_e32 v0, v0, v11554; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]1555;1556; GFX7-GISEL-LABEL: test_vector_reduce_fmin_v2float:1557; GFX7-GISEL: ; %bb.0: ; %entry1558; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1559; GFX7-GISEL-NEXT: v_mul_f32_e32 v0, 1.0, v01560; GFX7-GISEL-NEXT: v_mul_f32_e32 v1, 1.0, v11561; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v11562; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]1563;1564; GFX8-SDAG-LABEL: test_vector_reduce_fmin_v2float:1565; GFX8-SDAG: ; %bb.0: ; %entry1566; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1567; GFX8-SDAG-NEXT: v_mul_f32_e32 v1, 1.0, v11568; GFX8-SDAG-NEXT: v_mul_f32_e32 v0, 1.0, v01569; GFX8-SDAG-NEXT: v_min_f32_e32 v0, v0, v11570; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]1571;1572; GFX8-GISEL-LABEL: test_vector_reduce_fmin_v2float:1573; GFX8-GISEL: ; %bb.0: ; %entry1574; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1575; GFX8-GISEL-NEXT: v_mul_f32_e32 v0, 1.0, v01576; GFX8-GISEL-NEXT: v_mul_f32_e32 v1, 1.0, v11577; GFX8-GISEL-NEXT: v_min_f32_e32 v0, v0, v11578; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]1579;1580; GFX9-SDAG-LABEL: test_vector_reduce_fmin_v2float:1581; GFX9-SDAG: ; %bb.0: ; %entry1582; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1583; GFX9-SDAG-NEXT: v_max_f32_e32 v1, v1, v11584; GFX9-SDAG-NEXT: v_max_f32_e32 v0, v0, v01585; GFX9-SDAG-NEXT: v_min_f32_e32 v0, v0, v11586; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]1587;1588; GFX9-GISEL-LABEL: test_vector_reduce_fmin_v2float:1589; GFX9-GISEL: ; %bb.0: ; %entry1590; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1591; GFX9-GISEL-NEXT: v_max_f32_e32 v0, v0, v01592; GFX9-GISEL-NEXT: v_max_f32_e32 v1, v1, v11593; GFX9-GISEL-NEXT: v_min_f32_e32 v0, v0, v11594; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]1595;1596; GFX10-SDAG-LABEL: test_vector_reduce_fmin_v2float:1597; GFX10-SDAG: ; %bb.0: ; %entry1598; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1599; GFX10-SDAG-NEXT: v_max_f32_e32 v1, v1, v11600; GFX10-SDAG-NEXT: v_max_f32_e32 v0, v0, v01601; GFX10-SDAG-NEXT: v_min_f32_e32 v0, v0, v11602; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]1603;1604; GFX10-GISEL-LABEL: test_vector_reduce_fmin_v2float:1605; GFX10-GISEL: ; %bb.0: ; %entry1606; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1607; GFX10-GISEL-NEXT: v_max_f32_e32 v0, v0, v01608; GFX10-GISEL-NEXT: v_max_f32_e32 v1, v1, v11609; GFX10-GISEL-NEXT: v_min_f32_e32 v0, v0, v11610; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]1611;1612; GFX11-SDAG-LABEL: test_vector_reduce_fmin_v2float:1613; GFX11-SDAG: ; %bb.0: ; %entry1614; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1615; GFX11-SDAG-NEXT: v_dual_max_f32 v1, v1, v1 :: v_dual_max_f32 v0, v0, v01616; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)1617; GFX11-SDAG-NEXT: v_min_f32_e32 v0, v0, v11618; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]1619;1620; GFX11-GISEL-LABEL: test_vector_reduce_fmin_v2float:1621; GFX11-GISEL: ; %bb.0: ; %entry1622; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1623; GFX11-GISEL-NEXT: v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v11624; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)1625; GFX11-GISEL-NEXT: v_min_f32_e32 v0, v0, v11626; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1627;1628; GFX12-SDAG-LABEL: test_vector_reduce_fmin_v2float:1629; GFX12-SDAG: ; %bb.0: ; %entry1630; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x01631; GFX12-SDAG-NEXT: s_wait_expcnt 0x01632; GFX12-SDAG-NEXT: s_wait_samplecnt 0x01633; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x01634; GFX12-SDAG-NEXT: s_wait_kmcnt 0x01635; GFX12-SDAG-NEXT: v_dual_max_num_f32 v1, v1, v1 :: v_dual_max_num_f32 v0, v0, v01636; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)1637; GFX12-SDAG-NEXT: v_min_num_f32_e32 v0, v0, v11638; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]1639;1640; GFX12-GISEL-LABEL: test_vector_reduce_fmin_v2float:1641; GFX12-GISEL: ; %bb.0: ; %entry1642; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01643; GFX12-GISEL-NEXT: s_wait_expcnt 0x01644; GFX12-GISEL-NEXT: s_wait_samplecnt 0x01645; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x01646; GFX12-GISEL-NEXT: s_wait_kmcnt 0x01647; GFX12-GISEL-NEXT: v_dual_max_num_f32 v0, v0, v0 :: v_dual_max_num_f32 v1, v1, v11648; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)1649; GFX12-GISEL-NEXT: v_min_num_f32_e32 v0, v0, v11650; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]1651entry:1652 %res = call float @llvm.vector.reduce.fmin.v2float(<2 x float> %v)1653 ret float %res1654}1655 1656define float @test_vector_reduce_fmin_v3float(<3 x float> %v) {1657; GFX7-SDAG-LABEL: test_vector_reduce_fmin_v3float:1658; GFX7-SDAG: ; %bb.0: ; %entry1659; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1660; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v1, v21661; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]1662;1663; GFX7-GISEL-LABEL: test_vector_reduce_fmin_v3float:1664; GFX7-GISEL: ; %bb.0: ; %entry1665; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1666; GFX7-GISEL-NEXT: v_mul_f32_e32 v0, 1.0, v01667; GFX7-GISEL-NEXT: v_mul_f32_e32 v1, 1.0, v11668; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v11669; GFX7-GISEL-NEXT: v_mul_f32_e32 v1, 1.0, v21670; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v11671; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]1672;1673; GFX8-SDAG-LABEL: test_vector_reduce_fmin_v3float:1674; GFX8-SDAG: ; %bb.0: ; %entry1675; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1676; GFX8-SDAG-NEXT: v_min3_f32 v0, v0, v1, v21677; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]1678;1679; GFX8-GISEL-LABEL: test_vector_reduce_fmin_v3float:1680; GFX8-GISEL: ; %bb.0: ; %entry1681; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1682; GFX8-GISEL-NEXT: v_mul_f32_e32 v0, 1.0, v01683; GFX8-GISEL-NEXT: v_mul_f32_e32 v1, 1.0, v11684; GFX8-GISEL-NEXT: v_min_f32_e32 v0, v0, v11685; GFX8-GISEL-NEXT: v_mul_f32_e32 v1, 1.0, v21686; GFX8-GISEL-NEXT: v_min_f32_e32 v0, v0, v11687; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]1688;1689; GFX9-SDAG-LABEL: test_vector_reduce_fmin_v3float:1690; GFX9-SDAG: ; %bb.0: ; %entry1691; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1692; GFX9-SDAG-NEXT: v_min3_f32 v0, v0, v1, v21693; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]1694;1695; GFX9-GISEL-LABEL: test_vector_reduce_fmin_v3float:1696; GFX9-GISEL: ; %bb.0: ; %entry1697; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1698; GFX9-GISEL-NEXT: v_max_f32_e32 v0, v0, v01699; GFX9-GISEL-NEXT: v_max_f32_e32 v1, v1, v11700; GFX9-GISEL-NEXT: v_min_f32_e32 v0, v0, v11701; GFX9-GISEL-NEXT: v_max_f32_e32 v1, v2, v21702; GFX9-GISEL-NEXT: v_min_f32_e32 v0, v0, v11703; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]1704;1705; GFX10-SDAG-LABEL: test_vector_reduce_fmin_v3float:1706; GFX10-SDAG: ; %bb.0: ; %entry1707; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1708; GFX10-SDAG-NEXT: v_min3_f32 v0, v0, v1, v21709; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]1710;1711; GFX10-GISEL-LABEL: test_vector_reduce_fmin_v3float:1712; GFX10-GISEL: ; %bb.0: ; %entry1713; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1714; GFX10-GISEL-NEXT: v_max_f32_e32 v0, v0, v01715; GFX10-GISEL-NEXT: v_max_f32_e32 v1, v1, v11716; GFX10-GISEL-NEXT: v_min_f32_e32 v0, v0, v11717; GFX10-GISEL-NEXT: v_max_f32_e32 v1, v2, v21718; GFX10-GISEL-NEXT: v_min_f32_e32 v0, v0, v11719; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]1720;1721; GFX11-SDAG-LABEL: test_vector_reduce_fmin_v3float:1722; GFX11-SDAG: ; %bb.0: ; %entry1723; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1724; GFX11-SDAG-NEXT: v_min3_f32 v0, v0, v1, v21725; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]1726;1727; GFX11-GISEL-LABEL: test_vector_reduce_fmin_v3float:1728; GFX11-GISEL: ; %bb.0: ; %entry1729; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1730; GFX11-GISEL-NEXT: v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v11731; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1732; GFX11-GISEL-NEXT: v_dual_min_f32 v0, v0, v1 :: v_dual_max_f32 v1, v2, v21733; GFX11-GISEL-NEXT: v_min_f32_e32 v0, v0, v11734; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1735;1736; GFX12-SDAG-LABEL: test_vector_reduce_fmin_v3float:1737; GFX12-SDAG: ; %bb.0: ; %entry1738; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x01739; GFX12-SDAG-NEXT: s_wait_expcnt 0x01740; GFX12-SDAG-NEXT: s_wait_samplecnt 0x01741; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x01742; GFX12-SDAG-NEXT: s_wait_kmcnt 0x01743; GFX12-SDAG-NEXT: v_min3_num_f32 v0, v0, v1, v21744; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]1745;1746; GFX12-GISEL-LABEL: test_vector_reduce_fmin_v3float:1747; GFX12-GISEL: ; %bb.0: ; %entry1748; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01749; GFX12-GISEL-NEXT: s_wait_expcnt 0x01750; GFX12-GISEL-NEXT: s_wait_samplecnt 0x01751; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x01752; GFX12-GISEL-NEXT: s_wait_kmcnt 0x01753; GFX12-GISEL-NEXT: v_dual_max_num_f32 v0, v0, v0 :: v_dual_max_num_f32 v1, v1, v11754; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1755; GFX12-GISEL-NEXT: v_dual_min_num_f32 v0, v0, v1 :: v_dual_max_num_f32 v1, v2, v21756; GFX12-GISEL-NEXT: v_min_num_f32_e32 v0, v0, v11757; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]1758entry:1759 %res = call float @llvm.vector.reduce.fmin.v3float(<3 x float> %v)1760 ret float %res1761}1762 1763define float @test_vector_reduce_fmin_v4float(<4 x float> %v) {1764; GFX7-SDAG-LABEL: test_vector_reduce_fmin_v4float:1765; GFX7-SDAG: ; %bb.0: ; %entry1766; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1767; GFX7-SDAG-NEXT: v_mul_f32_e32 v1, 1.0, v11768; GFX7-SDAG-NEXT: v_mul_f32_e32 v0, 1.0, v01769; GFX7-SDAG-NEXT: v_min_f32_e32 v0, v0, v11770; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v2, v31771; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]1772;1773; GFX7-GISEL-LABEL: test_vector_reduce_fmin_v4float:1774; GFX7-GISEL: ; %bb.0: ; %entry1775; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1776; GFX7-GISEL-NEXT: v_mul_f32_e32 v0, 1.0, v01777; GFX7-GISEL-NEXT: v_mul_f32_e32 v1, 1.0, v11778; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v11779; GFX7-GISEL-NEXT: v_mul_f32_e32 v1, 1.0, v21780; GFX7-GISEL-NEXT: v_mul_f32_e32 v2, 1.0, v31781; GFX7-GISEL-NEXT: v_min_f32_e32 v1, v1, v21782; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v11783; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]1784;1785; GFX8-SDAG-LABEL: test_vector_reduce_fmin_v4float:1786; GFX8-SDAG: ; %bb.0: ; %entry1787; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1788; GFX8-SDAG-NEXT: v_mul_f32_e32 v1, 1.0, v11789; GFX8-SDAG-NEXT: v_mul_f32_e32 v0, 1.0, v01790; GFX8-SDAG-NEXT: v_min_f32_e32 v0, v0, v11791; GFX8-SDAG-NEXT: v_min3_f32 v0, v0, v2, v31792; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]1793;1794; GFX8-GISEL-LABEL: test_vector_reduce_fmin_v4float:1795; GFX8-GISEL: ; %bb.0: ; %entry1796; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1797; GFX8-GISEL-NEXT: v_mul_f32_e32 v0, 1.0, v01798; GFX8-GISEL-NEXT: v_mul_f32_e32 v1, 1.0, v11799; GFX8-GISEL-NEXT: v_min_f32_e32 v0, v0, v11800; GFX8-GISEL-NEXT: v_mul_f32_e32 v1, 1.0, v21801; GFX8-GISEL-NEXT: v_mul_f32_e32 v2, 1.0, v31802; GFX8-GISEL-NEXT: v_min_f32_e32 v1, v1, v21803; GFX8-GISEL-NEXT: v_min_f32_e32 v0, v0, v11804; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]1805;1806; GFX9-SDAG-LABEL: test_vector_reduce_fmin_v4float:1807; GFX9-SDAG: ; %bb.0: ; %entry1808; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1809; GFX9-SDAG-NEXT: v_max_f32_e32 v1, v1, v11810; GFX9-SDAG-NEXT: v_max_f32_e32 v0, v0, v01811; GFX9-SDAG-NEXT: v_min_f32_e32 v0, v0, v11812; GFX9-SDAG-NEXT: v_min3_f32 v0, v0, v2, v31813; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]1814;1815; GFX9-GISEL-LABEL: test_vector_reduce_fmin_v4float:1816; GFX9-GISEL: ; %bb.0: ; %entry1817; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1818; GFX9-GISEL-NEXT: v_max_f32_e32 v0, v0, v01819; GFX9-GISEL-NEXT: v_max_f32_e32 v1, v1, v11820; GFX9-GISEL-NEXT: v_min_f32_e32 v0, v0, v11821; GFX9-GISEL-NEXT: v_max_f32_e32 v1, v2, v21822; GFX9-GISEL-NEXT: v_max_f32_e32 v2, v3, v31823; GFX9-GISEL-NEXT: v_min_f32_e32 v1, v1, v21824; GFX9-GISEL-NEXT: v_min_f32_e32 v0, v0, v11825; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]1826;1827; GFX10-SDAG-LABEL: test_vector_reduce_fmin_v4float:1828; GFX10-SDAG: ; %bb.0: ; %entry1829; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1830; GFX10-SDAG-NEXT: v_max_f32_e32 v1, v1, v11831; GFX10-SDAG-NEXT: v_max_f32_e32 v0, v0, v01832; GFX10-SDAG-NEXT: v_min_f32_e32 v0, v0, v11833; GFX10-SDAG-NEXT: v_min3_f32 v0, v0, v2, v31834; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]1835;1836; GFX10-GISEL-LABEL: test_vector_reduce_fmin_v4float:1837; GFX10-GISEL: ; %bb.0: ; %entry1838; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1839; GFX10-GISEL-NEXT: v_max_f32_e32 v0, v0, v01840; GFX10-GISEL-NEXT: v_max_f32_e32 v1, v1, v11841; GFX10-GISEL-NEXT: v_max_f32_e32 v2, v2, v21842; GFX10-GISEL-NEXT: v_max_f32_e32 v3, v3, v31843; GFX10-GISEL-NEXT: v_min_f32_e32 v0, v0, v11844; GFX10-GISEL-NEXT: v_min_f32_e32 v1, v2, v31845; GFX10-GISEL-NEXT: v_min_f32_e32 v0, v0, v11846; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]1847;1848; GFX11-SDAG-LABEL: test_vector_reduce_fmin_v4float:1849; GFX11-SDAG: ; %bb.0: ; %entry1850; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1851; GFX11-SDAG-NEXT: v_dual_max_f32 v1, v1, v1 :: v_dual_max_f32 v0, v0, v01852; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1853; GFX11-SDAG-NEXT: v_min_f32_e32 v0, v0, v11854; GFX11-SDAG-NEXT: v_min3_f32 v0, v0, v2, v31855; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]1856;1857; GFX11-GISEL-LABEL: test_vector_reduce_fmin_v4float:1858; GFX11-GISEL: ; %bb.0: ; %entry1859; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1860; GFX11-GISEL-NEXT: v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v11861; GFX11-GISEL-NEXT: v_dual_max_f32 v2, v2, v2 :: v_dual_max_f32 v3, v3, v31862; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1863; GFX11-GISEL-NEXT: v_dual_min_f32 v0, v0, v1 :: v_dual_min_f32 v1, v2, v31864; GFX11-GISEL-NEXT: v_min_f32_e32 v0, v0, v11865; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1866;1867; GFX12-SDAG-LABEL: test_vector_reduce_fmin_v4float:1868; GFX12-SDAG: ; %bb.0: ; %entry1869; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x01870; GFX12-SDAG-NEXT: s_wait_expcnt 0x01871; GFX12-SDAG-NEXT: s_wait_samplecnt 0x01872; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x01873; GFX12-SDAG-NEXT: s_wait_kmcnt 0x01874; GFX12-SDAG-NEXT: v_dual_max_num_f32 v1, v1, v1 :: v_dual_max_num_f32 v0, v0, v01875; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1876; GFX12-SDAG-NEXT: v_min_num_f32_e32 v0, v0, v11877; GFX12-SDAG-NEXT: v_min3_num_f32 v0, v0, v2, v31878; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]1879;1880; GFX12-GISEL-LABEL: test_vector_reduce_fmin_v4float:1881; GFX12-GISEL: ; %bb.0: ; %entry1882; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01883; GFX12-GISEL-NEXT: s_wait_expcnt 0x01884; GFX12-GISEL-NEXT: s_wait_samplecnt 0x01885; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x01886; GFX12-GISEL-NEXT: s_wait_kmcnt 0x01887; GFX12-GISEL-NEXT: v_dual_max_num_f32 v0, v0, v0 :: v_dual_max_num_f32 v1, v1, v11888; GFX12-GISEL-NEXT: v_dual_max_num_f32 v2, v2, v2 :: v_dual_max_num_f32 v3, v3, v31889; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1890; GFX12-GISEL-NEXT: v_dual_min_num_f32 v0, v0, v1 :: v_dual_min_num_f32 v1, v2, v31891; GFX12-GISEL-NEXT: v_min_num_f32_e32 v0, v0, v11892; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]1893entry:1894 %res = call float @llvm.vector.reduce.fmin.v4float(<4 x float> %v)1895 ret float %res1896}1897 1898define float @test_vector_reduce_fmin_v8float(<8 x float> %v) {1899; GFX7-SDAG-LABEL: test_vector_reduce_fmin_v8float:1900; GFX7-SDAG: ; %bb.0: ; %entry1901; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1902; GFX7-SDAG-NEXT: v_mul_f32_e32 v1, 1.0, v11903; GFX7-SDAG-NEXT: v_mul_f32_e32 v0, 1.0, v01904; GFX7-SDAG-NEXT: v_min_f32_e32 v0, v0, v11905; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v2, v31906; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v4, v51907; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v6, v71908; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]1909;1910; GFX7-GISEL-LABEL: test_vector_reduce_fmin_v8float:1911; GFX7-GISEL: ; %bb.0: ; %entry1912; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1913; GFX7-GISEL-NEXT: v_mul_f32_e32 v0, 1.0, v01914; GFX7-GISEL-NEXT: v_mul_f32_e32 v1, 1.0, v11915; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v11916; GFX7-GISEL-NEXT: v_mul_f32_e32 v1, 1.0, v21917; GFX7-GISEL-NEXT: v_mul_f32_e32 v2, 1.0, v31918; GFX7-GISEL-NEXT: v_min_f32_e32 v1, v1, v21919; GFX7-GISEL-NEXT: v_mul_f32_e32 v2, 1.0, v41920; GFX7-GISEL-NEXT: v_mul_f32_e32 v3, 1.0, v51921; GFX7-GISEL-NEXT: v_min_f32_e32 v2, v2, v31922; GFX7-GISEL-NEXT: v_mul_f32_e32 v3, 1.0, v61923; GFX7-GISEL-NEXT: v_mul_f32_e32 v4, 1.0, v71924; GFX7-GISEL-NEXT: v_min_f32_e32 v3, v3, v41925; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v11926; GFX7-GISEL-NEXT: v_min_f32_e32 v1, v2, v31927; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v11928; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]1929;1930; GFX8-SDAG-LABEL: test_vector_reduce_fmin_v8float:1931; GFX8-SDAG: ; %bb.0: ; %entry1932; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1933; GFX8-SDAG-NEXT: v_mul_f32_e32 v1, 1.0, v11934; GFX8-SDAG-NEXT: v_mul_f32_e32 v0, 1.0, v01935; GFX8-SDAG-NEXT: v_min_f32_e32 v0, v0, v11936; GFX8-SDAG-NEXT: v_min3_f32 v0, v0, v2, v31937; GFX8-SDAG-NEXT: v_min3_f32 v0, v0, v4, v51938; GFX8-SDAG-NEXT: v_min3_f32 v0, v0, v6, v71939; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]1940;1941; GFX8-GISEL-LABEL: test_vector_reduce_fmin_v8float:1942; GFX8-GISEL: ; %bb.0: ; %entry1943; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1944; GFX8-GISEL-NEXT: v_mul_f32_e32 v0, 1.0, v01945; GFX8-GISEL-NEXT: v_mul_f32_e32 v1, 1.0, v11946; GFX8-GISEL-NEXT: v_min_f32_e32 v0, v0, v11947; GFX8-GISEL-NEXT: v_mul_f32_e32 v1, 1.0, v21948; GFX8-GISEL-NEXT: v_mul_f32_e32 v2, 1.0, v31949; GFX8-GISEL-NEXT: v_min_f32_e32 v1, v1, v21950; GFX8-GISEL-NEXT: v_mul_f32_e32 v2, 1.0, v41951; GFX8-GISEL-NEXT: v_mul_f32_e32 v3, 1.0, v51952; GFX8-GISEL-NEXT: v_min_f32_e32 v2, v2, v31953; GFX8-GISEL-NEXT: v_mul_f32_e32 v3, 1.0, v61954; GFX8-GISEL-NEXT: v_mul_f32_e32 v4, 1.0, v71955; GFX8-GISEL-NEXT: v_min_f32_e32 v3, v3, v41956; GFX8-GISEL-NEXT: v_min_f32_e32 v0, v0, v11957; GFX8-GISEL-NEXT: v_min_f32_e32 v1, v2, v31958; GFX8-GISEL-NEXT: v_min_f32_e32 v0, v0, v11959; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]1960;1961; GFX9-SDAG-LABEL: test_vector_reduce_fmin_v8float:1962; GFX9-SDAG: ; %bb.0: ; %entry1963; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1964; GFX9-SDAG-NEXT: v_max_f32_e32 v1, v1, v11965; GFX9-SDAG-NEXT: v_max_f32_e32 v0, v0, v01966; GFX9-SDAG-NEXT: v_min_f32_e32 v0, v0, v11967; GFX9-SDAG-NEXT: v_min3_f32 v0, v0, v2, v31968; GFX9-SDAG-NEXT: v_min3_f32 v0, v0, v4, v51969; GFX9-SDAG-NEXT: v_min3_f32 v0, v0, v6, v71970; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]1971;1972; GFX9-GISEL-LABEL: test_vector_reduce_fmin_v8float:1973; GFX9-GISEL: ; %bb.0: ; %entry1974; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1975; GFX9-GISEL-NEXT: v_max_f32_e32 v0, v0, v01976; GFX9-GISEL-NEXT: v_max_f32_e32 v1, v1, v11977; GFX9-GISEL-NEXT: v_min_f32_e32 v0, v0, v11978; GFX9-GISEL-NEXT: v_max_f32_e32 v1, v2, v21979; GFX9-GISEL-NEXT: v_max_f32_e32 v2, v3, v31980; GFX9-GISEL-NEXT: v_min_f32_e32 v1, v1, v21981; GFX9-GISEL-NEXT: v_max_f32_e32 v2, v4, v41982; GFX9-GISEL-NEXT: v_max_f32_e32 v3, v5, v51983; GFX9-GISEL-NEXT: v_min_f32_e32 v2, v2, v31984; GFX9-GISEL-NEXT: v_max_f32_e32 v3, v6, v61985; GFX9-GISEL-NEXT: v_max_f32_e32 v4, v7, v71986; GFX9-GISEL-NEXT: v_min_f32_e32 v3, v3, v41987; GFX9-GISEL-NEXT: v_min_f32_e32 v0, v0, v11988; GFX9-GISEL-NEXT: v_min_f32_e32 v1, v2, v31989; GFX9-GISEL-NEXT: v_min_f32_e32 v0, v0, v11990; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]1991;1992; GFX10-SDAG-LABEL: test_vector_reduce_fmin_v8float:1993; GFX10-SDAG: ; %bb.0: ; %entry1994; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1995; GFX10-SDAG-NEXT: v_max_f32_e32 v1, v1, v11996; GFX10-SDAG-NEXT: v_max_f32_e32 v0, v0, v01997; GFX10-SDAG-NEXT: v_min_f32_e32 v0, v0, v11998; GFX10-SDAG-NEXT: v_min3_f32 v0, v0, v2, v31999; GFX10-SDAG-NEXT: v_min3_f32 v0, v0, v4, v52000; GFX10-SDAG-NEXT: v_min3_f32 v0, v0, v6, v72001; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]2002;2003; GFX10-GISEL-LABEL: test_vector_reduce_fmin_v8float:2004; GFX10-GISEL: ; %bb.0: ; %entry2005; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2006; GFX10-GISEL-NEXT: v_max_f32_e32 v0, v0, v02007; GFX10-GISEL-NEXT: v_max_f32_e32 v1, v1, v12008; GFX10-GISEL-NEXT: v_max_f32_e32 v2, v2, v22009; GFX10-GISEL-NEXT: v_max_f32_e32 v3, v3, v32010; GFX10-GISEL-NEXT: v_max_f32_e32 v4, v4, v42011; GFX10-GISEL-NEXT: v_max_f32_e32 v5, v5, v52012; GFX10-GISEL-NEXT: v_max_f32_e32 v6, v6, v62013; GFX10-GISEL-NEXT: v_max_f32_e32 v7, v7, v72014; GFX10-GISEL-NEXT: v_min_f32_e32 v0, v0, v12015; GFX10-GISEL-NEXT: v_min_f32_e32 v1, v2, v32016; GFX10-GISEL-NEXT: v_min_f32_e32 v2, v4, v52017; GFX10-GISEL-NEXT: v_min_f32_e32 v3, v6, v72018; GFX10-GISEL-NEXT: v_min_f32_e32 v0, v0, v12019; GFX10-GISEL-NEXT: v_min_f32_e32 v1, v2, v32020; GFX10-GISEL-NEXT: v_min_f32_e32 v0, v0, v12021; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]2022;2023; GFX11-SDAG-LABEL: test_vector_reduce_fmin_v8float:2024; GFX11-SDAG: ; %bb.0: ; %entry2025; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2026; GFX11-SDAG-NEXT: v_dual_max_f32 v1, v1, v1 :: v_dual_max_f32 v0, v0, v02027; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2028; GFX11-SDAG-NEXT: v_min_f32_e32 v0, v0, v12029; GFX11-SDAG-NEXT: v_min3_f32 v0, v0, v2, v32030; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2031; GFX11-SDAG-NEXT: v_min3_f32 v0, v0, v4, v52032; GFX11-SDAG-NEXT: v_min3_f32 v0, v0, v6, v72033; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]2034;2035; GFX11-GISEL-LABEL: test_vector_reduce_fmin_v8float:2036; GFX11-GISEL: ; %bb.0: ; %entry2037; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2038; GFX11-GISEL-NEXT: v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v12039; GFX11-GISEL-NEXT: v_dual_max_f32 v2, v2, v2 :: v_dual_max_f32 v3, v3, v32040; GFX11-GISEL-NEXT: v_dual_max_f32 v4, v4, v4 :: v_dual_max_f32 v5, v5, v52041; GFX11-GISEL-NEXT: v_dual_max_f32 v6, v6, v6 :: v_dual_max_f32 v7, v7, v72042; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)2043; GFX11-GISEL-NEXT: v_dual_min_f32 v0, v0, v1 :: v_dual_min_f32 v1, v2, v32044; GFX11-GISEL-NEXT: v_dual_min_f32 v2, v4, v5 :: v_dual_min_f32 v3, v6, v72045; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2046; GFX11-GISEL-NEXT: v_dual_min_f32 v0, v0, v1 :: v_dual_min_f32 v1, v2, v32047; GFX11-GISEL-NEXT: v_min_f32_e32 v0, v0, v12048; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2049;2050; GFX12-SDAG-LABEL: test_vector_reduce_fmin_v8float:2051; GFX12-SDAG: ; %bb.0: ; %entry2052; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x02053; GFX12-SDAG-NEXT: s_wait_expcnt 0x02054; GFX12-SDAG-NEXT: s_wait_samplecnt 0x02055; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x02056; GFX12-SDAG-NEXT: s_wait_kmcnt 0x02057; GFX12-SDAG-NEXT: v_dual_max_num_f32 v1, v1, v1 :: v_dual_max_num_f32 v0, v0, v02058; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2059; GFX12-SDAG-NEXT: v_min_num_f32_e32 v0, v0, v12060; GFX12-SDAG-NEXT: v_min3_num_f32 v0, v0, v2, v32061; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2062; GFX12-SDAG-NEXT: v_min3_num_f32 v0, v0, v4, v52063; GFX12-SDAG-NEXT: v_min3_num_f32 v0, v0, v6, v72064; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]2065;2066; GFX12-GISEL-LABEL: test_vector_reduce_fmin_v8float:2067; GFX12-GISEL: ; %bb.0: ; %entry2068; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02069; GFX12-GISEL-NEXT: s_wait_expcnt 0x02070; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02071; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02072; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02073; GFX12-GISEL-NEXT: v_dual_max_num_f32 v0, v0, v0 :: v_dual_max_num_f32 v1, v1, v12074; GFX12-GISEL-NEXT: v_dual_max_num_f32 v2, v2, v2 :: v_dual_max_num_f32 v3, v3, v32075; GFX12-GISEL-NEXT: v_dual_max_num_f32 v4, v4, v4 :: v_dual_max_num_f32 v5, v5, v52076; GFX12-GISEL-NEXT: v_dual_max_num_f32 v6, v6, v6 :: v_dual_max_num_f32 v7, v7, v72077; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)2078; GFX12-GISEL-NEXT: v_dual_min_num_f32 v0, v0, v1 :: v_dual_min_num_f32 v1, v2, v32079; GFX12-GISEL-NEXT: v_dual_min_num_f32 v2, v4, v5 :: v_dual_min_num_f32 v3, v6, v72080; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2081; GFX12-GISEL-NEXT: v_dual_min_num_f32 v0, v0, v1 :: v_dual_min_num_f32 v1, v2, v32082; GFX12-GISEL-NEXT: v_min_num_f32_e32 v0, v0, v12083; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2084entry:2085 %res = call float @llvm.vector.reduce.fmin.v8float(<8 x float> %v)2086 ret float %res2087}2088 2089define float @test_vector_reduce_fmin_v16float(<16 x float> %v) {2090; GFX7-SDAG-LABEL: test_vector_reduce_fmin_v16float:2091; GFX7-SDAG: ; %bb.0: ; %entry2092; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2093; GFX7-SDAG-NEXT: v_mul_f32_e32 v1, 1.0, v12094; GFX7-SDAG-NEXT: v_mul_f32_e32 v0, 1.0, v02095; GFX7-SDAG-NEXT: v_min_f32_e32 v0, v0, v12096; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v2, v32097; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v4, v52098; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v6, v72099; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v8, v92100; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v10, v112101; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v12, v132102; GFX7-SDAG-NEXT: v_min3_f32 v0, v0, v14, v152103; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]2104;2105; GFX7-GISEL-LABEL: test_vector_reduce_fmin_v16float:2106; GFX7-GISEL: ; %bb.0: ; %entry2107; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2108; GFX7-GISEL-NEXT: v_mul_f32_e32 v0, 1.0, v02109; GFX7-GISEL-NEXT: v_mul_f32_e32 v1, 1.0, v12110; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v12111; GFX7-GISEL-NEXT: v_mul_f32_e32 v1, 1.0, v22112; GFX7-GISEL-NEXT: v_mul_f32_e32 v2, 1.0, v32113; GFX7-GISEL-NEXT: v_min_f32_e32 v1, v1, v22114; GFX7-GISEL-NEXT: v_mul_f32_e32 v2, 1.0, v42115; GFX7-GISEL-NEXT: v_mul_f32_e32 v3, 1.0, v52116; GFX7-GISEL-NEXT: v_min_f32_e32 v2, v2, v32117; GFX7-GISEL-NEXT: v_mul_f32_e32 v3, 1.0, v62118; GFX7-GISEL-NEXT: v_mul_f32_e32 v4, 1.0, v72119; GFX7-GISEL-NEXT: v_min_f32_e32 v3, v3, v42120; GFX7-GISEL-NEXT: v_mul_f32_e32 v4, 1.0, v82121; GFX7-GISEL-NEXT: v_mul_f32_e32 v5, 1.0, v92122; GFX7-GISEL-NEXT: v_min_f32_e32 v4, v4, v52123; GFX7-GISEL-NEXT: v_mul_f32_e32 v5, 1.0, v102124; GFX7-GISEL-NEXT: v_mul_f32_e32 v6, 1.0, v112125; GFX7-GISEL-NEXT: v_min_f32_e32 v5, v5, v62126; GFX7-GISEL-NEXT: v_mul_f32_e32 v6, 1.0, v122127; GFX7-GISEL-NEXT: v_mul_f32_e32 v7, 1.0, v132128; GFX7-GISEL-NEXT: v_min_f32_e32 v6, v6, v72129; GFX7-GISEL-NEXT: v_mul_f32_e32 v7, 1.0, v142130; GFX7-GISEL-NEXT: v_mul_f32_e32 v8, 1.0, v152131; GFX7-GISEL-NEXT: v_min_f32_e32 v7, v7, v82132; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v12133; GFX7-GISEL-NEXT: v_min_f32_e32 v1, v2, v32134; GFX7-GISEL-NEXT: v_min_f32_e32 v2, v4, v52135; GFX7-GISEL-NEXT: v_min_f32_e32 v3, v6, v72136; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v12137; GFX7-GISEL-NEXT: v_min_f32_e32 v1, v2, v32138; GFX7-GISEL-NEXT: v_min_f32_e32 v0, v0, v12139; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]2140;2141; GFX8-SDAG-LABEL: test_vector_reduce_fmin_v16float:2142; GFX8-SDAG: ; %bb.0: ; %entry2143; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2144; GFX8-SDAG-NEXT: v_mul_f32_e32 v1, 1.0, v12145; GFX8-SDAG-NEXT: v_mul_f32_e32 v0, 1.0, v02146; GFX8-SDAG-NEXT: v_min_f32_e32 v0, v0, v12147; GFX8-SDAG-NEXT: v_min3_f32 v0, v0, v2, v32148; GFX8-SDAG-NEXT: v_min3_f32 v0, v0, v4, v52149; GFX8-SDAG-NEXT: v_min3_f32 v0, v0, v6, v72150; GFX8-SDAG-NEXT: v_min3_f32 v0, v0, v8, v92151; GFX8-SDAG-NEXT: v_min3_f32 v0, v0, v10, v112152; GFX8-SDAG-NEXT: v_min3_f32 v0, v0, v12, v132153; GFX8-SDAG-NEXT: v_min3_f32 v0, v0, v14, v152154; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]2155;2156; GFX8-GISEL-LABEL: test_vector_reduce_fmin_v16float:2157; GFX8-GISEL: ; %bb.0: ; %entry2158; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2159; GFX8-GISEL-NEXT: v_mul_f32_e32 v0, 1.0, v02160; GFX8-GISEL-NEXT: v_mul_f32_e32 v1, 1.0, v12161; GFX8-GISEL-NEXT: v_min_f32_e32 v0, v0, v12162; GFX8-GISEL-NEXT: v_mul_f32_e32 v1, 1.0, v22163; GFX8-GISEL-NEXT: v_mul_f32_e32 v2, 1.0, v32164; GFX8-GISEL-NEXT: v_min_f32_e32 v1, v1, v22165; GFX8-GISEL-NEXT: v_mul_f32_e32 v2, 1.0, v42166; GFX8-GISEL-NEXT: v_mul_f32_e32 v3, 1.0, v52167; GFX8-GISEL-NEXT: v_min_f32_e32 v2, v2, v32168; GFX8-GISEL-NEXT: v_mul_f32_e32 v3, 1.0, v62169; GFX8-GISEL-NEXT: v_mul_f32_e32 v4, 1.0, v72170; GFX8-GISEL-NEXT: v_min_f32_e32 v3, v3, v42171; GFX8-GISEL-NEXT: v_mul_f32_e32 v4, 1.0, v82172; GFX8-GISEL-NEXT: v_mul_f32_e32 v5, 1.0, v92173; GFX8-GISEL-NEXT: v_min_f32_e32 v4, v4, v52174; GFX8-GISEL-NEXT: v_mul_f32_e32 v5, 1.0, v102175; GFX8-GISEL-NEXT: v_mul_f32_e32 v6, 1.0, v112176; GFX8-GISEL-NEXT: v_min_f32_e32 v5, v5, v62177; GFX8-GISEL-NEXT: v_mul_f32_e32 v6, 1.0, v122178; GFX8-GISEL-NEXT: v_mul_f32_e32 v7, 1.0, v132179; GFX8-GISEL-NEXT: v_min_f32_e32 v6, v6, v72180; GFX8-GISEL-NEXT: v_mul_f32_e32 v7, 1.0, v142181; GFX8-GISEL-NEXT: v_mul_f32_e32 v8, 1.0, v152182; GFX8-GISEL-NEXT: v_min_f32_e32 v7, v7, v82183; GFX8-GISEL-NEXT: v_min_f32_e32 v0, v0, v12184; GFX8-GISEL-NEXT: v_min_f32_e32 v1, v2, v32185; GFX8-GISEL-NEXT: v_min_f32_e32 v2, v4, v52186; GFX8-GISEL-NEXT: v_min_f32_e32 v3, v6, v72187; GFX8-GISEL-NEXT: v_min_f32_e32 v0, v0, v12188; GFX8-GISEL-NEXT: v_min_f32_e32 v1, v2, v32189; GFX8-GISEL-NEXT: v_min_f32_e32 v0, v0, v12190; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]2191;2192; GFX9-SDAG-LABEL: test_vector_reduce_fmin_v16float:2193; GFX9-SDAG: ; %bb.0: ; %entry2194; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2195; GFX9-SDAG-NEXT: v_max_f32_e32 v1, v1, v12196; GFX9-SDAG-NEXT: v_max_f32_e32 v0, v0, v02197; GFX9-SDAG-NEXT: v_min_f32_e32 v0, v0, v12198; GFX9-SDAG-NEXT: v_min3_f32 v0, v0, v2, v32199; GFX9-SDAG-NEXT: v_min3_f32 v0, v0, v4, v52200; GFX9-SDAG-NEXT: v_min3_f32 v0, v0, v6, v72201; GFX9-SDAG-NEXT: v_min3_f32 v0, v0, v8, v92202; GFX9-SDAG-NEXT: v_min3_f32 v0, v0, v10, v112203; GFX9-SDAG-NEXT: v_min3_f32 v0, v0, v12, v132204; GFX9-SDAG-NEXT: v_min3_f32 v0, v0, v14, v152205; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]2206;2207; GFX9-GISEL-LABEL: test_vector_reduce_fmin_v16float:2208; GFX9-GISEL: ; %bb.0: ; %entry2209; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2210; GFX9-GISEL-NEXT: v_max_f32_e32 v0, v0, v02211; GFX9-GISEL-NEXT: v_max_f32_e32 v1, v1, v12212; GFX9-GISEL-NEXT: v_min_f32_e32 v0, v0, v12213; GFX9-GISEL-NEXT: v_max_f32_e32 v1, v2, v22214; GFX9-GISEL-NEXT: v_max_f32_e32 v2, v3, v32215; GFX9-GISEL-NEXT: v_min_f32_e32 v1, v1, v22216; GFX9-GISEL-NEXT: v_max_f32_e32 v2, v4, v42217; GFX9-GISEL-NEXT: v_max_f32_e32 v3, v5, v52218; GFX9-GISEL-NEXT: v_min_f32_e32 v2, v2, v32219; GFX9-GISEL-NEXT: v_max_f32_e32 v3, v6, v62220; GFX9-GISEL-NEXT: v_max_f32_e32 v4, v7, v72221; GFX9-GISEL-NEXT: v_min_f32_e32 v3, v3, v42222; GFX9-GISEL-NEXT: v_max_f32_e32 v4, v8, v82223; GFX9-GISEL-NEXT: v_max_f32_e32 v5, v9, v92224; GFX9-GISEL-NEXT: v_min_f32_e32 v4, v4, v52225; GFX9-GISEL-NEXT: v_max_f32_e32 v5, v10, v102226; GFX9-GISEL-NEXT: v_max_f32_e32 v6, v11, v112227; GFX9-GISEL-NEXT: v_min_f32_e32 v5, v5, v62228; GFX9-GISEL-NEXT: v_max_f32_e32 v6, v12, v122229; GFX9-GISEL-NEXT: v_max_f32_e32 v7, v13, v132230; GFX9-GISEL-NEXT: v_min_f32_e32 v6, v6, v72231; GFX9-GISEL-NEXT: v_max_f32_e32 v7, v14, v142232; GFX9-GISEL-NEXT: v_max_f32_e32 v8, v15, v152233; GFX9-GISEL-NEXT: v_min_f32_e32 v7, v7, v82234; GFX9-GISEL-NEXT: v_min_f32_e32 v0, v0, v12235; GFX9-GISEL-NEXT: v_min_f32_e32 v1, v2, v32236; GFX9-GISEL-NEXT: v_min_f32_e32 v2, v4, v52237; GFX9-GISEL-NEXT: v_min_f32_e32 v3, v6, v72238; GFX9-GISEL-NEXT: v_min_f32_e32 v0, v0, v12239; GFX9-GISEL-NEXT: v_min_f32_e32 v1, v2, v32240; GFX9-GISEL-NEXT: v_min_f32_e32 v0, v0, v12241; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2242;2243; GFX10-SDAG-LABEL: test_vector_reduce_fmin_v16float:2244; GFX10-SDAG: ; %bb.0: ; %entry2245; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2246; GFX10-SDAG-NEXT: v_max_f32_e32 v1, v1, v12247; GFX10-SDAG-NEXT: v_max_f32_e32 v0, v0, v02248; GFX10-SDAG-NEXT: v_min_f32_e32 v0, v0, v12249; GFX10-SDAG-NEXT: v_min3_f32 v0, v0, v2, v32250; GFX10-SDAG-NEXT: v_min3_f32 v0, v0, v4, v52251; GFX10-SDAG-NEXT: v_min3_f32 v0, v0, v6, v72252; GFX10-SDAG-NEXT: v_min3_f32 v0, v0, v8, v92253; GFX10-SDAG-NEXT: v_min3_f32 v0, v0, v10, v112254; GFX10-SDAG-NEXT: v_min3_f32 v0, v0, v12, v132255; GFX10-SDAG-NEXT: v_min3_f32 v0, v0, v14, v152256; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]2257;2258; GFX10-GISEL-LABEL: test_vector_reduce_fmin_v16float:2259; GFX10-GISEL: ; %bb.0: ; %entry2260; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2261; GFX10-GISEL-NEXT: v_max_f32_e32 v0, v0, v02262; GFX10-GISEL-NEXT: v_max_f32_e32 v1, v1, v12263; GFX10-GISEL-NEXT: v_max_f32_e32 v2, v2, v22264; GFX10-GISEL-NEXT: v_max_f32_e32 v3, v3, v32265; GFX10-GISEL-NEXT: v_max_f32_e32 v4, v4, v42266; GFX10-GISEL-NEXT: v_max_f32_e32 v5, v5, v52267; GFX10-GISEL-NEXT: v_min_f32_e32 v0, v0, v12268; GFX10-GISEL-NEXT: v_min_f32_e32 v1, v2, v32269; GFX10-GISEL-NEXT: v_max_f32_e32 v3, v6, v62270; GFX10-GISEL-NEXT: v_min_f32_e32 v2, v4, v52271; GFX10-GISEL-NEXT: v_max_f32_e32 v4, v7, v72272; GFX10-GISEL-NEXT: v_max_f32_e32 v5, v8, v82273; GFX10-GISEL-NEXT: v_max_f32_e32 v6, v9, v92274; GFX10-GISEL-NEXT: v_max_f32_e32 v7, v10, v102275; GFX10-GISEL-NEXT: v_max_f32_e32 v8, v11, v112276; GFX10-GISEL-NEXT: v_max_f32_e32 v9, v12, v122277; GFX10-GISEL-NEXT: v_max_f32_e32 v10, v13, v132278; GFX10-GISEL-NEXT: v_max_f32_e32 v11, v14, v142279; GFX10-GISEL-NEXT: v_max_f32_e32 v12, v15, v152280; GFX10-GISEL-NEXT: v_min_f32_e32 v3, v3, v42281; GFX10-GISEL-NEXT: v_min_f32_e32 v4, v5, v62282; GFX10-GISEL-NEXT: v_min_f32_e32 v5, v7, v82283; GFX10-GISEL-NEXT: v_min_f32_e32 v6, v9, v102284; GFX10-GISEL-NEXT: v_min_f32_e32 v7, v11, v122285; GFX10-GISEL-NEXT: v_min_f32_e32 v0, v0, v12286; GFX10-GISEL-NEXT: v_min_f32_e32 v1, v2, v32287; GFX10-GISEL-NEXT: v_min_f32_e32 v2, v4, v52288; GFX10-GISEL-NEXT: v_min_f32_e32 v3, v6, v72289; GFX10-GISEL-NEXT: v_min_f32_e32 v0, v0, v12290; GFX10-GISEL-NEXT: v_min_f32_e32 v1, v2, v32291; GFX10-GISEL-NEXT: v_min_f32_e32 v0, v0, v12292; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]2293;2294; GFX11-SDAG-LABEL: test_vector_reduce_fmin_v16float:2295; GFX11-SDAG: ; %bb.0: ; %entry2296; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2297; GFX11-SDAG-NEXT: v_dual_max_f32 v1, v1, v1 :: v_dual_max_f32 v0, v0, v02298; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2299; GFX11-SDAG-NEXT: v_min_f32_e32 v0, v0, v12300; GFX11-SDAG-NEXT: v_min3_f32 v0, v0, v2, v32301; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2302; GFX11-SDAG-NEXT: v_min3_f32 v0, v0, v4, v52303; GFX11-SDAG-NEXT: v_min3_f32 v0, v0, v6, v72304; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2305; GFX11-SDAG-NEXT: v_min3_f32 v0, v0, v8, v92306; GFX11-SDAG-NEXT: v_min3_f32 v0, v0, v10, v112307; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2308; GFX11-SDAG-NEXT: v_min3_f32 v0, v0, v12, v132309; GFX11-SDAG-NEXT: v_min3_f32 v0, v0, v14, v152310; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]2311;2312; GFX11-GISEL-LABEL: test_vector_reduce_fmin_v16float:2313; GFX11-GISEL: ; %bb.0: ; %entry2314; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2315; GFX11-GISEL-NEXT: v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v12316; GFX11-GISEL-NEXT: v_dual_max_f32 v2, v2, v2 :: v_dual_max_f32 v3, v3, v32317; GFX11-GISEL-NEXT: v_dual_max_f32 v4, v4, v4 :: v_dual_max_f32 v5, v5, v52318; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2319; GFX11-GISEL-NEXT: v_dual_min_f32 v0, v0, v1 :: v_dual_min_f32 v1, v2, v32320; GFX11-GISEL-NEXT: v_dual_max_f32 v3, v6, v6 :: v_dual_min_f32 v2, v4, v52321; GFX11-GISEL-NEXT: v_dual_max_f32 v4, v7, v7 :: v_dual_max_f32 v5, v8, v82322; GFX11-GISEL-NEXT: v_dual_max_f32 v6, v9, v9 :: v_dual_max_f32 v7, v10, v102323; GFX11-GISEL-NEXT: v_dual_max_f32 v8, v11, v11 :: v_dual_max_f32 v9, v12, v122324; GFX11-GISEL-NEXT: v_dual_max_f32 v10, v13, v13 :: v_dual_max_f32 v11, v14, v142325; GFX11-GISEL-NEXT: v_max_f32_e32 v12, v15, v152326; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)2327; GFX11-GISEL-NEXT: v_dual_min_f32 v3, v3, v4 :: v_dual_min_f32 v4, v5, v62328; GFX11-GISEL-NEXT: v_dual_min_f32 v5, v7, v8 :: v_dual_min_f32 v6, v9, v102329; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)2330; GFX11-GISEL-NEXT: v_dual_min_f32 v7, v11, v12 :: v_dual_min_f32 v0, v0, v12331; GFX11-GISEL-NEXT: v_dual_min_f32 v1, v2, v3 :: v_dual_min_f32 v2, v4, v52332; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2333; GFX11-GISEL-NEXT: v_dual_min_f32 v3, v6, v7 :: v_dual_min_f32 v0, v0, v12334; GFX11-GISEL-NEXT: v_min_f32_e32 v1, v2, v32335; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2336; GFX11-GISEL-NEXT: v_min_f32_e32 v0, v0, v12337; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2338;2339; GFX12-SDAG-LABEL: test_vector_reduce_fmin_v16float:2340; GFX12-SDAG: ; %bb.0: ; %entry2341; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x02342; GFX12-SDAG-NEXT: s_wait_expcnt 0x02343; GFX12-SDAG-NEXT: s_wait_samplecnt 0x02344; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x02345; GFX12-SDAG-NEXT: s_wait_kmcnt 0x02346; GFX12-SDAG-NEXT: v_dual_max_num_f32 v1, v1, v1 :: v_dual_max_num_f32 v0, v0, v02347; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2348; GFX12-SDAG-NEXT: v_min_num_f32_e32 v0, v0, v12349; GFX12-SDAG-NEXT: v_min3_num_f32 v0, v0, v2, v32350; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2351; GFX12-SDAG-NEXT: v_min3_num_f32 v0, v0, v4, v52352; GFX12-SDAG-NEXT: v_min3_num_f32 v0, v0, v6, v72353; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2354; GFX12-SDAG-NEXT: v_min3_num_f32 v0, v0, v8, v92355; GFX12-SDAG-NEXT: v_min3_num_f32 v0, v0, v10, v112356; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2357; GFX12-SDAG-NEXT: v_min3_num_f32 v0, v0, v12, v132358; GFX12-SDAG-NEXT: v_min3_num_f32 v0, v0, v14, v152359; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]2360;2361; GFX12-GISEL-LABEL: test_vector_reduce_fmin_v16float:2362; GFX12-GISEL: ; %bb.0: ; %entry2363; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02364; GFX12-GISEL-NEXT: s_wait_expcnt 0x02365; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02366; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02367; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02368; GFX12-GISEL-NEXT: v_dual_max_num_f32 v0, v0, v0 :: v_dual_max_num_f32 v1, v1, v12369; GFX12-GISEL-NEXT: v_dual_max_num_f32 v2, v2, v2 :: v_dual_max_num_f32 v3, v3, v32370; GFX12-GISEL-NEXT: v_dual_max_num_f32 v4, v4, v4 :: v_dual_max_num_f32 v5, v5, v52371; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2372; GFX12-GISEL-NEXT: v_dual_min_num_f32 v0, v0, v1 :: v_dual_min_num_f32 v1, v2, v32373; GFX12-GISEL-NEXT: v_dual_max_num_f32 v3, v6, v6 :: v_dual_min_num_f32 v2, v4, v52374; GFX12-GISEL-NEXT: v_dual_max_num_f32 v4, v7, v7 :: v_dual_max_num_f32 v5, v8, v82375; GFX12-GISEL-NEXT: v_dual_max_num_f32 v6, v9, v9 :: v_dual_max_num_f32 v7, v10, v102376; GFX12-GISEL-NEXT: v_dual_max_num_f32 v8, v11, v11 :: v_dual_max_num_f32 v9, v12, v122377; GFX12-GISEL-NEXT: v_dual_max_num_f32 v10, v13, v13 :: v_dual_max_num_f32 v11, v14, v142378; GFX12-GISEL-NEXT: v_max_num_f32_e32 v12, v15, v152379; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)2380; GFX12-GISEL-NEXT: v_dual_min_num_f32 v3, v3, v4 :: v_dual_min_num_f32 v4, v5, v62381; GFX12-GISEL-NEXT: v_dual_min_num_f32 v5, v7, v8 :: v_dual_min_num_f32 v6, v9, v102382; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)2383; GFX12-GISEL-NEXT: v_dual_min_num_f32 v7, v11, v12 :: v_dual_min_num_f32 v0, v0, v12384; GFX12-GISEL-NEXT: v_dual_min_num_f32 v1, v2, v3 :: v_dual_min_num_f32 v2, v4, v52385; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2386; GFX12-GISEL-NEXT: v_dual_min_num_f32 v3, v6, v7 :: v_dual_min_num_f32 v0, v0, v12387; GFX12-GISEL-NEXT: v_min_num_f32_e32 v1, v2, v32388; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2389; GFX12-GISEL-NEXT: v_min_num_f32_e32 v0, v0, v12390; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2391entry:2392 %res = call float @llvm.vector.reduce.fmin.v16float(<16 x float> %v)2393 ret float %res2394}2395 2396define double @test_vector_reduce_fmin_v2double(<2 x double> %v) {2397; GFX7-SDAG-LABEL: test_vector_reduce_fmin_v2double:2398; GFX7-SDAG: ; %bb.0: ; %entry2399; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2400; GFX7-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2401; GFX7-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2402; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2403; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]2404;2405; GFX7-GISEL-LABEL: test_vector_reduce_fmin_v2double:2406; GFX7-GISEL: ; %bb.0: ; %entry2407; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2408; GFX7-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2409; GFX7-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2410; GFX7-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2411; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]2412;2413; GFX8-SDAG-LABEL: test_vector_reduce_fmin_v2double:2414; GFX8-SDAG: ; %bb.0: ; %entry2415; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2416; GFX8-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2417; GFX8-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2418; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2419; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]2420;2421; GFX8-GISEL-LABEL: test_vector_reduce_fmin_v2double:2422; GFX8-GISEL: ; %bb.0: ; %entry2423; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2424; GFX8-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2425; GFX8-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2426; GFX8-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2427; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]2428;2429; GFX9-SDAG-LABEL: test_vector_reduce_fmin_v2double:2430; GFX9-SDAG: ; %bb.0: ; %entry2431; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2432; GFX9-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2433; GFX9-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2434; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2435; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]2436;2437; GFX9-GISEL-LABEL: test_vector_reduce_fmin_v2double:2438; GFX9-GISEL: ; %bb.0: ; %entry2439; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2440; GFX9-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2441; GFX9-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2442; GFX9-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2443; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2444;2445; GFX10-SDAG-LABEL: test_vector_reduce_fmin_v2double:2446; GFX10-SDAG: ; %bb.0: ; %entry2447; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2448; GFX10-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2449; GFX10-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2450; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2451; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]2452;2453; GFX10-GISEL-LABEL: test_vector_reduce_fmin_v2double:2454; GFX10-GISEL: ; %bb.0: ; %entry2455; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2456; GFX10-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2457; GFX10-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2458; GFX10-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2459; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]2460;2461; GFX11-SDAG-LABEL: test_vector_reduce_fmin_v2double:2462; GFX11-SDAG: ; %bb.0: ; %entry2463; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2464; GFX11-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2465; GFX11-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2466; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)2467; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2468; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]2469;2470; GFX11-GISEL-LABEL: test_vector_reduce_fmin_v2double:2471; GFX11-GISEL: ; %bb.0: ; %entry2472; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2473; GFX11-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2474; GFX11-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2475; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2476; GFX11-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2477; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2478;2479; GFX12-SDAG-LABEL: test_vector_reduce_fmin_v2double:2480; GFX12-SDAG: ; %bb.0: ; %entry2481; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x02482; GFX12-SDAG-NEXT: s_wait_expcnt 0x02483; GFX12-SDAG-NEXT: s_wait_samplecnt 0x02484; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x02485; GFX12-SDAG-NEXT: s_wait_kmcnt 0x02486; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[2:3], v[2:3], v[2:3]2487; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]2488; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)2489; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]2490; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]2491;2492; GFX12-GISEL-LABEL: test_vector_reduce_fmin_v2double:2493; GFX12-GISEL: ; %bb.0: ; %entry2494; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02495; GFX12-GISEL-NEXT: s_wait_expcnt 0x02496; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02497; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02498; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02499; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]2500; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[2:3], v[2:3], v[2:3]2501; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2502; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]2503; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2504entry:2505 %res = call double @llvm.vector.reduce.fmin.v2double(<2 x double> %v)2506 ret double %res2507}2508 2509define double @test_vector_reduce_fmin_v3double(<3 x double> %v) {2510; GFX7-SDAG-LABEL: test_vector_reduce_fmin_v3double:2511; GFX7-SDAG: ; %bb.0: ; %entry2512; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2513; GFX7-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2514; GFX7-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2515; GFX7-SDAG-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]2516; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2517; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2518; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]2519;2520; GFX7-GISEL-LABEL: test_vector_reduce_fmin_v3double:2521; GFX7-GISEL: ; %bb.0: ; %entry2522; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2523; GFX7-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2524; GFX7-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2525; GFX7-GISEL-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]2526; GFX7-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2527; GFX7-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2528; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]2529;2530; GFX8-SDAG-LABEL: test_vector_reduce_fmin_v3double:2531; GFX8-SDAG: ; %bb.0: ; %entry2532; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2533; GFX8-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2534; GFX8-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2535; GFX8-SDAG-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]2536; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2537; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2538; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]2539;2540; GFX8-GISEL-LABEL: test_vector_reduce_fmin_v3double:2541; GFX8-GISEL: ; %bb.0: ; %entry2542; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2543; GFX8-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2544; GFX8-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2545; GFX8-GISEL-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]2546; GFX8-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2547; GFX8-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2548; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]2549;2550; GFX9-SDAG-LABEL: test_vector_reduce_fmin_v3double:2551; GFX9-SDAG: ; %bb.0: ; %entry2552; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2553; GFX9-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2554; GFX9-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2555; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2556; GFX9-SDAG-NEXT: v_max_f64 v[2:3], v[4:5], v[4:5]2557; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2558; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]2559;2560; GFX9-GISEL-LABEL: test_vector_reduce_fmin_v3double:2561; GFX9-GISEL: ; %bb.0: ; %entry2562; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2563; GFX9-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2564; GFX9-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2565; GFX9-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2566; GFX9-GISEL-NEXT: v_max_f64 v[2:3], v[4:5], v[4:5]2567; GFX9-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2568; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2569;2570; GFX10-SDAG-LABEL: test_vector_reduce_fmin_v3double:2571; GFX10-SDAG: ; %bb.0: ; %entry2572; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2573; GFX10-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2574; GFX10-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2575; GFX10-SDAG-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]2576; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2577; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2578; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]2579;2580; GFX10-GISEL-LABEL: test_vector_reduce_fmin_v3double:2581; GFX10-GISEL: ; %bb.0: ; %entry2582; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2583; GFX10-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2584; GFX10-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2585; GFX10-GISEL-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]2586; GFX10-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2587; GFX10-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2588; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]2589;2590; GFX11-SDAG-LABEL: test_vector_reduce_fmin_v3double:2591; GFX11-SDAG: ; %bb.0: ; %entry2592; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2593; GFX11-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2594; GFX11-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2595; GFX11-SDAG-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]2596; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2597; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2598; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2599; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]2600;2601; GFX11-GISEL-LABEL: test_vector_reduce_fmin_v3double:2602; GFX11-GISEL: ; %bb.0: ; %entry2603; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2604; GFX11-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2605; GFX11-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2606; GFX11-GISEL-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]2607; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2608; GFX11-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2609; GFX11-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2610; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2611;2612; GFX12-SDAG-LABEL: test_vector_reduce_fmin_v3double:2613; GFX12-SDAG: ; %bb.0: ; %entry2614; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x02615; GFX12-SDAG-NEXT: s_wait_expcnt 0x02616; GFX12-SDAG-NEXT: s_wait_samplecnt 0x02617; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x02618; GFX12-SDAG-NEXT: s_wait_kmcnt 0x02619; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[2:3], v[2:3], v[2:3]2620; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]2621; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[4:5], v[4:5], v[4:5]2622; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2623; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]2624; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[4:5]2625; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]2626;2627; GFX12-GISEL-LABEL: test_vector_reduce_fmin_v3double:2628; GFX12-GISEL: ; %bb.0: ; %entry2629; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02630; GFX12-GISEL-NEXT: s_wait_expcnt 0x02631; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02632; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02633; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02634; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]2635; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[2:3], v[2:3], v[2:3]2636; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[4:5], v[4:5], v[4:5]2637; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2638; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]2639; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[4:5]2640; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2641entry:2642 %res = call double @llvm.vector.reduce.fmin.v3double(<3 x double> %v)2643 ret double %res2644}2645 2646define double @test_vector_reduce_fmin_v4double(<4 x double> %v) {2647; GFX7-SDAG-LABEL: test_vector_reduce_fmin_v4double:2648; GFX7-SDAG: ; %bb.0: ; %entry2649; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2650; GFX7-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2651; GFX7-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2652; GFX7-SDAG-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]2653; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2654; GFX7-SDAG-NEXT: v_max_f64 v[2:3], v[6:7], v[6:7]2655; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2656; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2657; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]2658;2659; GFX7-GISEL-LABEL: test_vector_reduce_fmin_v4double:2660; GFX7-GISEL: ; %bb.0: ; %entry2661; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2662; GFX7-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2663; GFX7-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2664; GFX7-GISEL-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]2665; GFX7-GISEL-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7]2666; GFX7-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2667; GFX7-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]2668; GFX7-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2669; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]2670;2671; GFX8-SDAG-LABEL: test_vector_reduce_fmin_v4double:2672; GFX8-SDAG: ; %bb.0: ; %entry2673; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2674; GFX8-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2675; GFX8-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2676; GFX8-SDAG-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]2677; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2678; GFX8-SDAG-NEXT: v_max_f64 v[2:3], v[6:7], v[6:7]2679; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2680; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2681; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]2682;2683; GFX8-GISEL-LABEL: test_vector_reduce_fmin_v4double:2684; GFX8-GISEL: ; %bb.0: ; %entry2685; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2686; GFX8-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2687; GFX8-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2688; GFX8-GISEL-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]2689; GFX8-GISEL-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7]2690; GFX8-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2691; GFX8-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]2692; GFX8-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2693; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]2694;2695; GFX9-SDAG-LABEL: test_vector_reduce_fmin_v4double:2696; GFX9-SDAG: ; %bb.0: ; %entry2697; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2698; GFX9-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2699; GFX9-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2700; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2701; GFX9-SDAG-NEXT: v_max_f64 v[2:3], v[4:5], v[4:5]2702; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2703; GFX9-SDAG-NEXT: v_max_f64 v[2:3], v[6:7], v[6:7]2704; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2705; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]2706;2707; GFX9-GISEL-LABEL: test_vector_reduce_fmin_v4double:2708; GFX9-GISEL: ; %bb.0: ; %entry2709; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2710; GFX9-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2711; GFX9-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2712; GFX9-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2713; GFX9-GISEL-NEXT: v_max_f64 v[2:3], v[4:5], v[4:5]2714; GFX9-GISEL-NEXT: v_max_f64 v[4:5], v[6:7], v[6:7]2715; GFX9-GISEL-NEXT: v_min_f64 v[2:3], v[2:3], v[4:5]2716; GFX9-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2717; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2718;2719; GFX10-SDAG-LABEL: test_vector_reduce_fmin_v4double:2720; GFX10-SDAG: ; %bb.0: ; %entry2721; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2722; GFX10-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2723; GFX10-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2724; GFX10-SDAG-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]2725; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2726; GFX10-SDAG-NEXT: v_max_f64 v[2:3], v[6:7], v[6:7]2727; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2728; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2729; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]2730;2731; GFX10-GISEL-LABEL: test_vector_reduce_fmin_v4double:2732; GFX10-GISEL: ; %bb.0: ; %entry2733; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2734; GFX10-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2735; GFX10-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2736; GFX10-GISEL-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]2737; GFX10-GISEL-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7]2738; GFX10-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2739; GFX10-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]2740; GFX10-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2741; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]2742;2743; GFX11-SDAG-LABEL: test_vector_reduce_fmin_v4double:2744; GFX11-SDAG: ; %bb.0: ; %entry2745; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2746; GFX11-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2747; GFX11-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2748; GFX11-SDAG-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]2749; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)2750; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2751; GFX11-SDAG-NEXT: v_max_f64 v[2:3], v[6:7], v[6:7]2752; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2753; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)2754; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2755; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]2756;2757; GFX11-GISEL-LABEL: test_vector_reduce_fmin_v4double:2758; GFX11-GISEL: ; %bb.0: ; %entry2759; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2760; GFX11-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2761; GFX11-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2762; GFX11-GISEL-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]2763; GFX11-GISEL-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7]2764; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)2765; GFX11-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2766; GFX11-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]2767; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2768; GFX11-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2769; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2770;2771; GFX12-SDAG-LABEL: test_vector_reduce_fmin_v4double:2772; GFX12-SDAG: ; %bb.0: ; %entry2773; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x02774; GFX12-SDAG-NEXT: s_wait_expcnt 0x02775; GFX12-SDAG-NEXT: s_wait_samplecnt 0x02776; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x02777; GFX12-SDAG-NEXT: s_wait_kmcnt 0x02778; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[2:3], v[2:3], v[2:3]2779; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]2780; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[4:5], v[4:5], v[4:5]2781; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)2782; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]2783; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[2:3], v[6:7], v[6:7]2784; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[4:5]2785; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)2786; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]2787; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]2788;2789; GFX12-GISEL-LABEL: test_vector_reduce_fmin_v4double:2790; GFX12-GISEL: ; %bb.0: ; %entry2791; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02792; GFX12-GISEL-NEXT: s_wait_expcnt 0x02793; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02794; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02795; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02796; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]2797; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[2:3], v[2:3], v[2:3]2798; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[4:5], v[4:5], v[4:5]2799; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[6:7], v[6:7], v[6:7]2800; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)2801; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]2802; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[2:3], v[4:5], v[6:7]2803; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2804; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]2805; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2806entry:2807 %res = call double @llvm.vector.reduce.fmin.v4double(<4 x double> %v)2808 ret double %res2809}2810 2811define double @test_vector_reduce_fmin_v8double(<8 x double> %v) {2812; GFX7-SDAG-LABEL: test_vector_reduce_fmin_v8double:2813; GFX7-SDAG: ; %bb.0: ; %entry2814; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2815; GFX7-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2816; GFX7-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2817; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2818; GFX7-SDAG-NEXT: v_max_f64 v[2:3], v[4:5], v[4:5]2819; GFX7-SDAG-NEXT: v_max_f64 v[4:5], v[6:7], v[6:7]2820; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2821; GFX7-SDAG-NEXT: v_max_f64 v[2:3], v[8:9], v[8:9]2822; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2823; GFX7-SDAG-NEXT: v_max_f64 v[4:5], v[10:11], v[10:11]2824; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2825; GFX7-SDAG-NEXT: v_max_f64 v[2:3], v[12:13], v[12:13]2826; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2827; GFX7-SDAG-NEXT: v_max_f64 v[4:5], v[14:15], v[14:15]2828; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2829; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2830; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]2831;2832; GFX7-GISEL-LABEL: test_vector_reduce_fmin_v8double:2833; GFX7-GISEL: ; %bb.0: ; %entry2834; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2835; GFX7-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2836; GFX7-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2837; GFX7-GISEL-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]2838; GFX7-GISEL-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7]2839; GFX7-GISEL-NEXT: v_max_f64 v[8:9], v[8:9], v[8:9]2840; GFX7-GISEL-NEXT: v_max_f64 v[10:11], v[10:11], v[10:11]2841; GFX7-GISEL-NEXT: v_max_f64 v[12:13], v[12:13], v[12:13]2842; GFX7-GISEL-NEXT: v_max_f64 v[14:15], v[14:15], v[14:15]2843; GFX7-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2844; GFX7-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]2845; GFX7-GISEL-NEXT: v_min_f64 v[4:5], v[8:9], v[10:11]2846; GFX7-GISEL-NEXT: v_min_f64 v[6:7], v[12:13], v[14:15]2847; GFX7-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2848; GFX7-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]2849; GFX7-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2850; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]2851;2852; GFX8-SDAG-LABEL: test_vector_reduce_fmin_v8double:2853; GFX8-SDAG: ; %bb.0: ; %entry2854; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2855; GFX8-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2856; GFX8-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2857; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2858; GFX8-SDAG-NEXT: v_max_f64 v[2:3], v[4:5], v[4:5]2859; GFX8-SDAG-NEXT: v_max_f64 v[4:5], v[6:7], v[6:7]2860; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2861; GFX8-SDAG-NEXT: v_max_f64 v[2:3], v[8:9], v[8:9]2862; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2863; GFX8-SDAG-NEXT: v_max_f64 v[4:5], v[10:11], v[10:11]2864; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2865; GFX8-SDAG-NEXT: v_max_f64 v[2:3], v[12:13], v[12:13]2866; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2867; GFX8-SDAG-NEXT: v_max_f64 v[4:5], v[14:15], v[14:15]2868; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2869; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2870; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]2871;2872; GFX8-GISEL-LABEL: test_vector_reduce_fmin_v8double:2873; GFX8-GISEL: ; %bb.0: ; %entry2874; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2875; GFX8-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2876; GFX8-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2877; GFX8-GISEL-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]2878; GFX8-GISEL-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7]2879; GFX8-GISEL-NEXT: v_max_f64 v[8:9], v[8:9], v[8:9]2880; GFX8-GISEL-NEXT: v_max_f64 v[10:11], v[10:11], v[10:11]2881; GFX8-GISEL-NEXT: v_max_f64 v[12:13], v[12:13], v[12:13]2882; GFX8-GISEL-NEXT: v_max_f64 v[14:15], v[14:15], v[14:15]2883; GFX8-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2884; GFX8-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]2885; GFX8-GISEL-NEXT: v_min_f64 v[4:5], v[8:9], v[10:11]2886; GFX8-GISEL-NEXT: v_min_f64 v[6:7], v[12:13], v[14:15]2887; GFX8-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2888; GFX8-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]2889; GFX8-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2890; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]2891;2892; GFX9-SDAG-LABEL: test_vector_reduce_fmin_v8double:2893; GFX9-SDAG: ; %bb.0: ; %entry2894; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2895; GFX9-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2896; GFX9-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2897; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2898; GFX9-SDAG-NEXT: v_max_f64 v[2:3], v[4:5], v[4:5]2899; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2900; GFX9-SDAG-NEXT: v_max_f64 v[2:3], v[6:7], v[6:7]2901; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2902; GFX9-SDAG-NEXT: v_max_f64 v[2:3], v[8:9], v[8:9]2903; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2904; GFX9-SDAG-NEXT: v_max_f64 v[2:3], v[10:11], v[10:11]2905; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2906; GFX9-SDAG-NEXT: v_max_f64 v[2:3], v[12:13], v[12:13]2907; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2908; GFX9-SDAG-NEXT: v_max_f64 v[2:3], v[14:15], v[14:15]2909; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2910; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]2911;2912; GFX9-GISEL-LABEL: test_vector_reduce_fmin_v8double:2913; GFX9-GISEL: ; %bb.0: ; %entry2914; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2915; GFX9-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2916; GFX9-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2917; GFX9-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2918; GFX9-GISEL-NEXT: v_max_f64 v[2:3], v[4:5], v[4:5]2919; GFX9-GISEL-NEXT: v_max_f64 v[4:5], v[6:7], v[6:7]2920; GFX9-GISEL-NEXT: v_min_f64 v[2:3], v[2:3], v[4:5]2921; GFX9-GISEL-NEXT: v_max_f64 v[4:5], v[8:9], v[8:9]2922; GFX9-GISEL-NEXT: v_max_f64 v[6:7], v[10:11], v[10:11]2923; GFX9-GISEL-NEXT: v_min_f64 v[4:5], v[4:5], v[6:7]2924; GFX9-GISEL-NEXT: v_max_f64 v[6:7], v[12:13], v[12:13]2925; GFX9-GISEL-NEXT: v_max_f64 v[8:9], v[14:15], v[14:15]2926; GFX9-GISEL-NEXT: v_min_f64 v[6:7], v[6:7], v[8:9]2927; GFX9-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2928; GFX9-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]2929; GFX9-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2930; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2931;2932; GFX10-SDAG-LABEL: test_vector_reduce_fmin_v8double:2933; GFX10-SDAG: ; %bb.0: ; %entry2934; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2935; GFX10-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2936; GFX10-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2937; GFX10-SDAG-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]2938; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2939; GFX10-SDAG-NEXT: v_max_f64 v[2:3], v[6:7], v[6:7]2940; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2941; GFX10-SDAG-NEXT: v_max_f64 v[4:5], v[8:9], v[8:9]2942; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2943; GFX10-SDAG-NEXT: v_max_f64 v[2:3], v[10:11], v[10:11]2944; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2945; GFX10-SDAG-NEXT: v_max_f64 v[4:5], v[12:13], v[12:13]2946; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2947; GFX10-SDAG-NEXT: v_max_f64 v[2:3], v[14:15], v[14:15]2948; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2949; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2950; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]2951;2952; GFX10-GISEL-LABEL: test_vector_reduce_fmin_v8double:2953; GFX10-GISEL: ; %bb.0: ; %entry2954; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2955; GFX10-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2956; GFX10-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2957; GFX10-GISEL-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]2958; GFX10-GISEL-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7]2959; GFX10-GISEL-NEXT: v_max_f64 v[8:9], v[8:9], v[8:9]2960; GFX10-GISEL-NEXT: v_max_f64 v[10:11], v[10:11], v[10:11]2961; GFX10-GISEL-NEXT: v_max_f64 v[12:13], v[12:13], v[12:13]2962; GFX10-GISEL-NEXT: v_max_f64 v[14:15], v[14:15], v[14:15]2963; GFX10-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2964; GFX10-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]2965; GFX10-GISEL-NEXT: v_min_f64 v[4:5], v[8:9], v[10:11]2966; GFX10-GISEL-NEXT: v_min_f64 v[6:7], v[12:13], v[14:15]2967; GFX10-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2968; GFX10-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]2969; GFX10-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2970; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]2971;2972; GFX11-SDAG-LABEL: test_vector_reduce_fmin_v8double:2973; GFX11-SDAG: ; %bb.0: ; %entry2974; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2975; GFX11-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]2976; GFX11-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]2977; GFX11-SDAG-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]2978; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)2979; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2980; GFX11-SDAG-NEXT: v_max_f64 v[2:3], v[6:7], v[6:7]2981; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2982; GFX11-SDAG-NEXT: v_max_f64 v[4:5], v[8:9], v[8:9]2983; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)2984; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2985; GFX11-SDAG-NEXT: v_max_f64 v[2:3], v[10:11], v[10:11]2986; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2987; GFX11-SDAG-NEXT: v_max_f64 v[4:5], v[12:13], v[12:13]2988; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)2989; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2990; GFX11-SDAG-NEXT: v_max_f64 v[2:3], v[14:15], v[14:15]2991; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]2992; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)2993; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]2994; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]2995;2996; GFX11-GISEL-LABEL: test_vector_reduce_fmin_v8double:2997; GFX11-GISEL: ; %bb.0: ; %entry2998; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2999; GFX11-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]3000; GFX11-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]3001; GFX11-GISEL-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]3002; GFX11-GISEL-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7]3003; GFX11-GISEL-NEXT: v_max_f64 v[8:9], v[8:9], v[8:9]3004; GFX11-GISEL-NEXT: v_max_f64 v[10:11], v[10:11], v[10:11]3005; GFX11-GISEL-NEXT: v_max_f64 v[12:13], v[12:13], v[12:13]3006; GFX11-GISEL-NEXT: v_max_f64 v[14:15], v[14:15], v[14:15]3007; GFX11-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3008; GFX11-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]3009; GFX11-GISEL-NEXT: v_min_f64 v[4:5], v[8:9], v[10:11]3010; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)3011; GFX11-GISEL-NEXT: v_min_f64 v[6:7], v[12:13], v[14:15]3012; GFX11-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3013; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3014; GFX11-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]3015; GFX11-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3016; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]3017;3018; GFX12-SDAG-LABEL: test_vector_reduce_fmin_v8double:3019; GFX12-SDAG: ; %bb.0: ; %entry3020; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x03021; GFX12-SDAG-NEXT: s_wait_expcnt 0x03022; GFX12-SDAG-NEXT: s_wait_samplecnt 0x03023; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x03024; GFX12-SDAG-NEXT: s_wait_kmcnt 0x03025; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[2:3], v[2:3], v[2:3]3026; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]3027; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[4:5], v[4:5], v[4:5]3028; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3029; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]3030; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[2:3], v[6:7], v[6:7]3031; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[4:5]3032; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[4:5], v[8:9], v[8:9]3033; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3034; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]3035; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[2:3], v[10:11], v[10:11]3036; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[4:5]3037; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[4:5], v[12:13], v[12:13]3038; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3039; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]3040; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[2:3], v[14:15], v[14:15]3041; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[4:5]3042; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)3043; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]3044; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]3045;3046; GFX12-GISEL-LABEL: test_vector_reduce_fmin_v8double:3047; GFX12-GISEL: ; %bb.0: ; %entry3048; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x03049; GFX12-GISEL-NEXT: s_wait_expcnt 0x03050; GFX12-GISEL-NEXT: s_wait_samplecnt 0x03051; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x03052; GFX12-GISEL-NEXT: s_wait_kmcnt 0x03053; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]3054; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[2:3], v[2:3], v[2:3]3055; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[4:5], v[4:5], v[4:5]3056; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[6:7], v[6:7], v[6:7]3057; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[8:9], v[8:9], v[8:9]3058; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[10:11], v[10:11], v[10:11]3059; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[12:13], v[12:13], v[12:13]3060; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[14:15], v[14:15], v[14:15]3061; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]3062; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[2:3], v[4:5], v[6:7]3063; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[4:5], v[8:9], v[10:11]3064; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)3065; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[6:7], v[12:13], v[14:15]3066; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]3067; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3068; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[2:3], v[4:5], v[6:7]3069; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]3070; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]3071entry:3072 %res = call double @llvm.vector.reduce.fmin.v8double(<8 x double> %v)3073 ret double %res3074}3075 3076define double @test_vector_reduce_fmin_v16double(<16 x double> %v) {3077; GFX7-SDAG-LABEL: test_vector_reduce_fmin_v16double:3078; GFX7-SDAG: ; %bb.0: ; %entry3079; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3080; GFX7-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]3081; GFX7-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]3082; GFX7-SDAG-NEXT: buffer_load_dword v31, off, s[0:3], s323083; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3084; GFX7-SDAG-NEXT: v_max_f64 v[2:3], v[4:5], v[4:5]3085; GFX7-SDAG-NEXT: v_max_f64 v[4:5], v[12:13], v[12:13]3086; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3087; GFX7-SDAG-NEXT: v_max_f64 v[2:3], v[6:7], v[6:7]3088; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3089; GFX7-SDAG-NEXT: v_max_f64 v[2:3], v[8:9], v[8:9]3090; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3091; GFX7-SDAG-NEXT: v_max_f64 v[2:3], v[10:11], v[10:11]3092; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3093; GFX7-SDAG-NEXT: v_max_f64 v[2:3], v[14:15], v[14:15]3094; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3095; GFX7-SDAG-NEXT: v_max_f64 v[4:5], v[16:17], v[16:17]3096; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3097; GFX7-SDAG-NEXT: v_max_f64 v[2:3], v[18:19], v[18:19]3098; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3099; GFX7-SDAG-NEXT: v_max_f64 v[4:5], v[20:21], v[20:21]3100; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3101; GFX7-SDAG-NEXT: v_max_f64 v[2:3], v[22:23], v[22:23]3102; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3103; GFX7-SDAG-NEXT: v_max_f64 v[4:5], v[24:25], v[24:25]3104; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3105; GFX7-SDAG-NEXT: v_max_f64 v[2:3], v[26:27], v[26:27]3106; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3107; GFX7-SDAG-NEXT: v_max_f64 v[4:5], v[28:29], v[28:29]3108; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3109; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)3110; GFX7-SDAG-NEXT: v_max_f64 v[2:3], v[30:31], v[30:31]3111; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3112; GFX7-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3113; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]3114;3115; GFX7-GISEL-LABEL: test_vector_reduce_fmin_v16double:3116; GFX7-GISEL: ; %bb.0: ; %entry3117; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3118; GFX7-GISEL-NEXT: buffer_load_dword v31, off, s[0:3], s323119; GFX7-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]3120; GFX7-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]3121; GFX7-GISEL-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]3122; GFX7-GISEL-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7]3123; GFX7-GISEL-NEXT: v_max_f64 v[8:9], v[8:9], v[8:9]3124; GFX7-GISEL-NEXT: v_max_f64 v[10:11], v[10:11], v[10:11]3125; GFX7-GISEL-NEXT: v_max_f64 v[12:13], v[12:13], v[12:13]3126; GFX7-GISEL-NEXT: v_max_f64 v[14:15], v[14:15], v[14:15]3127; GFX7-GISEL-NEXT: v_max_f64 v[16:17], v[16:17], v[16:17]3128; GFX7-GISEL-NEXT: v_max_f64 v[18:19], v[18:19], v[18:19]3129; GFX7-GISEL-NEXT: v_max_f64 v[20:21], v[20:21], v[20:21]3130; GFX7-GISEL-NEXT: v_max_f64 v[22:23], v[22:23], v[22:23]3131; GFX7-GISEL-NEXT: v_max_f64 v[24:25], v[24:25], v[24:25]3132; GFX7-GISEL-NEXT: v_max_f64 v[26:27], v[26:27], v[26:27]3133; GFX7-GISEL-NEXT: v_max_f64 v[28:29], v[28:29], v[28:29]3134; GFX7-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3135; GFX7-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]3136; GFX7-GISEL-NEXT: v_min_f64 v[4:5], v[8:9], v[10:11]3137; GFX7-GISEL-NEXT: v_min_f64 v[6:7], v[12:13], v[14:15]3138; GFX7-GISEL-NEXT: v_min_f64 v[8:9], v[16:17], v[18:19]3139; GFX7-GISEL-NEXT: v_min_f64 v[10:11], v[20:21], v[22:23]3140; GFX7-GISEL-NEXT: v_min_f64 v[12:13], v[24:25], v[26:27]3141; GFX7-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3142; GFX7-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]3143; GFX7-GISEL-NEXT: v_min_f64 v[4:5], v[8:9], v[10:11]3144; GFX7-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3145; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)3146; GFX7-GISEL-NEXT: v_max_f64 v[30:31], v[30:31], v[30:31]3147; GFX7-GISEL-NEXT: v_min_f64 v[14:15], v[28:29], v[30:31]3148; GFX7-GISEL-NEXT: v_min_f64 v[6:7], v[12:13], v[14:15]3149; GFX7-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]3150; GFX7-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3151; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]3152;3153; GFX8-SDAG-LABEL: test_vector_reduce_fmin_v16double:3154; GFX8-SDAG: ; %bb.0: ; %entry3155; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3156; GFX8-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]3157; GFX8-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]3158; GFX8-SDAG-NEXT: buffer_load_dword v31, off, s[0:3], s323159; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3160; GFX8-SDAG-NEXT: v_max_f64 v[2:3], v[4:5], v[4:5]3161; GFX8-SDAG-NEXT: v_max_f64 v[4:5], v[12:13], v[12:13]3162; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3163; GFX8-SDAG-NEXT: v_max_f64 v[2:3], v[6:7], v[6:7]3164; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3165; GFX8-SDAG-NEXT: v_max_f64 v[2:3], v[8:9], v[8:9]3166; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3167; GFX8-SDAG-NEXT: v_max_f64 v[2:3], v[10:11], v[10:11]3168; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3169; GFX8-SDAG-NEXT: v_max_f64 v[2:3], v[14:15], v[14:15]3170; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3171; GFX8-SDAG-NEXT: v_max_f64 v[4:5], v[16:17], v[16:17]3172; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3173; GFX8-SDAG-NEXT: v_max_f64 v[2:3], v[18:19], v[18:19]3174; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3175; GFX8-SDAG-NEXT: v_max_f64 v[4:5], v[20:21], v[20:21]3176; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3177; GFX8-SDAG-NEXT: v_max_f64 v[2:3], v[22:23], v[22:23]3178; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3179; GFX8-SDAG-NEXT: v_max_f64 v[4:5], v[24:25], v[24:25]3180; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3181; GFX8-SDAG-NEXT: v_max_f64 v[2:3], v[26:27], v[26:27]3182; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3183; GFX8-SDAG-NEXT: v_max_f64 v[4:5], v[28:29], v[28:29]3184; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3185; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0)3186; GFX8-SDAG-NEXT: v_max_f64 v[2:3], v[30:31], v[30:31]3187; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3188; GFX8-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3189; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]3190;3191; GFX8-GISEL-LABEL: test_vector_reduce_fmin_v16double:3192; GFX8-GISEL: ; %bb.0: ; %entry3193; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3194; GFX8-GISEL-NEXT: buffer_load_dword v31, off, s[0:3], s323195; GFX8-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]3196; GFX8-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]3197; GFX8-GISEL-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]3198; GFX8-GISEL-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7]3199; GFX8-GISEL-NEXT: v_max_f64 v[8:9], v[8:9], v[8:9]3200; GFX8-GISEL-NEXT: v_max_f64 v[10:11], v[10:11], v[10:11]3201; GFX8-GISEL-NEXT: v_max_f64 v[12:13], v[12:13], v[12:13]3202; GFX8-GISEL-NEXT: v_max_f64 v[14:15], v[14:15], v[14:15]3203; GFX8-GISEL-NEXT: v_max_f64 v[16:17], v[16:17], v[16:17]3204; GFX8-GISEL-NEXT: v_max_f64 v[18:19], v[18:19], v[18:19]3205; GFX8-GISEL-NEXT: v_max_f64 v[20:21], v[20:21], v[20:21]3206; GFX8-GISEL-NEXT: v_max_f64 v[22:23], v[22:23], v[22:23]3207; GFX8-GISEL-NEXT: v_max_f64 v[24:25], v[24:25], v[24:25]3208; GFX8-GISEL-NEXT: v_max_f64 v[26:27], v[26:27], v[26:27]3209; GFX8-GISEL-NEXT: v_max_f64 v[28:29], v[28:29], v[28:29]3210; GFX8-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3211; GFX8-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]3212; GFX8-GISEL-NEXT: v_min_f64 v[4:5], v[8:9], v[10:11]3213; GFX8-GISEL-NEXT: v_min_f64 v[6:7], v[12:13], v[14:15]3214; GFX8-GISEL-NEXT: v_min_f64 v[8:9], v[16:17], v[18:19]3215; GFX8-GISEL-NEXT: v_min_f64 v[10:11], v[20:21], v[22:23]3216; GFX8-GISEL-NEXT: v_min_f64 v[12:13], v[24:25], v[26:27]3217; GFX8-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3218; GFX8-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]3219; GFX8-GISEL-NEXT: v_min_f64 v[4:5], v[8:9], v[10:11]3220; GFX8-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3221; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)3222; GFX8-GISEL-NEXT: v_max_f64 v[30:31], v[30:31], v[30:31]3223; GFX8-GISEL-NEXT: v_min_f64 v[14:15], v[28:29], v[30:31]3224; GFX8-GISEL-NEXT: v_min_f64 v[6:7], v[12:13], v[14:15]3225; GFX8-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]3226; GFX8-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3227; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]3228;3229; GFX9-SDAG-LABEL: test_vector_reduce_fmin_v16double:3230; GFX9-SDAG: ; %bb.0: ; %entry3231; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3232; GFX9-SDAG-NEXT: scratch_load_dword v31, off, s323233; GFX9-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]3234; GFX9-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]3235; GFX9-SDAG-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]3236; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3237; GFX9-SDAG-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7]3238; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3239; GFX9-SDAG-NEXT: v_max_f64 v[8:9], v[8:9], v[8:9]3240; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[6:7]3241; GFX9-SDAG-NEXT: v_max_f64 v[10:11], v[10:11], v[10:11]3242; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[8:9]3243; GFX9-SDAG-NEXT: v_max_f64 v[12:13], v[12:13], v[12:13]3244; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[10:11]3245; GFX9-SDAG-NEXT: v_max_f64 v[14:15], v[14:15], v[14:15]3246; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[12:13]3247; GFX9-SDAG-NEXT: v_max_f64 v[16:17], v[16:17], v[16:17]3248; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[14:15]3249; GFX9-SDAG-NEXT: v_max_f64 v[18:19], v[18:19], v[18:19]3250; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[16:17]3251; GFX9-SDAG-NEXT: v_max_f64 v[20:21], v[20:21], v[20:21]3252; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[18:19]3253; GFX9-SDAG-NEXT: v_max_f64 v[22:23], v[22:23], v[22:23]3254; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[20:21]3255; GFX9-SDAG-NEXT: v_max_f64 v[24:25], v[24:25], v[24:25]3256; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[22:23]3257; GFX9-SDAG-NEXT: v_max_f64 v[26:27], v[26:27], v[26:27]3258; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[24:25]3259; GFX9-SDAG-NEXT: v_max_f64 v[28:29], v[28:29], v[28:29]3260; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[26:27]3261; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[28:29]3262; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0)3263; GFX9-SDAG-NEXT: v_max_f64 v[2:3], v[30:31], v[30:31]3264; GFX9-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3265; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]3266;3267; GFX9-GISEL-LABEL: test_vector_reduce_fmin_v16double:3268; GFX9-GISEL: ; %bb.0: ; %entry3269; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3270; GFX9-GISEL-NEXT: scratch_load_dword v31, off, s323271; GFX9-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]3272; GFX9-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]3273; GFX9-GISEL-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]3274; GFX9-GISEL-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7]3275; GFX9-GISEL-NEXT: v_max_f64 v[8:9], v[8:9], v[8:9]3276; GFX9-GISEL-NEXT: v_max_f64 v[10:11], v[10:11], v[10:11]3277; GFX9-GISEL-NEXT: v_max_f64 v[12:13], v[12:13], v[12:13]3278; GFX9-GISEL-NEXT: v_max_f64 v[14:15], v[14:15], v[14:15]3279; GFX9-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3280; GFX9-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]3281; GFX9-GISEL-NEXT: v_min_f64 v[4:5], v[8:9], v[10:11]3282; GFX9-GISEL-NEXT: v_min_f64 v[6:7], v[12:13], v[14:15]3283; GFX9-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3284; GFX9-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]3285; GFX9-GISEL-NEXT: v_max_f64 v[16:17], v[16:17], v[16:17]3286; GFX9-GISEL-NEXT: v_max_f64 v[18:19], v[18:19], v[18:19]3287; GFX9-GISEL-NEXT: v_max_f64 v[20:21], v[20:21], v[20:21]3288; GFX9-GISEL-NEXT: v_max_f64 v[22:23], v[22:23], v[22:23]3289; GFX9-GISEL-NEXT: v_max_f64 v[24:25], v[24:25], v[24:25]3290; GFX9-GISEL-NEXT: v_max_f64 v[26:27], v[26:27], v[26:27]3291; GFX9-GISEL-NEXT: v_max_f64 v[28:29], v[28:29], v[28:29]3292; GFX9-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3293; GFX9-GISEL-NEXT: v_min_f64 v[8:9], v[16:17], v[18:19]3294; GFX9-GISEL-NEXT: v_min_f64 v[10:11], v[20:21], v[22:23]3295; GFX9-GISEL-NEXT: v_min_f64 v[12:13], v[24:25], v[26:27]3296; GFX9-GISEL-NEXT: v_min_f64 v[4:5], v[8:9], v[10:11]3297; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)3298; GFX9-GISEL-NEXT: v_max_f64 v[2:3], v[30:31], v[30:31]3299; GFX9-GISEL-NEXT: v_min_f64 v[2:3], v[28:29], v[2:3]3300; GFX9-GISEL-NEXT: v_min_f64 v[2:3], v[12:13], v[2:3]3301; GFX9-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[2:3]3302; GFX9-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3303; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]3304;3305; GFX10-SDAG-LABEL: test_vector_reduce_fmin_v16double:3306; GFX10-SDAG: ; %bb.0: ; %entry3307; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3308; GFX10-SDAG-NEXT: buffer_load_dword v31, off, s[0:3], s323309; GFX10-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]3310; GFX10-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]3311; GFX10-SDAG-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]3312; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3313; GFX10-SDAG-NEXT: v_max_f64 v[2:3], v[6:7], v[6:7]3314; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3315; GFX10-SDAG-NEXT: v_max_f64 v[4:5], v[8:9], v[8:9]3316; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3317; GFX10-SDAG-NEXT: v_max_f64 v[2:3], v[10:11], v[10:11]3318; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3319; GFX10-SDAG-NEXT: v_max_f64 v[4:5], v[12:13], v[12:13]3320; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3321; GFX10-SDAG-NEXT: v_max_f64 v[2:3], v[14:15], v[14:15]3322; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3323; GFX10-SDAG-NEXT: v_max_f64 v[4:5], v[16:17], v[16:17]3324; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3325; GFX10-SDAG-NEXT: v_max_f64 v[2:3], v[18:19], v[18:19]3326; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3327; GFX10-SDAG-NEXT: v_max_f64 v[4:5], v[20:21], v[20:21]3328; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3329; GFX10-SDAG-NEXT: v_max_f64 v[2:3], v[22:23], v[22:23]3330; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3331; GFX10-SDAG-NEXT: v_max_f64 v[4:5], v[24:25], v[24:25]3332; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3333; GFX10-SDAG-NEXT: v_max_f64 v[2:3], v[26:27], v[26:27]3334; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3335; GFX10-SDAG-NEXT: v_max_f64 v[4:5], v[28:29], v[28:29]3336; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3337; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3338; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)3339; GFX10-SDAG-NEXT: v_max_f64 v[2:3], v[30:31], v[30:31]3340; GFX10-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3341; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]3342;3343; GFX10-GISEL-LABEL: test_vector_reduce_fmin_v16double:3344; GFX10-GISEL: ; %bb.0: ; %entry3345; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3346; GFX10-GISEL-NEXT: buffer_load_dword v31, off, s[0:3], s323347; GFX10-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]3348; GFX10-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]3349; GFX10-GISEL-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]3350; GFX10-GISEL-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7]3351; GFX10-GISEL-NEXT: v_max_f64 v[8:9], v[8:9], v[8:9]3352; GFX10-GISEL-NEXT: v_max_f64 v[10:11], v[10:11], v[10:11]3353; GFX10-GISEL-NEXT: v_max_f64 v[12:13], v[12:13], v[12:13]3354; GFX10-GISEL-NEXT: v_max_f64 v[14:15], v[14:15], v[14:15]3355; GFX10-GISEL-NEXT: v_max_f64 v[16:17], v[16:17], v[16:17]3356; GFX10-GISEL-NEXT: v_max_f64 v[18:19], v[18:19], v[18:19]3357; GFX10-GISEL-NEXT: v_max_f64 v[20:21], v[20:21], v[20:21]3358; GFX10-GISEL-NEXT: v_max_f64 v[22:23], v[22:23], v[22:23]3359; GFX10-GISEL-NEXT: v_max_f64 v[24:25], v[24:25], v[24:25]3360; GFX10-GISEL-NEXT: v_max_f64 v[26:27], v[26:27], v[26:27]3361; GFX10-GISEL-NEXT: v_max_f64 v[28:29], v[28:29], v[28:29]3362; GFX10-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3363; GFX10-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]3364; GFX10-GISEL-NEXT: v_min_f64 v[4:5], v[8:9], v[10:11]3365; GFX10-GISEL-NEXT: v_min_f64 v[6:7], v[12:13], v[14:15]3366; GFX10-GISEL-NEXT: v_min_f64 v[8:9], v[16:17], v[18:19]3367; GFX10-GISEL-NEXT: v_min_f64 v[10:11], v[20:21], v[22:23]3368; GFX10-GISEL-NEXT: v_min_f64 v[12:13], v[24:25], v[26:27]3369; GFX10-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3370; GFX10-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]3371; GFX10-GISEL-NEXT: v_min_f64 v[4:5], v[8:9], v[10:11]3372; GFX10-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3373; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)3374; GFX10-GISEL-NEXT: v_max_f64 v[30:31], v[30:31], v[30:31]3375; GFX10-GISEL-NEXT: v_min_f64 v[14:15], v[28:29], v[30:31]3376; GFX10-GISEL-NEXT: v_min_f64 v[6:7], v[12:13], v[14:15]3377; GFX10-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]3378; GFX10-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3379; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]3380;3381; GFX11-SDAG-LABEL: test_vector_reduce_fmin_v16double:3382; GFX11-SDAG: ; %bb.0: ; %entry3383; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3384; GFX11-SDAG-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]3385; GFX11-SDAG-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]3386; GFX11-SDAG-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]3387; GFX11-SDAG-NEXT: scratch_load_b32 v31, off, s323388; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3389; GFX11-SDAG-NEXT: v_max_f64 v[2:3], v[6:7], v[6:7]3390; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3391; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3392; GFX11-SDAG-NEXT: v_max_f64 v[4:5], v[8:9], v[8:9]3393; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3394; GFX11-SDAG-NEXT: v_max_f64 v[2:3], v[10:11], v[10:11]3395; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3396; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3397; GFX11-SDAG-NEXT: v_max_f64 v[4:5], v[12:13], v[12:13]3398; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3399; GFX11-SDAG-NEXT: v_max_f64 v[2:3], v[14:15], v[14:15]3400; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3401; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3402; GFX11-SDAG-NEXT: v_max_f64 v[4:5], v[16:17], v[16:17]3403; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3404; GFX11-SDAG-NEXT: v_max_f64 v[2:3], v[18:19], v[18:19]3405; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3406; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3407; GFX11-SDAG-NEXT: v_max_f64 v[4:5], v[20:21], v[20:21]3408; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3409; GFX11-SDAG-NEXT: v_max_f64 v[2:3], v[22:23], v[22:23]3410; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3411; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3412; GFX11-SDAG-NEXT: v_max_f64 v[4:5], v[24:25], v[24:25]3413; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3414; GFX11-SDAG-NEXT: v_max_f64 v[2:3], v[26:27], v[26:27]3415; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3416; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3417; GFX11-SDAG-NEXT: v_max_f64 v[4:5], v[28:29], v[28:29]3418; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3419; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)3420; GFX11-SDAG-NEXT: v_max_f64 v[2:3], v[30:31], v[30:31]3421; GFX11-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3422; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5]3423; GFX11-SDAG-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3424; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]3425;3426; GFX11-GISEL-LABEL: test_vector_reduce_fmin_v16double:3427; GFX11-GISEL: ; %bb.0: ; %entry3428; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3429; GFX11-GISEL-NEXT: scratch_load_b32 v31, off, s323430; GFX11-GISEL-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1]3431; GFX11-GISEL-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3]3432; GFX11-GISEL-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5]3433; GFX11-GISEL-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7]3434; GFX11-GISEL-NEXT: v_max_f64 v[8:9], v[8:9], v[8:9]3435; GFX11-GISEL-NEXT: v_max_f64 v[10:11], v[10:11], v[10:11]3436; GFX11-GISEL-NEXT: v_max_f64 v[12:13], v[12:13], v[12:13]3437; GFX11-GISEL-NEXT: v_max_f64 v[14:15], v[14:15], v[14:15]3438; GFX11-GISEL-NEXT: v_max_f64 v[16:17], v[16:17], v[16:17]3439; GFX11-GISEL-NEXT: v_max_f64 v[18:19], v[18:19], v[18:19]3440; GFX11-GISEL-NEXT: v_max_f64 v[20:21], v[20:21], v[20:21]3441; GFX11-GISEL-NEXT: v_max_f64 v[22:23], v[22:23], v[22:23]3442; GFX11-GISEL-NEXT: v_max_f64 v[24:25], v[24:25], v[24:25]3443; GFX11-GISEL-NEXT: v_max_f64 v[26:27], v[26:27], v[26:27]3444; GFX11-GISEL-NEXT: v_max_f64 v[28:29], v[28:29], v[28:29]3445; GFX11-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3446; GFX11-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]3447; GFX11-GISEL-NEXT: v_min_f64 v[4:5], v[8:9], v[10:11]3448; GFX11-GISEL-NEXT: v_min_f64 v[6:7], v[12:13], v[14:15]3449; GFX11-GISEL-NEXT: v_min_f64 v[8:9], v[16:17], v[18:19]3450; GFX11-GISEL-NEXT: v_min_f64 v[10:11], v[20:21], v[22:23]3451; GFX11-GISEL-NEXT: v_min_f64 v[12:13], v[24:25], v[26:27]3452; GFX11-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3453; GFX11-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]3454; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)3455; GFX11-GISEL-NEXT: v_min_f64 v[4:5], v[8:9], v[10:11]3456; GFX11-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3457; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)3458; GFX11-GISEL-NEXT: v_max_f64 v[30:31], v[30:31], v[30:31]3459; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3460; GFX11-GISEL-NEXT: v_min_f64 v[14:15], v[28:29], v[30:31]3461; GFX11-GISEL-NEXT: v_min_f64 v[6:7], v[12:13], v[14:15]3462; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3463; GFX11-GISEL-NEXT: v_min_f64 v[2:3], v[4:5], v[6:7]3464; GFX11-GISEL-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3]3465; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]3466;3467; GFX12-SDAG-LABEL: test_vector_reduce_fmin_v16double:3468; GFX12-SDAG: ; %bb.0: ; %entry3469; GFX12-SDAG-NEXT: s_wait_loadcnt_dscnt 0x03470; GFX12-SDAG-NEXT: s_wait_expcnt 0x03471; GFX12-SDAG-NEXT: s_wait_samplecnt 0x03472; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x03473; GFX12-SDAG-NEXT: s_wait_kmcnt 0x03474; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[2:3], v[2:3], v[2:3]3475; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]3476; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[4:5], v[4:5], v[4:5]3477; GFX12-SDAG-NEXT: scratch_load_b32 v31, off, s323478; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]3479; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[2:3], v[6:7], v[6:7]3480; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3481; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[4:5]3482; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[4:5], v[8:9], v[8:9]3483; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]3484; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[2:3], v[10:11], v[10:11]3485; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3486; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[4:5]3487; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[4:5], v[12:13], v[12:13]3488; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]3489; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[2:3], v[14:15], v[14:15]3490; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3491; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[4:5]3492; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[4:5], v[16:17], v[16:17]3493; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]3494; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[2:3], v[18:19], v[18:19]3495; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3496; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[4:5]3497; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[4:5], v[20:21], v[20:21]3498; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]3499; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[2:3], v[22:23], v[22:23]3500; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3501; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[4:5]3502; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[4:5], v[24:25], v[24:25]3503; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]3504; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[2:3], v[26:27], v[26:27]3505; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)3506; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[4:5]3507; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[4:5], v[28:29], v[28:29]3508; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]3509; GFX12-SDAG-NEXT: s_wait_loadcnt 0x03510; GFX12-SDAG-NEXT: v_max_num_f64_e32 v[2:3], v[30:31], v[30:31]3511; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3512; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[4:5]3513; GFX12-SDAG-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]3514; GFX12-SDAG-NEXT: s_setpc_b64 s[30:31]3515;3516; GFX12-GISEL-LABEL: test_vector_reduce_fmin_v16double:3517; GFX12-GISEL: ; %bb.0: ; %entry3518; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x03519; GFX12-GISEL-NEXT: s_wait_expcnt 0x03520; GFX12-GISEL-NEXT: s_wait_samplecnt 0x03521; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x03522; GFX12-GISEL-NEXT: s_wait_kmcnt 0x03523; GFX12-GISEL-NEXT: scratch_load_b32 v31, off, s323524; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]3525; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[2:3], v[2:3], v[2:3]3526; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[4:5], v[4:5], v[4:5]3527; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[6:7], v[6:7], v[6:7]3528; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[8:9], v[8:9], v[8:9]3529; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[10:11], v[10:11], v[10:11]3530; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[12:13], v[12:13], v[12:13]3531; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[14:15], v[14:15], v[14:15]3532; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[16:17], v[16:17], v[16:17]3533; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[18:19], v[18:19], v[18:19]3534; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[20:21], v[20:21], v[20:21]3535; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[22:23], v[22:23], v[22:23]3536; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[24:25], v[24:25], v[24:25]3537; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[26:27], v[26:27], v[26:27]3538; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[28:29], v[28:29], v[28:29]3539; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]3540; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[2:3], v[4:5], v[6:7]3541; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[4:5], v[8:9], v[10:11]3542; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[6:7], v[12:13], v[14:15]3543; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[8:9], v[16:17], v[18:19]3544; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[10:11], v[20:21], v[22:23]3545; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[12:13], v[24:25], v[26:27]3546; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]3547; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[2:3], v[4:5], v[6:7]3548; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)3549; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[4:5], v[8:9], v[10:11]3550; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]3551; GFX12-GISEL-NEXT: s_wait_loadcnt 0x03552; GFX12-GISEL-NEXT: v_max_num_f64_e32 v[30:31], v[30:31], v[30:31]3553; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3554; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[14:15], v[28:29], v[30:31]3555; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[6:7], v[12:13], v[14:15]3556; GFX12-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3557; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[2:3], v[4:5], v[6:7]3558; GFX12-GISEL-NEXT: v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]3559; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]3560entry:3561 %res = call double @llvm.vector.reduce.fmin.v16double(<16 x double> %v)3562 ret double %res3563}3564 3565declare half @llvm.vector.reduce.fmin.v2half(<2 x half>)3566declare half @llvm.vector.reduce.fmin.v3half(<3 x half>)3567declare half @llvm.vector.reduce.fmin.v4half(<4 x half>)3568declare half @llvm.vector.reduce.fmin.v8half(<8 x half>)3569declare half @llvm.vector.reduce.fmin.v16half(<16 x half>)3570declare float @llvm.vector.reduce.fmin.v2float(<2 x float>)3571declare float @llvm.vector.reduce.fmin.v3float(<3 x float>)3572declare float @llvm.vector.reduce.fmin.v4float(<4 x float>)3573declare float @llvm.vector.reduce.fmin.v8float(<8 x float>)3574declare float @llvm.vector.reduce.fmin.v16float(<16 x float>)3575declare double @llvm.vector.reduce.fmin.v2double(<2 x double>)3576declare double @llvm.vector.reduce.fmin.v3double(<3 x double>)3577declare double @llvm.vector.reduce.fmin.v4double(<4 x double>)3578declare double @llvm.vector.reduce.fmin.v8double(<8 x double>)3579declare double @llvm.vector.reduce.fmin.v16double(<16 x double>)3580;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:3581; GFX10: {{.*}}3582; GFX11: {{.*}}3583; GFX12: {{.*}}3584; GFX7: {{.*}}3585; GFX8: {{.*}}3586; GFX9: {{.*}}3587