@@ -685,25 +685,16 @@ define half @minimum_half(half %a, half %b) {
685
685
define float @minimum_float (float %a , float %b ) {
686
686
; CHECK-NOF16-LABEL: minimum_float(
687
687
; CHECK-NOF16: {
688
- ; CHECK-NOF16-NEXT: .reg .pred %p<5>;
689
- ; CHECK-NOF16-NEXT: .reg .b32 %r<3>;
690
- ; CHECK-NOF16-NEXT: .reg .b32 %f<8>;
688
+ ; CHECK-NOF16-NEXT: .reg .pred %p<2>;
689
+ ; CHECK-NOF16-NEXT: .reg .b32 %f<5>;
691
690
; CHECK-NOF16-EMPTY:
692
691
; CHECK-NOF16-NEXT: // %bb.0:
693
692
; CHECK-NOF16-NEXT: ld.param.f32 %f1, [minimum_float_param_0];
694
- ; CHECK-NOF16-NEXT: mov.b32 %r1, %f1;
695
693
; CHECK-NOF16-NEXT: ld.param.f32 %f2, [minimum_float_param_1];
696
694
; CHECK-NOF16-NEXT: setp.nan.f32 %p1, %f1, %f2;
697
695
; CHECK-NOF16-NEXT: min.f32 %f3, %f1, %f2;
698
696
; CHECK-NOF16-NEXT: selp.f32 %f4, 0f7FC00000, %f3, %p1;
699
- ; CHECK-NOF16-NEXT: setp.eq.s32 %p2, %r1, -2147483648;
700
- ; CHECK-NOF16-NEXT: selp.f32 %f5, %f1, %f4, %p2;
701
- ; CHECK-NOF16-NEXT: mov.b32 %r2, %f2;
702
- ; CHECK-NOF16-NEXT: setp.eq.s32 %p3, %r2, -2147483648;
703
- ; CHECK-NOF16-NEXT: selp.f32 %f6, %f2, %f5, %p3;
704
- ; CHECK-NOF16-NEXT: setp.eq.f32 %p4, %f4, 0f00000000;
705
- ; CHECK-NOF16-NEXT: selp.f32 %f7, %f6, %f4, %p4;
706
- ; CHECK-NOF16-NEXT: st.param.f32 [func_retval0], %f7;
697
+ ; CHECK-NOF16-NEXT: st.param.f32 [func_retval0], %f4;
707
698
; CHECK-NOF16-NEXT: ret;
708
699
;
709
700
; CHECK-F16-LABEL: minimum_float(
@@ -734,21 +725,15 @@ define float @minimum_float(float %a, float %b) {
734
725
define float @minimum_imm1 (float %a ) {
735
726
; CHECK-NOF16-LABEL: minimum_imm1(
736
727
; CHECK-NOF16: {
737
- ; CHECK-NOF16-NEXT: .reg .pred %p<4>;
738
- ; CHECK-NOF16-NEXT: .reg .b32 %r<2>;
739
- ; CHECK-NOF16-NEXT: .reg .b32 %f<6>;
728
+ ; CHECK-NOF16-NEXT: .reg .pred %p<2>;
729
+ ; CHECK-NOF16-NEXT: .reg .b32 %f<4>;
740
730
; CHECK-NOF16-EMPTY:
741
731
; CHECK-NOF16-NEXT: // %bb.0:
742
732
; CHECK-NOF16-NEXT: ld.param.f32 %f1, [minimum_imm1_param_0];
743
- ; CHECK-NOF16-NEXT: mov.b32 %r1, %f1;
744
733
; CHECK-NOF16-NEXT: setp.nan.f32 %p1, %f1, %f1;
745
734
; CHECK-NOF16-NEXT: min.f32 %f2, %f1, 0f00000000;
746
735
; CHECK-NOF16-NEXT: selp.f32 %f3, 0f7FC00000, %f2, %p1;
747
- ; CHECK-NOF16-NEXT: setp.eq.s32 %p2, %r1, -2147483648;
748
- ; CHECK-NOF16-NEXT: selp.f32 %f4, %f1, %f3, %p2;
749
- ; CHECK-NOF16-NEXT: setp.eq.f32 %p3, %f3, 0f00000000;
750
- ; CHECK-NOF16-NEXT: selp.f32 %f5, %f4, %f3, %p3;
751
- ; CHECK-NOF16-NEXT: st.param.f32 [func_retval0], %f5;
736
+ ; CHECK-NOF16-NEXT: st.param.f32 [func_retval0], %f3;
752
737
; CHECK-NOF16-NEXT: ret;
753
738
;
754
739
; CHECK-F16-LABEL: minimum_imm1(
@@ -777,21 +762,15 @@ define float @minimum_imm1(float %a) {
777
762
define float @minimum_imm2 (float %a ) {
778
763
; CHECK-NOF16-LABEL: minimum_imm2(
779
764
; CHECK-NOF16: {
780
- ; CHECK-NOF16-NEXT: .reg .pred %p<4>;
781
- ; CHECK-NOF16-NEXT: .reg .b32 %r<2>;
782
- ; CHECK-NOF16-NEXT: .reg .b32 %f<6>;
765
+ ; CHECK-NOF16-NEXT: .reg .pred %p<2>;
766
+ ; CHECK-NOF16-NEXT: .reg .b32 %f<4>;
783
767
; CHECK-NOF16-EMPTY:
784
768
; CHECK-NOF16-NEXT: // %bb.0:
785
769
; CHECK-NOF16-NEXT: ld.param.f32 %f1, [minimum_imm2_param_0];
786
- ; CHECK-NOF16-NEXT: mov.b32 %r1, %f1;
787
770
; CHECK-NOF16-NEXT: setp.nan.f32 %p1, %f1, %f1;
788
771
; CHECK-NOF16-NEXT: min.f32 %f2, %f1, 0f00000000;
789
772
; CHECK-NOF16-NEXT: selp.f32 %f3, 0f7FC00000, %f2, %p1;
790
- ; CHECK-NOF16-NEXT: setp.eq.s32 %p2, %r1, -2147483648;
791
- ; CHECK-NOF16-NEXT: selp.f32 %f4, %f1, %f3, %p2;
792
- ; CHECK-NOF16-NEXT: setp.eq.f32 %p3, %f3, 0f00000000;
793
- ; CHECK-NOF16-NEXT: selp.f32 %f5, %f4, %f3, %p3;
794
- ; CHECK-NOF16-NEXT: st.param.f32 [func_retval0], %f5;
773
+ ; CHECK-NOF16-NEXT: st.param.f32 [func_retval0], %f3;
795
774
; CHECK-NOF16-NEXT: ret;
796
775
;
797
776
; CHECK-F16-LABEL: minimum_imm2(
@@ -820,25 +799,16 @@ define float @minimum_imm2(float %a) {
820
799
define float @minimum_float_ftz (float %a , float %b ) #1 {
821
800
; CHECK-NOF16-LABEL: minimum_float_ftz(
822
801
; CHECK-NOF16: {
823
- ; CHECK-NOF16-NEXT: .reg .pred %p<5>;
824
- ; CHECK-NOF16-NEXT: .reg .b32 %r<3>;
825
- ; CHECK-NOF16-NEXT: .reg .b32 %f<8>;
802
+ ; CHECK-NOF16-NEXT: .reg .pred %p<2>;
803
+ ; CHECK-NOF16-NEXT: .reg .b32 %f<5>;
826
804
; CHECK-NOF16-EMPTY:
827
805
; CHECK-NOF16-NEXT: // %bb.0:
828
806
; CHECK-NOF16-NEXT: ld.param.f32 %f1, [minimum_float_ftz_param_0];
829
- ; CHECK-NOF16-NEXT: mov.b32 %r1, %f1;
830
807
; CHECK-NOF16-NEXT: ld.param.f32 %f2, [minimum_float_ftz_param_1];
831
808
; CHECK-NOF16-NEXT: setp.nan.ftz.f32 %p1, %f1, %f2;
832
809
; CHECK-NOF16-NEXT: min.ftz.f32 %f3, %f1, %f2;
833
810
; CHECK-NOF16-NEXT: selp.f32 %f4, 0f7FC00000, %f3, %p1;
834
- ; CHECK-NOF16-NEXT: setp.eq.s32 %p2, %r1, -2147483648;
835
- ; CHECK-NOF16-NEXT: selp.f32 %f5, %f1, %f4, %p2;
836
- ; CHECK-NOF16-NEXT: mov.b32 %r2, %f2;
837
- ; CHECK-NOF16-NEXT: setp.eq.s32 %p3, %r2, -2147483648;
838
- ; CHECK-NOF16-NEXT: selp.f32 %f6, %f2, %f5, %p3;
839
- ; CHECK-NOF16-NEXT: setp.eq.ftz.f32 %p4, %f4, 0f00000000;
840
- ; CHECK-NOF16-NEXT: selp.f32 %f7, %f6, %f4, %p4;
841
- ; CHECK-NOF16-NEXT: st.param.f32 [func_retval0], %f7;
811
+ ; CHECK-NOF16-NEXT: st.param.f32 [func_retval0], %f4;
842
812
; CHECK-NOF16-NEXT: ret;
843
813
;
844
814
; CHECK-F16-LABEL: minimum_float_ftz(
@@ -869,25 +839,16 @@ define float @minimum_float_ftz(float %a, float %b) #1 {
869
839
define double @minimum_double (double %a , double %b ) {
870
840
; CHECK-LABEL: minimum_double(
871
841
; CHECK: {
872
- ; CHECK-NEXT: .reg .pred %p<5>;
873
- ; CHECK-NEXT: .reg .b64 %rd<3>;
874
- ; CHECK-NEXT: .reg .b64 %fd<8>;
842
+ ; CHECK-NEXT: .reg .pred %p<2>;
843
+ ; CHECK-NEXT: .reg .b64 %fd<5>;
875
844
; CHECK-EMPTY:
876
845
; CHECK-NEXT: // %bb.0:
877
846
; CHECK-NEXT: ld.param.f64 %fd1, [minimum_double_param_0];
878
- ; CHECK-NEXT: mov.b64 %rd1, %fd1;
879
847
; CHECK-NEXT: ld.param.f64 %fd2, [minimum_double_param_1];
880
848
; CHECK-NEXT: setp.nan.f64 %p1, %fd1, %fd2;
881
849
; CHECK-NEXT: min.f64 %fd3, %fd1, %fd2;
882
850
; CHECK-NEXT: selp.f64 %fd4, 0d7FF8000000000000, %fd3, %p1;
883
- ; CHECK-NEXT: setp.eq.s64 %p2, %rd1, -9223372036854775808;
884
- ; CHECK-NEXT: selp.f64 %fd5, %fd1, %fd4, %p2;
885
- ; CHECK-NEXT: mov.b64 %rd2, %fd2;
886
- ; CHECK-NEXT: setp.eq.s64 %p3, %rd2, -9223372036854775808;
887
- ; CHECK-NEXT: selp.f64 %fd6, %fd2, %fd5, %p3;
888
- ; CHECK-NEXT: setp.eq.f64 %p4, %fd4, 0d0000000000000000;
889
- ; CHECK-NEXT: selp.f64 %fd7, %fd6, %fd4, %p4;
890
- ; CHECK-NEXT: st.param.f64 [func_retval0], %fd7;
851
+ ; CHECK-NEXT: st.param.f64 [func_retval0], %fd4;
891
852
; CHECK-NEXT: ret;
892
853
%x = call double @llvm.minimum.f64 (double %a , double %b )
893
854
ret double %x
@@ -1243,17 +1204,15 @@ define half @maximum_half(half %a, half %b) {
1243
1204
define float @maximum_imm1 (float %a ) {
1244
1205
; CHECK-NOF16-LABEL: maximum_imm1(
1245
1206
; CHECK-NOF16: {
1246
- ; CHECK-NOF16-NEXT: .reg .pred %p<3 >;
1247
- ; CHECK-NOF16-NEXT: .reg .b32 %f<5 >;
1207
+ ; CHECK-NOF16-NEXT: .reg .pred %p<2 >;
1208
+ ; CHECK-NOF16-NEXT: .reg .b32 %f<4 >;
1248
1209
; CHECK-NOF16-EMPTY:
1249
1210
; CHECK-NOF16-NEXT: // %bb.0:
1250
1211
; CHECK-NOF16-NEXT: ld.param.f32 %f1, [maximum_imm1_param_0];
1251
1212
; CHECK-NOF16-NEXT: setp.nan.f32 %p1, %f1, %f1;
1252
1213
; CHECK-NOF16-NEXT: max.f32 %f2, %f1, 0f00000000;
1253
1214
; CHECK-NOF16-NEXT: selp.f32 %f3, 0f7FC00000, %f2, %p1;
1254
- ; CHECK-NOF16-NEXT: setp.eq.f32 %p2, %f3, 0f00000000;
1255
- ; CHECK-NOF16-NEXT: selp.f32 %f4, 0f00000000, %f3, %p2;
1256
- ; CHECK-NOF16-NEXT: st.param.f32 [func_retval0], %f4;
1215
+ ; CHECK-NOF16-NEXT: st.param.f32 [func_retval0], %f3;
1257
1216
; CHECK-NOF16-NEXT: ret;
1258
1217
;
1259
1218
; CHECK-F16-LABEL: maximum_imm1(
@@ -1282,17 +1241,15 @@ define float @maximum_imm1(float %a) {
1282
1241
define float @maximum_imm2 (float %a ) {
1283
1242
; CHECK-NOF16-LABEL: maximum_imm2(
1284
1243
; CHECK-NOF16: {
1285
- ; CHECK-NOF16-NEXT: .reg .pred %p<3 >;
1286
- ; CHECK-NOF16-NEXT: .reg .b32 %f<5 >;
1244
+ ; CHECK-NOF16-NEXT: .reg .pred %p<2 >;
1245
+ ; CHECK-NOF16-NEXT: .reg .b32 %f<4 >;
1287
1246
; CHECK-NOF16-EMPTY:
1288
1247
; CHECK-NOF16-NEXT: // %bb.0:
1289
1248
; CHECK-NOF16-NEXT: ld.param.f32 %f1, [maximum_imm2_param_0];
1290
1249
; CHECK-NOF16-NEXT: setp.nan.f32 %p1, %f1, %f1;
1291
1250
; CHECK-NOF16-NEXT: max.f32 %f2, %f1, 0f00000000;
1292
1251
; CHECK-NOF16-NEXT: selp.f32 %f3, 0f7FC00000, %f2, %p1;
1293
- ; CHECK-NOF16-NEXT: setp.eq.f32 %p2, %f3, 0f00000000;
1294
- ; CHECK-NOF16-NEXT: selp.f32 %f4, 0f00000000, %f3, %p2;
1295
- ; CHECK-NOF16-NEXT: st.param.f32 [func_retval0], %f4;
1252
+ ; CHECK-NOF16-NEXT: st.param.f32 [func_retval0], %f3;
1296
1253
; CHECK-NOF16-NEXT: ret;
1297
1254
;
1298
1255
; CHECK-F16-LABEL: maximum_imm2(
@@ -1321,25 +1278,16 @@ define float @maximum_imm2(float %a) {
1321
1278
define float @maximum_float (float %a , float %b ) {
1322
1279
; CHECK-NOF16-LABEL: maximum_float(
1323
1280
; CHECK-NOF16: {
1324
- ; CHECK-NOF16-NEXT: .reg .pred %p<5>;
1325
- ; CHECK-NOF16-NEXT: .reg .b32 %r<3>;
1326
- ; CHECK-NOF16-NEXT: .reg .b32 %f<8>;
1281
+ ; CHECK-NOF16-NEXT: .reg .pred %p<2>;
1282
+ ; CHECK-NOF16-NEXT: .reg .b32 %f<5>;
1327
1283
; CHECK-NOF16-EMPTY:
1328
1284
; CHECK-NOF16-NEXT: // %bb.0:
1329
1285
; CHECK-NOF16-NEXT: ld.param.f32 %f1, [maximum_float_param_0];
1330
- ; CHECK-NOF16-NEXT: mov.b32 %r1, %f1;
1331
1286
; CHECK-NOF16-NEXT: ld.param.f32 %f2, [maximum_float_param_1];
1332
1287
; CHECK-NOF16-NEXT: setp.nan.f32 %p1, %f1, %f2;
1333
1288
; CHECK-NOF16-NEXT: max.f32 %f3, %f1, %f2;
1334
1289
; CHECK-NOF16-NEXT: selp.f32 %f4, 0f7FC00000, %f3, %p1;
1335
- ; CHECK-NOF16-NEXT: setp.eq.s32 %p2, %r1, 0;
1336
- ; CHECK-NOF16-NEXT: selp.f32 %f5, %f1, %f4, %p2;
1337
- ; CHECK-NOF16-NEXT: mov.b32 %r2, %f2;
1338
- ; CHECK-NOF16-NEXT: setp.eq.s32 %p3, %r2, 0;
1339
- ; CHECK-NOF16-NEXT: selp.f32 %f6, %f2, %f5, %p3;
1340
- ; CHECK-NOF16-NEXT: setp.eq.f32 %p4, %f4, 0f00000000;
1341
- ; CHECK-NOF16-NEXT: selp.f32 %f7, %f6, %f4, %p4;
1342
- ; CHECK-NOF16-NEXT: st.param.f32 [func_retval0], %f7;
1290
+ ; CHECK-NOF16-NEXT: st.param.f32 [func_retval0], %f4;
1343
1291
; CHECK-NOF16-NEXT: ret;
1344
1292
;
1345
1293
; CHECK-F16-LABEL: maximum_float(
@@ -1370,25 +1318,16 @@ define float @maximum_float(float %a, float %b) {
1370
1318
define float @maximum_float_ftz (float %a , float %b ) #1 {
1371
1319
; CHECK-NOF16-LABEL: maximum_float_ftz(
1372
1320
; CHECK-NOF16: {
1373
- ; CHECK-NOF16-NEXT: .reg .pred %p<5>;
1374
- ; CHECK-NOF16-NEXT: .reg .b32 %r<3>;
1375
- ; CHECK-NOF16-NEXT: .reg .b32 %f<8>;
1321
+ ; CHECK-NOF16-NEXT: .reg .pred %p<2>;
1322
+ ; CHECK-NOF16-NEXT: .reg .b32 %f<5>;
1376
1323
; CHECK-NOF16-EMPTY:
1377
1324
; CHECK-NOF16-NEXT: // %bb.0:
1378
1325
; CHECK-NOF16-NEXT: ld.param.f32 %f1, [maximum_float_ftz_param_0];
1379
- ; CHECK-NOF16-NEXT: mov.b32 %r1, %f1;
1380
1326
; CHECK-NOF16-NEXT: ld.param.f32 %f2, [maximum_float_ftz_param_1];
1381
1327
; CHECK-NOF16-NEXT: setp.nan.ftz.f32 %p1, %f1, %f2;
1382
1328
; CHECK-NOF16-NEXT: max.ftz.f32 %f3, %f1, %f2;
1383
1329
; CHECK-NOF16-NEXT: selp.f32 %f4, 0f7FC00000, %f3, %p1;
1384
- ; CHECK-NOF16-NEXT: setp.eq.s32 %p2, %r1, 0;
1385
- ; CHECK-NOF16-NEXT: selp.f32 %f5, %f1, %f4, %p2;
1386
- ; CHECK-NOF16-NEXT: mov.b32 %r2, %f2;
1387
- ; CHECK-NOF16-NEXT: setp.eq.s32 %p3, %r2, 0;
1388
- ; CHECK-NOF16-NEXT: selp.f32 %f6, %f2, %f5, %p3;
1389
- ; CHECK-NOF16-NEXT: setp.eq.ftz.f32 %p4, %f4, 0f00000000;
1390
- ; CHECK-NOF16-NEXT: selp.f32 %f7, %f6, %f4, %p4;
1391
- ; CHECK-NOF16-NEXT: st.param.f32 [func_retval0], %f7;
1330
+ ; CHECK-NOF16-NEXT: st.param.f32 [func_retval0], %f4;
1392
1331
; CHECK-NOF16-NEXT: ret;
1393
1332
;
1394
1333
; CHECK-F16-LABEL: maximum_float_ftz(
@@ -1419,25 +1358,16 @@ define float @maximum_float_ftz(float %a, float %b) #1 {
1419
1358
define double @maximum_double (double %a , double %b ) {
1420
1359
; CHECK-LABEL: maximum_double(
1421
1360
; CHECK: {
1422
- ; CHECK-NEXT: .reg .pred %p<5>;
1423
- ; CHECK-NEXT: .reg .b64 %rd<3>;
1424
- ; CHECK-NEXT: .reg .b64 %fd<8>;
1361
+ ; CHECK-NEXT: .reg .pred %p<2>;
1362
+ ; CHECK-NEXT: .reg .b64 %fd<5>;
1425
1363
; CHECK-EMPTY:
1426
1364
; CHECK-NEXT: // %bb.0:
1427
1365
; CHECK-NEXT: ld.param.f64 %fd1, [maximum_double_param_0];
1428
- ; CHECK-NEXT: mov.b64 %rd1, %fd1;
1429
1366
; CHECK-NEXT: ld.param.f64 %fd2, [maximum_double_param_1];
1430
1367
; CHECK-NEXT: setp.nan.f64 %p1, %fd1, %fd2;
1431
1368
; CHECK-NEXT: max.f64 %fd3, %fd1, %fd2;
1432
1369
; CHECK-NEXT: selp.f64 %fd4, 0d7FF8000000000000, %fd3, %p1;
1433
- ; CHECK-NEXT: setp.eq.s64 %p2, %rd1, 0;
1434
- ; CHECK-NEXT: selp.f64 %fd5, %fd1, %fd4, %p2;
1435
- ; CHECK-NEXT: mov.b64 %rd2, %fd2;
1436
- ; CHECK-NEXT: setp.eq.s64 %p3, %rd2, 0;
1437
- ; CHECK-NEXT: selp.f64 %fd6, %fd2, %fd5, %p3;
1438
- ; CHECK-NEXT: setp.eq.f64 %p4, %fd4, 0d0000000000000000;
1439
- ; CHECK-NEXT: selp.f64 %fd7, %fd6, %fd4, %p4;
1440
- ; CHECK-NEXT: st.param.f64 [func_retval0], %fd7;
1370
+ ; CHECK-NEXT: st.param.f64 [func_retval0], %fd4;
1441
1371
; CHECK-NEXT: ret;
1442
1372
%x = call double @llvm.maximum.f64 (double %a , double %b )
1443
1373
ret double %x
0 commit comments