@@ -49,6 +49,15 @@ define double @fast_cabs_zero_real(double %imag) {
49
49
ret double %call
50
50
}
51
51
52
+ define double @fast_cabs_neg_zero_real (double %imag ) {
53
+ ; CHECK-LABEL: @fast_cabs_neg_zero_real(
54
+ ; CHECK-NEXT: [[CABS:%.*]] = tail call double @llvm.fabs.f64(double [[IMAG:%.*]])
55
+ ; CHECK-NEXT: ret double [[CABS]]
56
+ ;
57
+ %call = tail call double @cabs (double -0 .0 , double %imag )
58
+ ret double %call
59
+ }
60
+
52
61
define double @fast_cabs_zero_imag (double %real ) {
53
62
; CHECK-LABEL: @fast_cabs_zero_imag(
54
63
; CHECK-NEXT: [[CABS:%.*]] = tail call double @llvm.fabs.f64(double [[REAL:%.*]])
@@ -79,9 +88,18 @@ define float @fast_cabsf_zero_real(float %imag) {
79
88
ret float %call
80
89
}
81
90
91
+ define float @fast_cabsf_neg_zero_real (float %imag ) {
92
+ ; CHECK-LABEL: @fast_cabsf_neg_zero_real(
93
+ ; CHECK-NEXT: [[CABS:%.*]] = tail call float @llvm.fabs.f32(float [[IMAG:%.*]])
94
+ ; CHECK-NEXT: ret float [[CABS]]
95
+ ;
96
+ %call = tail call float @cabsf (float -0 .0 , float %imag )
97
+ ret float %call
98
+ }
99
+
82
100
define float @fast_cabsf_zero_imag (float %real ) {
83
101
; CHECK-LABEL: @fast_cabsf_zero_imag(
84
- ; CHECK-NEXT: [[CABS:%.*]] = tail call float @llvm.fabs.f64 (float [[REAL:%.*]])
102
+ ; CHECK-NEXT: [[CABS:%.*]] = tail call float @llvm.fabs.f32 (float [[REAL:%.*]])
85
103
; CHECK-NEXT: ret float [[CABS]]
86
104
;
87
105
%call = tail call float @cabsf (float %real , float 0 .0 )
@@ -102,10 +120,10 @@ define fp128 @fast_cabsl(fp128 %real, fp128 %imag) {
102
120
103
121
define fp128 @fast_cabsl_zero_real (fp128 %imag ) {
104
122
; CHECK-LABEL: @fast_cabsl_zero_real(
105
- ; CHECK-NEXT: [[CABS:%.*]] = tail call fp128 @llvm.fabsl .f128(fp128 [[IMAG:%.*]])
123
+ ; CHECK-NEXT: [[CABS:%.*]] = tail call fp128 @llvm.fabs .f128(fp128 [[IMAG:%.*]])
106
124
; CHECK-NEXT: ret fp128 [[CABS]]
107
125
;
108
- %call = tail call fp128 @cabsl (double 0 . 0 , fp128 %imag )
126
+ %call = tail call fp128 @cabsl (fp128 0xL00000000000000000000000000000000 , fp128 %imag )
109
127
ret fp128 %call
110
128
}
111
129
@@ -114,7 +132,16 @@ define fp128 @fast_cabsl_zero_imag(fp128 %real) {
114
132
; CHECK-NEXT: [[CABS:%.*]] = tail call fp128 @llvm.fabs.f128(fp128 [[REAL:%.*]])
115
133
; CHECK-NEXT: ret fp128 [[CABS]]
116
134
;
117
- %call = tail call fp128 @cabsl (fp128 %real , fp128 0 .0 )
135
+ %call = tail call fp128 @cabsl (fp128 %real , fp128 0xL00000000000000000000000000000000)
136
+ ret fp128 %call
137
+ }
138
+
139
+ define fp128 @fast_cabsl_neg_zero_imag (fp128 %real ) {
140
+ ; CHECK-LABEL: @fast_cabsl_neg_zero_imag(
141
+ ; CHECK-NEXT: [[CABS:%.*]] = tail call fp128 @llvm.fabs.f128(fp128 [[REAL:%.*]])
142
+ ; CHECK-NEXT: ret fp128 [[CABS]]
143
+ ;
144
+ %call = tail call fp128 @cabsl (fp128 %real , fp128 0xL80000000000000000000000000000000)
118
145
ret fp128 %call
119
146
}
120
147
0 commit comments