@@ -1130,7 +1130,6 @@ define i1 @test70_nnan(float %arg1, float %arg2, float %arg3) {
11301130; GCN-LABEL: test70_nnan: 
11311131; GCN:       ; %bb.0: 
11321132; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
1133- ; GCN-NEXT:    v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1 
11341133; GCN-NEXT:    v_min_f32_e32 v0, v0, v1 
11351134; GCN-NEXT:    v_cmp_lt_f32_e32 vcc_lo, v0, v2 
11361135; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo 
@@ -1200,7 +1199,6 @@ define i1 @test73_nnan(float %arg1, float %arg2, float %arg3) {
12001199; GCN-LABEL: test73_nnan: 
12011200; GCN:       ; %bb.0: 
12021201; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
1203- ; GCN-NEXT:    v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1 
12041202; GCN-NEXT:    v_max_f32_e32 v0, v0, v1 
12051203; GCN-NEXT:    v_cmp_ge_f32_e32 vcc_lo, v0, v2 
12061204; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo 
@@ -1270,7 +1268,6 @@ define i1 @test75_nnan(float %arg1, float %arg2, float %arg3) {
12701268; GCN-LABEL: test75_nnan: 
12711269; GCN:       ; %bb.0: 
12721270; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
1273- ; GCN-NEXT:    v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1 
12741271; GCN-NEXT:    v_min_f32_e32 v0, v0, v1 
12751272; GCN-NEXT:    v_cmp_ge_f32_e32 vcc_lo, v0, v2 
12761273; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo 
@@ -1304,7 +1301,6 @@ define i1 @test76_nnan(float %arg1, float %arg2, float %arg3) {
13041301; GCN-LABEL: test76_nnan: 
13051302; GCN:       ; %bb.0: 
13061303; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
1307- ; GCN-NEXT:    v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1 
13081304; GCN-NEXT:    v_max_f32_e32 v0, v0, v1 
13091305; GCN-NEXT:    v_cmp_le_f32_e32 vcc_lo, v0, v2 
13101306; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo 
@@ -1516,18 +1512,14 @@ define i1 @test84_nnan(half %arg1, half %arg2, half %arg3) {
15161512; GFX11-TRUE16-LABEL: test84_nnan: 
15171513; GFX11-TRUE16:       ; %bb.0: 
15181514; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
1519- ; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l 
1520- ; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.h, v1.l, v1.l 
1521- ; GFX11-TRUE16-NEXT:    v_min_f16_e32 v0.l, v0.l, v0.h 
1515+ ; GFX11-TRUE16-NEXT:    v_min_f16_e32 v0.l, v0.l, v1.l 
15221516; GFX11-TRUE16-NEXT:    v_cmp_lt_f16_e32 vcc_lo, v0.l, v2.l 
15231517; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo 
15241518; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31] 
15251519; 
15261520; GFX11-FAKE16-LABEL: test84_nnan: 
15271521; GFX11-FAKE16:       ; %bb.0: 
15281522; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
1529- ; GFX11-FAKE16-NEXT:    v_max_f16_e32 v0, v0, v0 
1530- ; GFX11-FAKE16-NEXT:    v_max_f16_e32 v1, v1, v1 
15311523; GFX11-FAKE16-NEXT:    v_min_f16_e32 v0, v0, v1 
15321524; GFX11-FAKE16-NEXT:    v_cmp_lt_f16_e32 vcc_lo, v0, v2 
15331525; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo 
@@ -1578,8 +1570,6 @@ define <2 x i1> @test85_nnan(<2 x half> %arg1, <2 x half> %arg2, <2 x half> %arg
15781570; GFX11-TRUE16-LABEL: test85_nnan: 
15791571; GFX11-TRUE16:       ; %bb.0: 
15801572; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
1581- ; GFX11-TRUE16-NEXT:    v_pk_max_f16 v0, v0, v0 
1582- ; GFX11-TRUE16-NEXT:    v_pk_max_f16 v1, v1, v1 
15831573; GFX11-TRUE16-NEXT:    v_pk_min_f16 v1, v0, v1 
15841574; GFX11-TRUE16-NEXT:    v_cmp_le_f16_e32 vcc_lo, v1.l, v2.l 
15851575; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo 
@@ -1590,8 +1580,6 @@ define <2 x i1> @test85_nnan(<2 x half> %arg1, <2 x half> %arg2, <2 x half> %arg
15901580; GFX11-FAKE16-LABEL: test85_nnan: 
15911581; GFX11-FAKE16:       ; %bb.0: 
15921582; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
1593- ; GFX11-FAKE16-NEXT:    v_pk_max_f16 v0, v0, v0 
1594- ; GFX11-FAKE16-NEXT:    v_pk_max_f16 v1, v1, v1 
15951583; GFX11-FAKE16-NEXT:    v_pk_min_f16 v0, v0, v1 
15961584; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v2 
15971585; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v0 
@@ -1646,8 +1634,6 @@ define <2 x i1> @test86_nnan(<2 x half> %arg1, <2 x half> %arg2, <2 x half> %arg
16461634; GFX11-TRUE16-LABEL: test86_nnan: 
16471635; GFX11-TRUE16:       ; %bb.0: 
16481636; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
1649- ; GFX11-TRUE16-NEXT:    v_pk_max_f16 v0, v0, v0 
1650- ; GFX11-TRUE16-NEXT:    v_pk_max_f16 v1, v1, v1 
16511637; GFX11-TRUE16-NEXT:    v_pk_max_f16 v1, v0, v1 
16521638; GFX11-TRUE16-NEXT:    v_cmp_gt_f16_e32 vcc_lo, v1.l, v2.l 
16531639; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo 
@@ -1658,8 +1644,6 @@ define <2 x i1> @test86_nnan(<2 x half> %arg1, <2 x half> %arg2, <2 x half> %arg
16581644; GFX11-FAKE16-LABEL: test86_nnan: 
16591645; GFX11-FAKE16:       ; %bb.0: 
16601646; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
1661- ; GFX11-FAKE16-NEXT:    v_pk_max_f16 v0, v0, v0 
1662- ; GFX11-FAKE16-NEXT:    v_pk_max_f16 v1, v1, v1 
16631647; GFX11-FAKE16-NEXT:    v_pk_max_f16 v0, v0, v1 
16641648; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v2 
16651649; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v0 
@@ -1708,18 +1692,14 @@ define i1 @test87_nnan(half %arg1, half %arg2, half %arg3) {
17081692; GFX11-TRUE16-LABEL: test87_nnan: 
17091693; GFX11-TRUE16:       ; %bb.0: 
17101694; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
1711- ; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l 
1712- ; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.h, v1.l, v1.l 
1713- ; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.h 
1695+ ; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.l, v0.l, v1.l 
17141696; GFX11-TRUE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, v0.l, v2.l 
17151697; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo 
17161698; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31] 
17171699; 
17181700; GFX11-FAKE16-LABEL: test87_nnan: 
17191701; GFX11-FAKE16:       ; %bb.0: 
17201702; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
1721- ; GFX11-FAKE16-NEXT:    v_max_f16_e32 v0, v0, v0 
1722- ; GFX11-FAKE16-NEXT:    v_max_f16_e32 v1, v1, v1 
17231703; GFX11-FAKE16-NEXT:    v_max_f16_e32 v0, v0, v1 
17241704; GFX11-FAKE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, v0, v2 
17251705; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo 
@@ -1770,8 +1750,6 @@ define <2 x i1> @test88_nnan(<2 x half> %arg1, <2 x half> %arg2, <2 x half> %arg
17701750; GFX11-TRUE16-LABEL: test88_nnan: 
17711751; GFX11-TRUE16:       ; %bb.0: 
17721752; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
1773- ; GFX11-TRUE16-NEXT:    v_pk_max_f16 v0, v0, v0 
1774- ; GFX11-TRUE16-NEXT:    v_pk_max_f16 v1, v1, v1 
17751753; GFX11-TRUE16-NEXT:    v_pk_min_f16 v1, v0, v1 
17761754; GFX11-TRUE16-NEXT:    v_cmp_gt_f16_e32 vcc_lo, v1.l, v2.l 
17771755; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo 
@@ -1782,8 +1760,6 @@ define <2 x i1> @test88_nnan(<2 x half> %arg1, <2 x half> %arg2, <2 x half> %arg
17821760; GFX11-FAKE16-LABEL: test88_nnan: 
17831761; GFX11-FAKE16:       ; %bb.0: 
17841762; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
1785- ; GFX11-FAKE16-NEXT:    v_pk_max_f16 v0, v0, v0 
1786- ; GFX11-FAKE16-NEXT:    v_pk_max_f16 v1, v1, v1 
17871763; GFX11-FAKE16-NEXT:    v_pk_min_f16 v0, v0, v1 
17881764; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v2 
17891765; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v0 
@@ -1832,18 +1808,14 @@ define i1 @test89_nnan(half %arg1, half %arg2, half %arg3) {
18321808; GFX11-TRUE16-LABEL: test89_nnan: 
18331809; GFX11-TRUE16:       ; %bb.0: 
18341810; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
1835- ; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l 
1836- ; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.h, v1.l, v1.l 
1837- ; GFX11-TRUE16-NEXT:    v_min_f16_e32 v0.l, v0.l, v0.h 
1811+ ; GFX11-TRUE16-NEXT:    v_min_f16_e32 v0.l, v0.l, v1.l 
18381812; GFX11-TRUE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, v0.l, v2.l 
18391813; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo 
18401814; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31] 
18411815; 
18421816; GFX11-FAKE16-LABEL: test89_nnan: 
18431817; GFX11-FAKE16:       ; %bb.0: 
18441818; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
1845- ; GFX11-FAKE16-NEXT:    v_max_f16_e32 v0, v0, v0 
1846- ; GFX11-FAKE16-NEXT:    v_max_f16_e32 v1, v1, v1 
18471819; GFX11-FAKE16-NEXT:    v_min_f16_e32 v0, v0, v1 
18481820; GFX11-FAKE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, v0, v2 
18491821; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo 
@@ -1888,18 +1860,14 @@ define i1 @test90_nnan(half %arg1, half %arg2, half %arg3) {
18881860; GFX11-TRUE16-LABEL: test90_nnan: 
18891861; GFX11-TRUE16:       ; %bb.0: 
18901862; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
1891- ; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l 
1892- ; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.h, v1.l, v1.l 
1893- ; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.h 
1863+ ; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.l, v0.l, v1.l 
18941864; GFX11-TRUE16-NEXT:    v_cmp_le_f16_e32 vcc_lo, v0.l, v2.l 
18951865; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo 
18961866; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31] 
18971867; 
18981868; GFX11-FAKE16-LABEL: test90_nnan: 
18991869; GFX11-FAKE16:       ; %bb.0: 
19001870; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
1901- ; GFX11-FAKE16-NEXT:    v_max_f16_e32 v0, v0, v0 
1902- ; GFX11-FAKE16-NEXT:    v_max_f16_e32 v1, v1, v1 
19031871; GFX11-FAKE16-NEXT:    v_max_f16_e32 v0, v0, v1 
19041872; GFX11-FAKE16-NEXT:    v_cmp_le_f16_e32 vcc_lo, v0, v2 
19051873; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo 
@@ -1950,8 +1918,6 @@ define <2 x i1> @test91_nnan(<2 x half> %arg1, <2 x half> %arg2, <2 x half> %arg
19501918; GFX11-TRUE16-LABEL: test91_nnan: 
19511919; GFX11-TRUE16:       ; %bb.0: 
19521920; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
1953- ; GFX11-TRUE16-NEXT:    v_pk_max_f16 v0, v0, v0 
1954- ; GFX11-TRUE16-NEXT:    v_pk_max_f16 v1, v1, v1 
19551921; GFX11-TRUE16-NEXT:    v_pk_max_f16 v1, v0, v1 
19561922; GFX11-TRUE16-NEXT:    v_cmp_lt_f16_e32 vcc_lo, v1.l, v2.l 
19571923; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo 
@@ -1962,8 +1928,6 @@ define <2 x i1> @test91_nnan(<2 x half> %arg1, <2 x half> %arg2, <2 x half> %arg
19621928; GFX11-FAKE16-LABEL: test91_nnan: 
19631929; GFX11-FAKE16:       ; %bb.0: 
19641930; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
1965- ; GFX11-FAKE16-NEXT:    v_pk_max_f16 v0, v0, v0 
1966- ; GFX11-FAKE16-NEXT:    v_pk_max_f16 v1, v1, v1 
19671931; GFX11-FAKE16-NEXT:    v_pk_max_f16 v0, v0, v1 
19681932; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v2 
19691933; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v0 
@@ -2712,12 +2676,11 @@ define i1 @test115_nnan(float %arg1, float %arg2, float %arg3, float %arg4, floa
27122676; GCN-LABEL: test115_nnan: 
27132677; GCN:       ; %bb.0: 
27142678; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
2715- ; GCN-NEXT:    v_dual_max_f32  v2, v2, v2 :: v_dual_max_f32 v3, v3 , v3 
2679+ ; GCN-NEXT:    v_max_f32_e32  v2, v2, v3 
27162680; GCN-NEXT:    v_cmp_lt_f32_e32 vcc_lo, v0, v4 
27172681; GCN-NEXT:    v_cmp_lt_f32_e64 s0, v1, v4 
2718- ; GCN-NEXT:    v_max_f32_e32 v2, v2, v3 
2719- ; GCN-NEXT:    s_or_b32 s0, vcc_lo, s0 
27202682; GCN-NEXT:    v_cmp_lt_f32_e64 s1, v2, v4 
2683+ ; GCN-NEXT:    s_or_b32 s0, vcc_lo, s0 
27212684; GCN-NEXT:    s_or_b32 s0, s0, s1 
27222685; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0 
27232686; GCN-NEXT:    s_setpc_b64 s[30:31] 
@@ -3370,7 +3333,6 @@ define i1 @test137_nnan(float %arg1, float %arg2, float %arg3) {
33703333; GCN-LABEL: test137_nnan: 
33713334; GCN:       ; %bb.0: 
33723335; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
3373- ; GCN-NEXT:    v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1 
33743336; GCN-NEXT:    v_min_f32_e32 v0, v0, v1 
33753337; GCN-NEXT:    v_cmp_le_f32_e32 vcc_lo, v0, v2 
33763338; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo 
@@ -3645,7 +3607,6 @@ define i1 @test146_nnan(float %arg1, float %arg2, float %arg3) {
36453607; GCN-LABEL: test146_nnan: 
36463608; GCN:       ; %bb.0: 
36473609; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
3648- ; GCN-NEXT:    v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1 
36493610; GCN-NEXT:    v_max_f32_e32 v0, v0, v1 
36503611; GCN-NEXT:    v_cmp_lt_f32_e32 vcc_lo, v0, v2 
36513612; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo 
@@ -3754,7 +3715,6 @@ define i1 @test149_nnan(float %arg1, float %arg2, float %arg3) {
37543715; GCN-LABEL: test149_nnan: 
37553716; GCN:       ; %bb.0: 
37563717; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
3757- ; GCN-NEXT:    v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1 
37583718; GCN-NEXT:    v_min_f32_e32 v0, v0, v1 
37593719; GCN-NEXT:    v_cmp_ge_f32_e32 vcc_lo, v0, v2 
37603720; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo 
@@ -3826,7 +3786,6 @@ define i1 @test151_nnan(float %arg1, float %arg2, float %arg3) {
38263786; GCN-LABEL: test151_nnan: 
38273787; GCN:       ; %bb.0: 
38283788; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
3829- ; GCN-NEXT:    v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1 
38303789; GCN-NEXT:    v_max_f32_e32 v0, v0, v1 
38313790; GCN-NEXT:    v_cmp_ge_f32_e32 vcc_lo, v0, v2 
38323791; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo 
@@ -3861,7 +3820,6 @@ define i1 @test152_nnan(float %arg1, float %arg2, float %arg3) {
38613820; GCN-LABEL: test152_nnan: 
38623821; GCN:       ; %bb.0: 
38633822; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 
3864- ; GCN-NEXT:    v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1 
38653823; GCN-NEXT:    v_min_f32_e32 v0, v0, v1 
38663824; GCN-NEXT:    v_cmp_le_f32_e32 vcc_lo, v0, v2 
38673825; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc_lo 
0 commit comments