@@ -40,6 +40,24 @@ define double @fast_cabs(double %real, double %imag) {
40
40
ret double %call
41
41
}
42
42
43
+ define double @fast_cabs_zero_real (double %imag ) {
44
+ ; CHECK-LABEL: @fast_cabs_zero_real(
45
+ ; CHECK-NEXT: [[CABS:%.*]] = tail call double @llvm.fabs.f64(double [[IMAG:%.*]])
46
+ ; CHECK-NEXT: ret double [[CABS]]
47
+ ;
48
+ %call = tail call double @cabs (double 0 .0 , double %imag )
49
+ ret double %call
50
+ }
51
+
52
+ define double @fast_cabs_zero_real (double %real ) {
53
+ ; CHECK-LABEL: @fast_cabs_zero_real(
54
+ ; CHECK-NEXT: [[CABS:%.*]] = tail call double @llvm.fabs.f64(double [[REAL:%.*]])
55
+ ; CHECK-NEXT: ret double [[CABS]]
56
+ ;
57
+ %call = tail call double @cabs (double %real , 0 .0 )
58
+ ret double %call
59
+ }
60
+
43
61
define float @fast_cabsf (float %real , float %imag ) {
44
62
; CHECK-LABEL: @fast_cabsf(
45
63
; CHECK-NEXT: [[TMP1:%.*]] = fmul fast float [[REAL:%.*]], [[REAL]]
@@ -52,6 +70,24 @@ define float @fast_cabsf(float %real, float %imag) {
52
70
ret float %call
53
71
}
54
72
73
+ define float @fast_cabsf_zero_real (float %imag ) {
74
+ ; CHECK-LABEL: @fast_cabsf_zero_real(
75
+ ; CHECK-NEXT: [[CABS:%.*]] = tail call float @llvm.fabs.f32(float [[IMAG:%.*]])
76
+ ; CHECK-NEXT: ret float [[CABS]]
77
+ ;
78
+ %call = tail call float @cabsf (float 0 .0 , float %imag )
79
+ ret float %call
80
+ }
81
+
82
+ define float @fast_cabsf_zero_real (float %real ) {
83
+ ; CHECK-LABEL: @fast_cabsf_zero_real(
84
+ ; CHECK-NEXT: [[CABS:%.*]] = tail call float @llvm.fabs.f64(float [[REAL:%.*]])
85
+ ; CHECK-NEXT: ret float [[CABS]]
86
+ ;
87
+ %call = tail call float @cabsf (float %real , 0 .0 )
88
+ ret float %call
89
+ }
90
+
55
91
define fp128 @fast_cabsl (fp128 %real , fp128 %imag ) {
56
92
; CHECK-LABEL: @fast_cabsl(
57
93
; CHECK-NEXT: [[TMP1:%.*]] = fmul fast fp128 [[REAL:%.*]], [[REAL]]
@@ -64,6 +100,24 @@ define fp128 @fast_cabsl(fp128 %real, fp128 %imag) {
64
100
ret fp128 %call
65
101
}
66
102
103
+ define fp128 @fast_cabsl_zero_real (fp128 %imag ) {
104
+ ; CHECK-LABEL: @fast_cabsl_zero_real(
105
+ ; CHECK-NEXT: [[CABS:%.*]] = tail call fp128 @llvm.fabsl.f128(fp128 [[IMAG:%.*]])
106
+ ; CHECK-NEXT: ret fp128 [[CABS]]
107
+ ;
108
+ %call = tail call fp128 @cabsl (double 0 .0 , fp128 %imag )
109
+ ret fp128 %call
110
+ }
111
+
112
+ define fp128 @fast_cabsl_zero_real (fp128 %real ) {
113
+ ; CHECK-LABEL: @fast_cabsl_zero_real(
114
+ ; CHECK-NEXT: [[CABS:%.*]] = tail call fp128 @llvm.fabs.f128(fp128 [[REAL:%.*]])
115
+ ; CHECK-NEXT: ret fp128 [[CABS]]
116
+ ;
117
+ %call = tail call fp128 @cabsl (fp128 %real , 0 .0 )
118
+ ret fp128 %call
119
+ }
120
+
67
121
declare double @cabs (double %real , double %imag )
68
122
declare float @cabsf (float %real , float %imag )
69
123
declare fp128 @cabsl (fp128 %real , fp128 %imag )
0 commit comments