mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +00:00
[AArch64 NEON] Fix pattern match failed on FP_ROUND from v1f128 to v1f64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200109 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
65d4adccd6
commit
40bb464283
@ -541,6 +541,7 @@ private:
|
||||
SDValue ScalarizeVecOp_CONCAT_VECTORS(SDNode *N);
|
||||
SDValue ScalarizeVecOp_EXTRACT_VECTOR_ELT(SDNode *N);
|
||||
SDValue ScalarizeVecOp_STORE(StoreSDNode *N, unsigned OpNo);
|
||||
SDValue ScalarizeVecOp_FP_ROUND(SDNode *N, unsigned OpNo);
|
||||
|
||||
//===--------------------------------------------------------------------===//
|
||||
// Vector Splitting Support: LegalizeVectorTypes.cpp
|
||||
|
@ -384,6 +384,9 @@ bool DAGTypeLegalizer::ScalarizeVectorOperand(SDNode *N, unsigned OpNo) {
|
||||
case ISD::STORE:
|
||||
Res = ScalarizeVecOp_STORE(cast<StoreSDNode>(N), OpNo);
|
||||
break;
|
||||
case ISD::FP_ROUND:
|
||||
Res = ScalarizeVecOp_FP_ROUND(N, OpNo);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -467,6 +470,15 @@ SDValue DAGTypeLegalizer::ScalarizeVecOp_STORE(StoreSDNode *N, unsigned OpNo){
|
||||
N->getOriginalAlignment(), N->getTBAAInfo());
|
||||
}
|
||||
|
||||
/// ScalarizeVecOp_FP_ROUND - If the value to round is a vector that needs
|
||||
/// to be scalarized, it must be <1 x ty>. Convert the element instead.
|
||||
SDValue DAGTypeLegalizer::ScalarizeVecOp_FP_ROUND(SDNode *N, unsigned OpNo) {
|
||||
SDValue Elt = GetScalarizedVector(N->getOperand(0));
|
||||
SDValue Res = DAG.getNode(ISD::FP_ROUND, SDLoc(N),
|
||||
N->getValueType(0).getVectorElementType(), Elt,
|
||||
N->getOperand(1));
|
||||
return DAG.getNode(ISD::SCALAR_TO_VECTOR, SDLoc(N), N->getValueType(0), Res);
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Result Vector Splitting
|
||||
|
Loading…
Reference in New Issue
Block a user