@@ -213,15 +213,15 @@ define double @fmul_nnan_ninf_nneg_n0.0_commute(i127 %x) {
213213
214214define float @fmul_ninf_nnan_mul_zero_nsz (float nofpclass(inf nan) %f ) {
215215; CHECK-LABEL: @fmul_ninf_nnan_mul_zero_nsz(
216- ; CHECK-NEXT: ret float 0.000000e+00
216+ ; CHECK-NEXT: ret float 0.000000e+00
217217;
218218 %r = fmul nsz float %f , 0 .0
219219 ret float %r
220220}
221221
222222define float @fmul_ninf_nnan_mul_nzero_nsz (float nofpclass(inf nan) %f ) {
223223; CHECK-LABEL: @fmul_ninf_nnan_mul_nzero_nsz(
224- ; CHECK-NEXT: ret float 0.000000e+00
224+ ; CHECK-NEXT: ret float 0.000000e+00
225225;
226226 %r = fmul nsz float %f , -0 .0
227227 ret float %r
@@ -1255,3 +1255,19 @@ define i1 @fptrunc_round_unknown_positive(double %unknown) {
12551255 %cmp = fcmp nnan oge float %op , 0 .0
12561256 ret i1 %cmp
12571257}
1258+
1259+ define half @fabs_select_fabs (half noundef %x ) {
1260+ ; CHECK-LABEL: @fabs_select_fabs(
1261+ ; CHECK-NEXT: entry:
1262+ ; CHECK-NEXT: [[ABS1:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])
1263+ ; CHECK-NEXT: [[CMP:%.*]] = fcmp ogt half [[ABS1]], 0xH0000
1264+ ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], half [[X]], half 0xH0000
1265+ ; CHECK-NEXT: ret half [[SEL]]
1266+ ;
1267+ entry:
1268+ %abs1 = call half @llvm.fabs.f16 (half %x )
1269+ %cmp = fcmp ogt half %abs1 , 0xH0000
1270+ %sel = select i1 %cmp , half %x , half 0xH0000
1271+ %abs2 = call half @llvm.fabs.f16 (half %sel )
1272+ ret half %abs2
1273+ }
0 commit comments