mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
Add support for FMA to WidenVectorResult.
llvm-svn: 162893
This commit is contained in:
parent
3bc01e8fa4
commit
e339909311
@ -625,6 +625,7 @@ private:
|
||||
SDValue WidenVecRes_VECTOR_SHUFFLE(ShuffleVectorSDNode *N);
|
||||
SDValue WidenVecRes_VSETCC(SDNode* N);
|
||||
|
||||
SDValue WidenVecRes_Ternary(SDNode *N);
|
||||
SDValue WidenVecRes_Binary(SDNode *N);
|
||||
SDValue WidenVecRes_Convert(SDNode *N);
|
||||
SDValue WidenVecRes_POWI(SDNode *N);
|
||||
|
@ -1366,6 +1366,9 @@ void DAGTypeLegalizer::WidenVectorResult(SDNode *N, unsigned ResNo) {
|
||||
case ISD::FTRUNC:
|
||||
Res = WidenVecRes_Unary(N);
|
||||
break;
|
||||
case ISD::FMA:
|
||||
Res = WidenVecRes_Ternary(N);
|
||||
break;
|
||||
}
|
||||
|
||||
// If Res is null, the sub-method took care of registering the result.
|
||||
@ -1373,6 +1376,16 @@ void DAGTypeLegalizer::WidenVectorResult(SDNode *N, unsigned ResNo) {
|
||||
SetWidenedVector(SDValue(N, ResNo), Res);
|
||||
}
|
||||
|
||||
SDValue DAGTypeLegalizer::WidenVecRes_Ternary(SDNode *N) {
|
||||
// Ternary op widening.
|
||||
DebugLoc dl = N->getDebugLoc();
|
||||
EVT WidenVT = TLI.getTypeToTransformTo(*DAG.getContext(), N->getValueType(0));
|
||||
SDValue InOp1 = GetWidenedVector(N->getOperand(0));
|
||||
SDValue InOp2 = GetWidenedVector(N->getOperand(1));
|
||||
SDValue InOp3 = GetWidenedVector(N->getOperand(2));
|
||||
return DAG.getNode(N->getOpcode(), dl, WidenVT, InOp1, InOp2, InOp3);
|
||||
}
|
||||
|
||||
SDValue DAGTypeLegalizer::WidenVecRes_Binary(SDNode *N) {
|
||||
// Binary op widening.
|
||||
unsigned Opcode = N->getOpcode();
|
||||
|
Loading…
Reference in New Issue
Block a user