Skip to content

Commit 007e382

Browse files
author
git apple-llvm automerger
committed
Merge commit 'ad87f244b422' from llvm.org/master into apple/master
2 parents 34fd318 + ad87f24 commit 007e382

File tree

1 file changed

+36
-8
lines changed

1 file changed

+36
-8
lines changed

llvm/test/Transforms/InstSimplify/fcmp-select.ll

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -126,29 +126,29 @@ define float @oeq_zero_swapped_nsz(float %x) {
126126
ret float %cond
127127
}
128128

129-
; X != 0.0 ? X : -0.0 --> X
129+
; X != 0.0 ? X : 0.0 --> X
130130

131131
define double @une_zero_nsz(double %x) {
132132
; CHECK-LABEL: @une_zero_nsz(
133133
; CHECK-NEXT: [[CMP:%.*]] = fcmp une double [[X:%.*]], 0.000000e+00
134-
; CHECK-NEXT: [[COND:%.*]] = select ninf nsz i1 [[CMP]], double [[X]], double -0.000000e+00
134+
; CHECK-NEXT: [[COND:%.*]] = select ninf nsz i1 [[CMP]], double [[X]], double 0.000000e+00
135135
; CHECK-NEXT: ret double [[COND]]
136136
;
137137
%cmp = fcmp une double %x, 0.0
138-
%cond = select nsz ninf i1 %cmp, double %x, double -0.0
138+
%cond = select nsz ninf i1 %cmp, double %x, double 0.0
139139
ret double %cond
140140
}
141141

142-
; X != 0.0 ? -0.0 : X --> 0.0
142+
; X != 0.0 ? 0.0 : X --> 0.0
143143

144144
define <2 x double> @une_zero_swapped_nsz(<2 x double> %x) {
145145
; CHECK-LABEL: @une_zero_swapped_nsz(
146-
; CHECK-NEXT: [[CMP:%.*]] = fcmp une <2 x double> [[X:%.*]], <double -0.000000e+00, double 0.000000e+00>
147-
; CHECK-NEXT: [[COND:%.*]] = select nsz <2 x i1> [[CMP]], <2 x double> <double 0.000000e+00, double -0.000000e+00>, <2 x double> [[X]]
146+
; CHECK-NEXT: [[CMP:%.*]] = fcmp une <2 x double> [[X:%.*]], zeroinitializer
147+
; CHECK-NEXT: [[COND:%.*]] = select nsz <2 x i1> [[CMP]], <2 x double> zeroinitializer, <2 x double> [[X]]
148148
; CHECK-NEXT: ret <2 x double> [[COND]]
149149
;
150-
%cmp = fcmp une <2 x double> %x, <double -0.0, double 0.0>
151-
%cond = select nsz <2 x i1> %cmp, <2 x double> <double 0.0, double -0.0>, <2 x double> %x
150+
%cmp = fcmp une <2 x double> %x, <double 0.0, double 0.0>
151+
%cond = select nsz <2 x i1> %cmp, <2 x double> <double 0.0, double 0.0>, <2 x double> %x
152152
ret <2 x double> %cond
153153
}
154154

@@ -204,6 +204,34 @@ define <2 x double> @une_swapped_nsz(<2 x double> %x, <2 x double> %y) {
204204
ret <2 x double> %cond
205205
}
206206

207+
; Harder - mismatched zero constants (not typical due to canonicalization):
208+
; X != 0.0 ? X : -0.0 --> X
209+
210+
define double @une_zero_mismatch_nsz(double %x) {
211+
; CHECK-LABEL: @une_zero_mismatch_nsz(
212+
; CHECK-NEXT: [[CMP:%.*]] = fcmp une double [[X:%.*]], 0.000000e+00
213+
; CHECK-NEXT: [[COND:%.*]] = select ninf nsz i1 [[CMP]], double [[X]], double -0.000000e+00
214+
; CHECK-NEXT: ret double [[COND]]
215+
;
216+
%cmp = fcmp une double %x, 0.0
217+
%cond = select nsz ninf i1 %cmp, double %x, double -0.0
218+
ret double %cond
219+
}
220+
221+
; Even harder - mismatched vector zero constants (not typical due to canonicalization):
222+
; X != 0.0 ? -0.0 : X --> 0.0
223+
224+
define <2 x double> @une_zero_mismatch_swapped_nsz(<2 x double> %x) {
225+
; CHECK-LABEL: @une_zero_mismatch_swapped_nsz(
226+
; CHECK-NEXT: [[CMP:%.*]] = fcmp une <2 x double> [[X:%.*]], <double -0.000000e+00, double 0.000000e+00>
227+
; CHECK-NEXT: [[COND:%.*]] = select nsz <2 x i1> [[CMP]], <2 x double> <double 0.000000e+00, double -0.000000e+00>, <2 x double> [[X]]
228+
; CHECK-NEXT: ret <2 x double> [[COND]]
229+
;
230+
%cmp = fcmp une <2 x double> %x, <double -0.0, double 0.0>
231+
%cond = select nsz <2 x i1> %cmp, <2 x double> <double 0.0, double -0.0>, <2 x double> %x
232+
ret <2 x double> %cond
233+
}
234+
207235
define double @une_could_be_negzero(double %x, double %y) {
208236
; CHECK-LABEL: @une_could_be_negzero(
209237
; CHECK-NEXT: [[CMP:%.*]] = fcmp une double [[X:%.*]], [[Y:%.*]]

0 commit comments

Comments
 (0)