ret double %call
}
+define double @pow_ok_denorm_base(double %e) {
+; CHECK-LABEL: @pow_ok_denorm_base(
+; CHECK-NEXT: [[CALL:%.*]] = tail call nnan ninf afn double @pow(double 0xFFFFFFFF, double [[E:%.*]])
+; CHECK-NEXT: ret double [[CALL]]
+;
+ %call = tail call afn nnan ninf double @pow(double 0x00000000FFFFFFFF, double %e)
+ ret double %call
+}
+
define float @powf_ok_base(float %e) {
; CHECK-LABEL: @powf_ok_base(
; CHECK-NEXT: [[MUL:%.*]] = fmul nnan ninf afn float [[E:%.*]], 0xBFE07762{{.*}}
ret float %call
}
+define float @powf_ok_denorm_base(float %e) {
+; CHECK-LABEL: @powf_ok_denorm_base(
+; CHECK-NEXT: [[CALL:%.*]] = tail call nnan ninf afn float @powf(float 0x3780000000000000, float [[E:%.*]])
+; CHECK-NEXT: ret float [[CALL]]
+;
+ %call = tail call afn nnan ninf float @powf(float 0x3780000000000000, float %e)
+ ret float %call
+}
+
; Negative tests
define double @pow_zero_base(double %e) {