@@ -1504,6 +1504,8 @@ define i32 @test_inf_zero_only(float nofpclass(nan norm sub) %x) {
1504
1504
ret i32 %and
1505
1505
}
1506
1506
1507
+
1508
+
1507
1509
define i1 @test_simplify_icmp (i32 %x ) {
1508
1510
; CHECK-LABEL: @test_simplify_icmp(
1509
1511
; CHECK-NEXT: ret i1 false
@@ -1515,6 +1517,46 @@ define i1 @test_simplify_icmp(i32 %x) {
1515
1517
ret i1 %cmp
1516
1518
}
1517
1519
1520
+ define i32 @test_snan_quiet_bit1 (float nofpclass(sub norm inf qnan) %x ) {
1521
+ ; CHECK-LABEL: @test_snan_quiet_bit1(
1522
+ ; CHECK-NEXT: ret i32 0
1523
+ ;
1524
+ %bits = bitcast float %x to i32
1525
+ %masked = and i32 %bits , 4194304
1526
+ ret i32 %masked
1527
+ }
1528
+
1529
+ define i32 @test_snan_quiet_bit2 (float nofpclass(sub norm inf qnan) %x ) {
1530
+ ; CHECK-LABEL: @test_snan_quiet_bit2(
1531
+ ; CHECK-NEXT: [[BITS:%.*]] = bitcast float [[X:%.*]] to i32
1532
+ ; CHECK-NEXT: [[MASKED:%.*]] = and i32 [[BITS]], 2097152
1533
+ ; CHECK-NEXT: ret i32 [[MASKED]]
1534
+ ;
1535
+ %bits = bitcast float %x to i32
1536
+ %masked = and i32 %bits , 2097152
1537
+ ret i32 %masked
1538
+ }
1539
+
1540
+ define i32 @test_qnan_quiet_bit1 (float nofpclass(sub norm inf snan) %x ) {
1541
+ ; CHECK-LABEL: @test_qnan_quiet_bit1(
1542
+ ; CHECK-NEXT: [[BITS:%.*]] = bitcast float [[X:%.*]] to i32
1543
+ ; CHECK-NEXT: [[MASKED:%.*]] = and i32 [[BITS]], 4194304
1544
+ ; CHECK-NEXT: ret i32 [[MASKED]]
1545
+ ;
1546
+ %bits = bitcast float %x to i32
1547
+ %masked = and i32 %bits , 4194304
1548
+ ret i32 %masked
1549
+ }
1550
+
1551
+ define i32 @test_qnan_quiet_bit2 (float nofpclass(sub norm inf snan) %x ) {
1552
+ ; CHECK-LABEL: @test_qnan_quiet_bit2(
1553
+ ; CHECK-NEXT: ret i32 0
1554
+ ;
1555
+ %bits = bitcast float %x to i32
1556
+ %masked = and i32 %bits , 2097152
1557
+ ret i32 %masked
1558
+ }
1559
+
1518
1560
define i16 @test_simplify_mask (i32 %ui , float %x ) {
1519
1561
; CHECK-LABEL: @test_simplify_mask(
1520
1562
; CHECK-NEXT: [[CONV:%.*]] = uitofp i32 [[UI:%.*]] to float
0 commit comments