@@ -9,7 +9,7 @@ define float @test_inf_const(float %f) {
99; CHECK-NEXT: [[ISINF:%.*]] = fcmp oeq float [[ABS]], 0x7FF0000000000000
1010; CHECK-NEXT: br i1 [[ISINF]], label [[RETURN:%.*]], label [[IF_END:%.*]]
1111; CHECK: if.end:
12- ; CHECK-NEXT: [[CALL:%.*]] = tail call float @fmodf(float [[F]], float 2.000000e+00)
12+ ; CHECK-NEXT: [[CALL:%.*]] = frem nnan float [[F]], 2.000000e+00
1313; CHECK-NEXT: ret float [[CALL]]
1414; CHECK: return:
1515; CHECK-NEXT: ret float 0.000000e+00
@@ -34,7 +34,7 @@ define float @test_const_zero(float %f) {
3434; CHECK-NEXT: [[ISZERO:%.*]] = fcmp oeq float [[F]], 0.000000e+00
3535; CHECK-NEXT: br i1 [[ISZERO]], label [[RETURN:%.*]], label [[IF_END:%.*]]
3636; CHECK: if.end:
37- ; CHECK-NEXT: [[CALL:%.*]] = tail call float @fmodf(float 2.000000e+00, float [[F]])
37+ ; CHECK-NEXT: [[CALL:%.*]] = frem nnan float 2.000000e+00, [[F]]
3838; CHECK-NEXT: ret float [[CALL]]
3939; CHECK: return:
4040; CHECK-NEXT: ret float 0.000000e+00
@@ -67,19 +67,19 @@ define float @test_noinf_nozero(float nofpclass(inf) %f, float nofpclass(zero) %
6767; CHECK-LABEL: define float @test_noinf_nozero(
6868; CHECK-SAME: float nofpclass(inf) [[F:%.*]], float nofpclass(zero) [[G:%.*]]) {
6969; CHECK-NEXT: entry:
70- ; CHECK-NEXT: [[CALL:%.*]] = tail call nnan float @fmodf(float [[F]], float [[G]])
70+ ; CHECK-NEXT: [[CALL:%.*]] = frem nnan float [[F]], [[G]]
7171; CHECK-NEXT: ret float [[CALL]]
7272;
7373entry:
74- %call = tail call nnan float @fmodf (float %f , float %g )
74+ %call = tail call float @fmodf (float %f , float %g )
7575 ret float %call
7676}
7777
7878define double @test_double (double nofpclass(inf) %f , double nofpclass(zero) %g ) {
7979; CHECK-LABEL: define double @test_double(
8080; CHECK-SAME: double nofpclass(inf) [[F:%.*]], double nofpclass(zero) [[G:%.*]]) {
8181; CHECK-NEXT: entry:
82- ; CHECK-NEXT: [[CALL:%.*]] = tail call double @fmod(double [[F]], double [[G]])
82+ ; CHECK-NEXT: [[CALL:%.*]] = frem nnan double [[F]], [[G]]
8383; CHECK-NEXT: ret double [[CALL]]
8484;
8585entry:
@@ -91,7 +91,7 @@ define fp128 @test_fp128(fp128 nofpclass(inf) %f, fp128 nofpclass(zero) %g) {
9191; CHECK-LABEL: define fp128 @test_fp128(
9292; CHECK-SAME: fp128 nofpclass(inf) [[F:%.*]], fp128 nofpclass(zero) [[G:%.*]]) {
9393; CHECK-NEXT: entry:
94- ; CHECK-NEXT: [[CALL:%.*]] = tail call fp128 @fmodl(fp128 [[F]], fp128 [[G]])
94+ ; CHECK-NEXT: [[CALL:%.*]] = frem nnan fp128 [[F]], [[G]]
9595; CHECK-NEXT: ret fp128 [[CALL]]
9696;
9797entry:
@@ -103,19 +103,31 @@ define float @test_noinf_nozero_dazpreservesign(float nofpclass(inf) %f, float n
103103; CHECK-LABEL: define float @test_noinf_nozero_dazpreservesign(
104104; CHECK-SAME: float nofpclass(inf) [[F:%.*]], float nofpclass(zero) [[G:%.*]]) #[[ATTR0:[0-9]+]] {
105105; CHECK-NEXT: entry:
106- ; CHECK-NEXT: [[CALL:%.*]] = tail call nnan float @fmodf(float [[F]], float [[G]])
106+ ; CHECK-NEXT: [[CALL:%.*]] = tail call float @fmodf(float [[F]], float [[G]])
107107; CHECK-NEXT: ret float [[CALL]]
108108;
109109entry:
110- %call = tail call nnan float @fmodf (float %f , float %g )
110+ %call = tail call float @fmodf (float %f , float %g )
111111 ret float %call
112112}
113113
114114define float @test_noinf_nozero_dazdynamic (float nofpclass(inf) %f , float nofpclass(zero) %g ) "denormal-fp-math" ="dynamic,dynamic" {
115115; CHECK-LABEL: define float @test_noinf_nozero_dazdynamic(
116116; CHECK-SAME: float nofpclass(inf) [[F:%.*]], float nofpclass(zero) [[G:%.*]]) #[[ATTR1:[0-9]+]] {
117117; CHECK-NEXT: entry:
118- ; CHECK-NEXT: [[CALL:%.*]] = tail call nnan float @fmodf(float [[F]], float [[G]])
118+ ; CHECK-NEXT: [[CALL:%.*]] = tail call float @fmodf(float [[F]], float [[G]])
119+ ; CHECK-NEXT: ret float [[CALL]]
120+ ;
121+ entry:
122+ %call = tail call float @fmodf (float %f , float %g )
123+ ret float %call
124+ }
125+
126+ define float @test_nnan (float %f , float %g ) {
127+ ; CHECK-LABEL: define float @test_nnan(
128+ ; CHECK-SAME: float [[F:%.*]], float [[G:%.*]]) {
129+ ; CHECK-NEXT: entry:
130+ ; CHECK-NEXT: [[CALL:%.*]] = frem nnan float [[F]], [[G]]
119131; CHECK-NEXT: ret float [[CALL]]
120132;
121133entry:
0 commit comments