@@ -9,7 +9,7 @@ define float @test_inf_const(float %f) {
9
9
; CHECK-NEXT: [[ISINF:%.*]] = fcmp oeq float [[ABS]], 0x7FF0000000000000
10
10
; CHECK-NEXT: br i1 [[ISINF]], label [[RETURN:%.*]], label [[IF_END:%.*]]
11
11
; 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
13
13
; CHECK-NEXT: ret float [[CALL]]
14
14
; CHECK: return:
15
15
; CHECK-NEXT: ret float 0.000000e+00
@@ -34,7 +34,7 @@ define float @test_const_zero(float %f) {
34
34
; CHECK-NEXT: [[ISZERO:%.*]] = fcmp oeq float [[F]], 0.000000e+00
35
35
; CHECK-NEXT: br i1 [[ISZERO]], label [[RETURN:%.*]], label [[IF_END:%.*]]
36
36
; 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]]
38
38
; CHECK-NEXT: ret float [[CALL]]
39
39
; CHECK: return:
40
40
; CHECK-NEXT: ret float 0.000000e+00
@@ -67,19 +67,19 @@ define float @test_noinf_nozero(float nofpclass(inf) %f, float nofpclass(zero) %
67
67
; CHECK-LABEL: define float @test_noinf_nozero(
68
68
; CHECK-SAME: float nofpclass(inf) [[F:%.*]], float nofpclass(zero) [[G:%.*]]) {
69
69
; 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]]
71
71
; CHECK-NEXT: ret float [[CALL]]
72
72
;
73
73
entry:
74
- %call = tail call nnan float @fmodf (float %f , float %g )
74
+ %call = tail call float @fmodf (float %f , float %g )
75
75
ret float %call
76
76
}
77
77
78
78
define double @test_double (double nofpclass(inf) %f , double nofpclass(zero) %g ) {
79
79
; CHECK-LABEL: define double @test_double(
80
80
; CHECK-SAME: double nofpclass(inf) [[F:%.*]], double nofpclass(zero) [[G:%.*]]) {
81
81
; CHECK-NEXT: entry:
82
- ; CHECK-NEXT: [[CALL:%.*]] = tail call double @fmod(double [[F]], double [[G]])
82
+ ; CHECK-NEXT: [[CALL:%.*]] = frem nnan double [[F]], [[G]]
83
83
; CHECK-NEXT: ret double [[CALL]]
84
84
;
85
85
entry:
@@ -91,7 +91,7 @@ define fp128 @test_fp128(fp128 nofpclass(inf) %f, fp128 nofpclass(zero) %g) {
91
91
; CHECK-LABEL: define fp128 @test_fp128(
92
92
; CHECK-SAME: fp128 nofpclass(inf) [[F:%.*]], fp128 nofpclass(zero) [[G:%.*]]) {
93
93
; CHECK-NEXT: entry:
94
- ; CHECK-NEXT: [[CALL:%.*]] = tail call fp128 @fmodl(fp128 [[F]], fp128 [[G]])
94
+ ; CHECK-NEXT: [[CALL:%.*]] = frem nnan fp128 [[F]], [[G]]
95
95
; CHECK-NEXT: ret fp128 [[CALL]]
96
96
;
97
97
entry:
@@ -103,19 +103,31 @@ define float @test_noinf_nozero_dazpreservesign(float nofpclass(inf) %f, float n
103
103
; CHECK-LABEL: define float @test_noinf_nozero_dazpreservesign(
104
104
; CHECK-SAME: float nofpclass(inf) [[F:%.*]], float nofpclass(zero) [[G:%.*]]) #[[ATTR0:[0-9]+]] {
105
105
; 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]])
107
107
; CHECK-NEXT: ret float [[CALL]]
108
108
;
109
109
entry:
110
- %call = tail call nnan float @fmodf (float %f , float %g )
110
+ %call = tail call float @fmodf (float %f , float %g )
111
111
ret float %call
112
112
}
113
113
114
114
define float @test_noinf_nozero_dazdynamic (float nofpclass(inf) %f , float nofpclass(zero) %g ) "denormal-fp-math" ="dynamic,dynamic" {
115
115
; CHECK-LABEL: define float @test_noinf_nozero_dazdynamic(
116
116
; CHECK-SAME: float nofpclass(inf) [[F:%.*]], float nofpclass(zero) [[G:%.*]]) #[[ATTR1:[0-9]+]] {
117
117
; 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]]
119
131
; CHECK-NEXT: ret float [[CALL]]
120
132
;
121
133
entry:
0 commit comments