@@ -2673,6 +2673,46 @@ define float @test_pow_f32__y_known_integral_roundeven(float %x, float nofpclass
26732673 ret float %pow
26742674}
26752675
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+
26762716attributes #0 = { minsize }
26772717attributes #1 = { noinline }
26782718attributes #2 = { strictfp }
0 commit comments