@@ -2673,6 +2673,46 @@ define float @test_pow_f32__y_known_integral_roundeven(float %x, float nofpclass
2673
2673
ret float %pow
2674
2674
}
2675
2675
2676
+ define float @test_pow_f32_known_integral_undef (float %x ) {
2677
+ ; CHECK-LABEL: define float @test_pow_f32_known_integral_undef
2678
+ ; CHECK-SAME: (float [[X:%.*]]) {
2679
+ ; CHECK-NEXT: [[POW:%.*]] = tail call float @_Z3powff(float [[X]], float undef)
2680
+ ; CHECK-NEXT: ret float [[POW]]
2681
+ ;
2682
+ %pow = tail call float @_Z3powff (float %x , float undef )
2683
+ ret float %pow
2684
+ }
2685
+
2686
+ define float @test_pow_f32_known_integral_poison (float %x ) {
2687
+ ; CHECK-LABEL: define float @test_pow_f32_known_integral_poison
2688
+ ; CHECK-SAME: (float [[X:%.*]]) {
2689
+ ; CHECK-NEXT: [[POW:%.*]] = tail call float @_Z4pownfi(float [[X]], i32 poison)
2690
+ ; CHECK-NEXT: ret float [[POW]]
2691
+ ;
2692
+ %pow = tail call float @_Z3powff (float %x , float poison)
2693
+ ret float %pow
2694
+ }
2695
+
2696
+ define <2 x float > @test_pow_v2f32_known_integral_constant_vector_undef_elt (<2 x float > %x ) {
2697
+ ; CHECK-LABEL: define <2 x float> @test_pow_v2f32_known_integral_constant_vector_undef_elt
2698
+ ; CHECK-SAME: (<2 x float> [[X:%.*]]) {
2699
+ ; CHECK-NEXT: [[POW:%.*]] = tail call <2 x float> @_Z3powDv2_fS_(<2 x float> [[X]], <2 x float> <float 4.000000e+00, float undef>)
2700
+ ; CHECK-NEXT: ret <2 x float> [[POW]]
2701
+ ;
2702
+ %pow = tail call <2 x float > @_Z3powDv2_fS_ (<2 x float > %x , <2 x float > <float 4 .0 , float undef >)
2703
+ ret <2 x float > %pow
2704
+ }
2705
+
2706
+ define <2 x float > @test_pow_v2f32_known_integral_constant_vector_poison_elt (<2 x float > %x ) {
2707
+ ; CHECK-LABEL: define <2 x float> @test_pow_v2f32_known_integral_constant_vector_poison_elt
2708
+ ; CHECK-SAME: (<2 x float> [[X:%.*]]) {
2709
+ ; CHECK-NEXT: [[POW:%.*]] = tail call <2 x float> @_Z4pownDv2_fDv2_i(<2 x float> [[X]], <2 x i32> <i32 4, i32 poison>)
2710
+ ; CHECK-NEXT: ret <2 x float> [[POW]]
2711
+ ;
2712
+ %pow = tail call <2 x float > @_Z3powDv2_fS_ (<2 x float > %x , <2 x float > <float 4 .0 , float poison>)
2713
+ ret <2 x float > %pow
2714
+ }
2715
+
2676
2716
attributes #0 = { minsize }
2677
2717
attributes #1 = { noinline }
2678
2718
attributes #2 = { strictfp }
0 commit comments