@@ -272,8 +272,8 @@ define half @test_rootn_f16_1(half %x) {
272
272
define half @test_rootn_f16_2 (half %x ) {
273
273
; CHECK-LABEL: define half @test_rootn_f16_2(
274
274
; CHECK-SAME: half [[X:%.*]]) {
275
- ; CHECK-NEXT: [[__ROOTN2SQRT :%.*]] = call half @_Z4sqrtDh (half [[X]])
276
- ; CHECK-NEXT: ret half [[__ROOTN2SQRT ]]
275
+ ; CHECK-NEXT: [[CALL :%.*]] = call half @llvm.sqrt.f16 (half [[X]]), !fpmath [[META0:![0-9]+]]
276
+ ; CHECK-NEXT: ret half [[CALL ]]
277
277
;
278
278
%call = tail call half @_Z5rootnDhi (half %x , i32 2 )
279
279
ret half %call
@@ -351,8 +351,8 @@ define <2 x half> @test_rootn_v2f16_1(<2 x half> %x) {
351
351
define <2 x half > @test_rootn_v2f16_2 (<2 x half > %x ) {
352
352
; CHECK-LABEL: define <2 x half> @test_rootn_v2f16_2(
353
353
; CHECK-SAME: <2 x half> [[X:%.*]]) {
354
- ; CHECK-NEXT: [[__ROOTN2SQRT :%.*]] = call <2 x half> @_Z4sqrtDv2_Dh (<2 x half> [[X]])
355
- ; CHECK-NEXT: ret <2 x half> [[__ROOTN2SQRT ]]
354
+ ; CHECK-NEXT: [[CALL :%.*]] = call <2 x half> @llvm.sqrt.v2f16 (<2 x half> [[X]]), !fpmath [[META0]]
355
+ ; CHECK-NEXT: ret <2 x half> [[CALL ]]
356
356
;
357
357
%call = tail call <2 x half > @_Z5rootnDv2_DhDv2_i (<2 x half > %x , <2 x i32 > <i32 2 , i32 2 >)
358
358
ret <2 x half > %call
@@ -612,8 +612,8 @@ define float @test_rootn_f32__y_2(float %x) {
612
612
; CHECK-LABEL: define float @test_rootn_f32__y_2(
613
613
; CHECK-SAME: float [[X:%.*]]) {
614
614
; CHECK-NEXT: entry:
615
- ; CHECK-NEXT: [[__ROOTN2SQRT :%.*]] = call float @_Z4sqrtf (float [[X]])
616
- ; CHECK-NEXT: ret float [[__ROOTN2SQRT ]]
615
+ ; CHECK-NEXT: [[CALL :%.*]] = call float @llvm.sqrt.f32 (float [[X]]), !fpmath [[META0]]
616
+ ; CHECK-NEXT: ret float [[CALL ]]
617
617
;
618
618
entry:
619
619
%call = tail call float @_Z5rootnfi (float %x , i32 2 )
@@ -624,8 +624,8 @@ define float @test_rootn_f32__y_2_flags(float %x) {
624
624
; CHECK-LABEL: define float @test_rootn_f32__y_2_flags(
625
625
; CHECK-SAME: float [[X:%.*]]) {
626
626
; CHECK-NEXT: entry:
627
- ; CHECK-NEXT: [[__ROOTN2SQRT :%.*]] = call nnan nsz float @_Z4sqrtf (float [[X]])
628
- ; CHECK-NEXT: ret float [[__ROOTN2SQRT ]]
627
+ ; CHECK-NEXT: [[CALL :%.*]] = call nnan nsz float @llvm.sqrt.f32 (float [[X]]), !fpmath [[META0]]
628
+ ; CHECK-NEXT: ret float [[CALL ]]
629
629
;
630
630
entry:
631
631
%call = tail call nnan nsz float @_Z5rootnfi (float %x , i32 2 )
@@ -637,8 +637,8 @@ define float @test_rootn_f32__y_2_fpmath_3(float %x) {
637
637
; CHECK-LABEL: define float @test_rootn_f32__y_2_fpmath_3(
638
638
; CHECK-SAME: float [[X:%.*]]) {
639
639
; CHECK-NEXT: entry:
640
- ; CHECK-NEXT: [[__ROOTN2SQRT :%.*]] = call nnan nsz float @_Z4sqrtf (float [[X]])
641
- ; CHECK-NEXT: ret float [[__ROOTN2SQRT ]]
640
+ ; CHECK-NEXT: [[CALL :%.*]] = call nnan nsz float @llvm.sqrt.f32 (float [[X]]), !fpmath [[META1:![0-9]+]]
641
+ ; CHECK-NEXT: ret float [[CALL ]]
642
642
;
643
643
entry:
644
644
%call = tail call nnan nsz float @_Z5rootnfi (float %x , i32 2 ), !fpmath !0
@@ -649,8 +649,8 @@ define <2 x float> @test_rootn_v2f32__y_2_flags(<2 x float> %x) {
649
649
; CHECK-LABEL: define <2 x float> @test_rootn_v2f32__y_2_flags(
650
650
; CHECK-SAME: <2 x float> [[X:%.*]]) {
651
651
; CHECK-NEXT: entry:
652
- ; CHECK-NEXT: [[__ROOTN2SQRT :%.*]] = call nnan nsz <2 x float> @_Z4sqrtDv2_f (<2 x float> [[X]])
653
- ; CHECK-NEXT: ret <2 x float> [[__ROOTN2SQRT ]]
652
+ ; CHECK-NEXT: [[CALL :%.*]] = call nnan nsz <2 x float> @llvm.sqrt.v2f32 (<2 x float> [[X]]), !fpmath [[META0]]
653
+ ; CHECK-NEXT: ret <2 x float> [[CALL ]]
654
654
;
655
655
entry:
656
656
%call = tail call nnan nsz <2 x float > @_Z5rootnDv2_fDv2_i (<2 x float > %x , <2 x i32 > <i32 2 , i32 2 >)
@@ -661,8 +661,8 @@ define <3 x float> @test_rootn_v3f32__y_2(<3 x float> %x) {
661
661
; CHECK-LABEL: define <3 x float> @test_rootn_v3f32__y_2(
662
662
; CHECK-SAME: <3 x float> [[X:%.*]]) {
663
663
; CHECK-NEXT: entry:
664
- ; CHECK-NEXT: [[__ROOTN2SQRT :%.*]] = call <3 x float> @_Z4sqrtDv3_f (<3 x float> [[X]])
665
- ; CHECK-NEXT: ret <3 x float> [[__ROOTN2SQRT ]]
664
+ ; CHECK-NEXT: [[CALL :%.*]] = call <3 x float> @llvm.sqrt.v3f32 (<3 x float> [[X]]), !fpmath [[META0]]
665
+ ; CHECK-NEXT: ret <3 x float> [[CALL ]]
666
666
;
667
667
entry:
668
668
%call = tail call <3 x float > @_Z5rootnDv3_fDv3_i (<3 x float > %x , <3 x i32 > <i32 2 , i32 2 , i32 2 >)
@@ -673,8 +673,8 @@ define <3 x float> @test_rootn_v3f32__y_2_undef(<3 x float> %x) {
673
673
; CHECK-LABEL: define <3 x float> @test_rootn_v3f32__y_2_undef(
674
674
; CHECK-SAME: <3 x float> [[X:%.*]]) {
675
675
; CHECK-NEXT: entry:
676
- ; CHECK-NEXT: [[__ROOTN2SQRT :%.*]] = call <3 x float> @_Z4sqrtDv3_f (<3 x float> [[X]])
677
- ; CHECK-NEXT: ret <3 x float> [[__ROOTN2SQRT ]]
676
+ ; CHECK-NEXT: [[CALL :%.*]] = call <3 x float> @llvm.sqrt.v3f32 (<3 x float> [[X]]), !fpmath [[META0]]
677
+ ; CHECK-NEXT: ret <3 x float> [[CALL ]]
678
678
;
679
679
entry:
680
680
%call = tail call <3 x float > @_Z5rootnDv3_fDv3_i (<3 x float > %x , <3 x i32 > <i32 2 , i32 poison, i32 2 >)
@@ -685,8 +685,8 @@ define <4 x float> @test_rootn_v4f32__y_2(<4 x float> %x) {
685
685
; CHECK-LABEL: define <4 x float> @test_rootn_v4f32__y_2(
686
686
; CHECK-SAME: <4 x float> [[X:%.*]]) {
687
687
; CHECK-NEXT: entry:
688
- ; CHECK-NEXT: [[__ROOTN2SQRT :%.*]] = call <4 x float> @_Z4sqrtDv4_f (<4 x float> [[X]])
689
- ; CHECK-NEXT: ret <4 x float> [[__ROOTN2SQRT ]]
688
+ ; CHECK-NEXT: [[CALL :%.*]] = call <4 x float> @llvm.sqrt.v4f32 (<4 x float> [[X]]), !fpmath [[META0]]
689
+ ; CHECK-NEXT: ret <4 x float> [[CALL ]]
690
690
;
691
691
entry:
692
692
%call = tail call <4 x float > @_Z5rootnDv4_fDv4_i (<4 x float > %x , <4 x i32 > <i32 2 , i32 2 , i32 2 , i32 2 >)
@@ -697,8 +697,8 @@ define <8 x float> @test_rootn_v8f32__y_2(<8 x float> %x) {
697
697
; CHECK-LABEL: define <8 x float> @test_rootn_v8f32__y_2(
698
698
; CHECK-SAME: <8 x float> [[X:%.*]]) {
699
699
; CHECK-NEXT: entry:
700
- ; CHECK-NEXT: [[__ROOTN2SQRT :%.*]] = call <8 x float> @_Z4sqrtDv8_f (<8 x float> [[X]])
701
- ; CHECK-NEXT: ret <8 x float> [[__ROOTN2SQRT ]]
700
+ ; CHECK-NEXT: [[CALL :%.*]] = call <8 x float> @llvm.sqrt.v8f32 (<8 x float> [[X]]), !fpmath [[META0]]
701
+ ; CHECK-NEXT: ret <8 x float> [[CALL ]]
702
702
;
703
703
entry:
704
704
%call = tail call <8 x float > @_Z5rootnDv8_fDv8_i (<8 x float > %x , <8 x i32 > <i32 2 , i32 2 , i32 2 , i32 2 , i32 2 , i32 2 , i32 2 , i32 2 >)
@@ -709,8 +709,8 @@ define <16 x float> @test_rootn_v16f32__y_2(<16 x float> %x) {
709
709
; CHECK-LABEL: define <16 x float> @test_rootn_v16f32__y_2(
710
710
; CHECK-SAME: <16 x float> [[X:%.*]]) {
711
711
; CHECK-NEXT: entry:
712
- ; CHECK-NEXT: [[__ROOTN2SQRT :%.*]] = call <16 x float> @_Z4sqrtDv16_f (<16 x float> [[X]])
713
- ; CHECK-NEXT: ret <16 x float> [[__ROOTN2SQRT ]]
712
+ ; CHECK-NEXT: [[CALL :%.*]] = call <16 x float> @llvm.sqrt.v16f32 (<16 x float> [[X]]), !fpmath [[META0]]
713
+ ; CHECK-NEXT: ret <16 x float> [[CALL ]]
714
714
;
715
715
entry:
716
716
%call = tail call <16 x float > @_Z5rootnDv16_fDv16_i (<16 x float > %x , <16 x i32 > <i32 2 , i32 2 , i32 2 , i32 2 , i32 2 , i32 2 , i32 2 , i32 2 , i32 2 , i32 2 , i32 2 , i32 2 , i32 2 , i32 2 , i32 2 , i32 2 >)
@@ -757,8 +757,8 @@ define <2 x float> @test_rootn_v2f32__y_nonsplat_2_poison(<2 x float> %x) {
757
757
; CHECK-LABEL: define <2 x float> @test_rootn_v2f32__y_nonsplat_2_poison(
758
758
; CHECK-SAME: <2 x float> [[X:%.*]]) {
759
759
; CHECK-NEXT: entry:
760
- ; CHECK-NEXT: [[__ROOTN2SQRT :%.*]] = call <2 x float> @_Z4sqrtDv2_f (<2 x float> [[X]])
761
- ; CHECK-NEXT: ret <2 x float> [[__ROOTN2SQRT ]]
760
+ ; CHECK-NEXT: [[CALL :%.*]] = call <2 x float> @llvm.sqrt.v2f32 (<2 x float> [[X]]), !fpmath [[META0]]
761
+ ; CHECK-NEXT: ret <2 x float> [[CALL ]]
762
762
;
763
763
entry:
764
764
%call = tail call <2 x float > @_Z5rootnDv2_fDv2_i (<2 x float > %x , <2 x i32 > <i32 2 , i32 poison>)
@@ -913,7 +913,7 @@ define float @test_rootn_f32__y_neg2__nobuiltin(float %x) {
913
913
; CHECK-LABEL: define float @test_rootn_f32__y_neg2__nobuiltin(
914
914
; CHECK-SAME: float [[X:%.*]]) {
915
915
; CHECK-NEXT: entry:
916
- ; CHECK-NEXT: [[CALL:%.*]] = tail call float @_Z5rootnfi(float [[X]], i32 -2) #[[ATTR2 :[0-9]+]]
916
+ ; CHECK-NEXT: [[CALL:%.*]] = tail call float @_Z5rootnfi(float [[X]], i32 -2) #[[ATTR3 :[0-9]+]]
917
917
; CHECK-NEXT: ret float [[CALL]]
918
918
;
919
919
entry:
@@ -1125,7 +1125,7 @@ define float @test_rootn_fast_f32_nobuiltin(float %x, i32 %y) {
1125
1125
; CHECK-LABEL: define float @test_rootn_fast_f32_nobuiltin(
1126
1126
; CHECK-SAME: float [[X:%.*]], i32 [[Y:%.*]]) {
1127
1127
; CHECK-NEXT: entry:
1128
- ; CHECK-NEXT: [[CALL:%.*]] = tail call fast float @_Z5rootnfi(float [[X]], i32 [[Y]]) #[[ATTR2 ]]
1128
+ ; CHECK-NEXT: [[CALL:%.*]] = tail call fast float @_Z5rootnfi(float [[X]], i32 [[Y]]) #[[ATTR3 ]]
1129
1129
; CHECK-NEXT: ret float [[CALL]]
1130
1130
;
1131
1131
entry:
@@ -1420,7 +1420,7 @@ entry:
1420
1420
define float @test_rootn_f32__y_0_nobuiltin (float %x ) {
1421
1421
; CHECK-LABEL: define float @test_rootn_f32__y_0_nobuiltin(
1422
1422
; CHECK-SAME: float [[X:%.*]]) {
1423
- ; CHECK-NEXT: [[CALL:%.*]] = tail call float @_Z5rootnfi(float [[X]], i32 0) #[[ATTR2 ]]
1423
+ ; CHECK-NEXT: [[CALL:%.*]] = tail call float @_Z5rootnfi(float [[X]], i32 0) #[[ATTR3 ]]
1424
1424
; CHECK-NEXT: ret float [[CALL]]
1425
1425
;
1426
1426
%call = tail call float @_Z5rootnfi (float %x , i32 0 ) #0
@@ -1430,7 +1430,7 @@ define float @test_rootn_f32__y_0_nobuiltin(float %x) {
1430
1430
define float @test_rootn_f32__y_1_nobuiltin (float %x ) {
1431
1431
; CHECK-LABEL: define float @test_rootn_f32__y_1_nobuiltin(
1432
1432
; CHECK-SAME: float [[X:%.*]]) {
1433
- ; CHECK-NEXT: [[CALL:%.*]] = tail call float @_Z5rootnfi(float [[X]], i32 1) #[[ATTR2 ]]
1433
+ ; CHECK-NEXT: [[CALL:%.*]] = tail call float @_Z5rootnfi(float [[X]], i32 1) #[[ATTR3 ]]
1434
1434
; CHECK-NEXT: ret float [[CALL]]
1435
1435
;
1436
1436
%call = tail call float @_Z5rootnfi (float %x , i32 1 ) #0
@@ -1440,7 +1440,7 @@ define float @test_rootn_f32__y_1_nobuiltin(float %x) {
1440
1440
define float @test_rootn_f32__y_2_nobuiltin (float %x ) {
1441
1441
; CHECK-LABEL: define float @test_rootn_f32__y_2_nobuiltin(
1442
1442
; CHECK-SAME: float [[X:%.*]]) {
1443
- ; CHECK-NEXT: [[CALL:%.*]] = tail call float @_Z5rootnfi(float [[X]], i32 2) #[[ATTR2 ]]
1443
+ ; CHECK-NEXT: [[CALL:%.*]] = tail call float @_Z5rootnfi(float [[X]], i32 2) #[[ATTR3 ]]
1444
1444
; CHECK-NEXT: ret float [[CALL]]
1445
1445
;
1446
1446
%call = tail call float @_Z5rootnfi (float %x , i32 2 ) #0
@@ -1450,7 +1450,7 @@ define float @test_rootn_f32__y_2_nobuiltin(float %x) {
1450
1450
define float @test_rootn_f32__y_3_nobuiltin (float %x ) {
1451
1451
; CHECK-LABEL: define float @test_rootn_f32__y_3_nobuiltin(
1452
1452
; CHECK-SAME: float [[X:%.*]]) {
1453
- ; CHECK-NEXT: [[CALL:%.*]] = tail call float @_Z5rootnfi(float [[X]], i32 3) #[[ATTR2 ]]
1453
+ ; CHECK-NEXT: [[CALL:%.*]] = tail call float @_Z5rootnfi(float [[X]], i32 3) #[[ATTR3 ]]
1454
1454
; CHECK-NEXT: ret float [[CALL]]
1455
1455
;
1456
1456
%call = tail call float @_Z5rootnfi (float %x , i32 3 ) #0
@@ -1460,7 +1460,7 @@ define float @test_rootn_f32__y_3_nobuiltin(float %x) {
1460
1460
define float @test_rootn_f32__y_neg1_nobuiltin (float %x ) {
1461
1461
; CHECK-LABEL: define float @test_rootn_f32__y_neg1_nobuiltin(
1462
1462
; CHECK-SAME: float [[X:%.*]]) {
1463
- ; CHECK-NEXT: [[CALL:%.*]] = tail call float @_Z5rootnfi(float [[X]], i32 -1) #[[ATTR2 ]]
1463
+ ; CHECK-NEXT: [[CALL:%.*]] = tail call float @_Z5rootnfi(float [[X]], i32 -1) #[[ATTR3 ]]
1464
1464
; CHECK-NEXT: ret float [[CALL]]
1465
1465
;
1466
1466
%call = tail call float @_Z5rootnfi (float %x , i32 -1 ) #0
@@ -1470,7 +1470,7 @@ define float @test_rootn_f32__y_neg1_nobuiltin(float %x) {
1470
1470
define float @test_rootn_f32__y_neg2_nobuiltin (float %x ) {
1471
1471
; CHECK-LABEL: define float @test_rootn_f32__y_neg2_nobuiltin(
1472
1472
; CHECK-SAME: float [[X:%.*]]) {
1473
- ; CHECK-NEXT: [[CALL:%.*]] = tail call float @_Z5rootnfi(float [[X]], i32 -2) #[[ATTR2 ]]
1473
+ ; CHECK-NEXT: [[CALL:%.*]] = tail call float @_Z5rootnfi(float [[X]], i32 -2) #[[ATTR3 ]]
1474
1474
; CHECK-NEXT: ret float [[CALL]]
1475
1475
;
1476
1476
%call = tail call float @_Z5rootnfi (float %x , i32 -2 ) #0
@@ -1485,6 +1485,10 @@ attributes #2 = { noinline }
1485
1485
!0 = !{float 3 .0 }
1486
1486
;.
1487
1487
; CHECK: attributes #[[ATTR0]] = { strictfp }
1488
- ; CHECK: attributes #[[ATTR1:[0-9]+]] = { nounwind memory(read) }
1489
- ; CHECK: attributes #[[ATTR2]] = { nobuiltin }
1488
+ ; CHECK: attributes #[[ATTR1:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
1489
+ ; CHECK: attributes #[[ATTR2:[0-9]+]] = { nounwind memory(read) }
1490
+ ; CHECK: attributes #[[ATTR3]] = { nobuiltin }
1491
+ ;.
1492
+ ; CHECK: [[META0]] = !{float 2.000000e+00}
1493
+ ; CHECK: [[META1]] = !{float 3.000000e+00}
1490
1494
;.
0 commit comments