mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
The SSE version differences for fmin/fmax are more involved than I thought.
- x87: no min or max. - SSE1: min/max for single precision scalars and vectors. - SSE2: min/max for single and double precision scalars and vectors. - AVX: as SSE2, but also supports the wider ymm vectors. (this is covered by the isTypeLegal check) llvm-svn: 140296
This commit is contained in:
parent
d34925f313
commit
978ef840ac
@ -12568,9 +12568,10 @@ static SDValue PerformSELECTCombine(SDNode *N, SelectionDAG &DAG,
|
||||
// instructions match the semantics of the common C idiom x<y?x:y but not
|
||||
// x<=y?x:y, because of how they handle negative zero (which can be
|
||||
// ignored in unsafe-math mode).
|
||||
if (Subtarget->hasXMM() &&
|
||||
Cond.getOpcode() == ISD::SETCC && VT.isFloatingPoint() &&
|
||||
VT != MVT::f80 && DAG.getTargetLoweringInfo().isTypeLegal(VT)) {
|
||||
if (Cond.getOpcode() == ISD::SETCC && VT.isFloatingPoint() &&
|
||||
VT != MVT::f80 && DAG.getTargetLoweringInfo().isTypeLegal(VT) &&
|
||||
(Subtarget->hasXMMInt() ||
|
||||
(Subtarget->hasSSE1() && VT.getScalarType() == MVT::f32))) {
|
||||
ISD::CondCode CC = cast<CondCodeSDNode>(Cond.getOperand(2))->get();
|
||||
|
||||
unsigned Opcode = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user