Skip to content

Commit 426ad99

Browse files
authored
[PowerPC] Forbid f128 SELECT_CC optimized into fsel (#71497)
1 parent 0723d24 commit 426ad99

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

llvm/lib/Target/PowerPC/PPCISelLowering.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8081,7 +8081,8 @@ SDValue PPCTargetLowering::LowerSELECT_CC(SDValue Op, SelectionDAG &DAG) const {
80818081
// For more information, see section F.3 of the 2.06 ISA specification.
80828082
// With ISA 3.0
80838083
if ((!DAG.getTarget().Options.NoInfsFPMath && !Flags.hasNoInfs()) ||
8084-
(!DAG.getTarget().Options.NoNaNsFPMath && !Flags.hasNoNaNs()))
8084+
(!DAG.getTarget().Options.NoNaNsFPMath && !Flags.hasNoNaNs()) ||
8085+
ResVT == MVT::f128)
80858086
return Op;
80868087

80878088
// If the RHS of the comparison is a 0.0, we don't need to do the

llvm/test/CodeGen/PowerPC/scalar-min-max-p10.ll

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,3 +70,20 @@ entry:
7070
%0 = tail call fast fp128 @llvm.minnum.f128(fp128 %a, fp128 %b)
7171
ret fp128 %0
7272
}
73+
74+
define fp128 @olt_sel(fp128 %a, fp128 %b) {
75+
; CHECK-LABEL: olt_sel:
76+
; CHECK: # %bb.0: # %entry
77+
; CHECK-NEXT: plxv vs36, .LCPI6_0@PCREL(0), 1
78+
; CHECK-NEXT: xscmpuqp cr0, v2, v4
79+
; CHECK-NEXT: blt cr0, .LBB6_2
80+
; CHECK-NEXT: # %bb.1: # %entry
81+
; CHECK-NEXT: vmr v3, v4
82+
; CHECK-NEXT: .LBB6_2: # %entry
83+
; CHECK-NEXT: vmr v2, v3
84+
; CHECK-NEXT: blr
85+
entry:
86+
%0 = fcmp fast olt fp128 %a, 0xL00000000000000000000000000000000
87+
%1 = select i1 %0, fp128 %b, fp128 0xL00000000000000000000000000000000
88+
ret fp128 %1
89+
}

0 commit comments

Comments
 (0)