forked from OSchip/llvm-project
[X86] shouldScalarizeBinop - never scalarize target opcodes.
We have (almost) no target opcodes that have scalar/vector equivalents - for now assume we can't scalarize them (we can add exceptions if we need to). llvm-svn: 364429
This commit is contained in:
parent
5c94dd76d7
commit
24f96a0eee
|
@ -4899,15 +4899,22 @@ bool X86TargetLowering::isExtractSubvectorCheap(EVT ResVT, EVT SrcVT,
|
|||
}
|
||||
|
||||
bool X86TargetLowering::shouldScalarizeBinop(SDValue VecOp) const {
|
||||
unsigned Opc = VecOp.getOpcode();
|
||||
|
||||
// Assume target opcodes can't be scalarized.
|
||||
// TODO - do we have any exceptions?
|
||||
if (Opc >= ISD::BUILTIN_OP_END)
|
||||
return false;
|
||||
|
||||
// If the vector op is not supported, try to convert to scalar.
|
||||
EVT VecVT = VecOp.getValueType();
|
||||
if (!isOperationLegalOrCustomOrPromote(VecOp.getOpcode(), VecVT))
|
||||
if (!isOperationLegalOrCustomOrPromote(Opc, VecVT))
|
||||
return true;
|
||||
|
||||
// If the vector op is supported, but the scalar op is not, the transform may
|
||||
// not be worthwhile.
|
||||
EVT ScalarVT = VecVT.getScalarType();
|
||||
return isOperationLegalOrCustomOrPromote(VecOp.getOpcode(), ScalarVT);
|
||||
return isOperationLegalOrCustomOrPromote(Opc, ScalarVT);
|
||||
}
|
||||
|
||||
bool X86TargetLowering::shouldFormOverflowOp(unsigned Opcode, EVT VT) const {
|
||||
|
|
Loading…
Reference in New Issue