mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-28 07:05:03 +00:00
Transform float scalar_to_vector into subreg accesses.
No idea whether this is profitable or not. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80245 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
bf16f1ddc4
commit
fdf189ac97
@ -78,7 +78,7 @@ void ARMTargetLowering::addTypeForNEON(EVT VT, EVT PromotedLdStVT,
|
||||
setOperationAction(ISD::EXTRACT_VECTOR_ELT, VT.getSimpleVT(), Custom);
|
||||
setOperationAction(ISD::BUILD_VECTOR, VT.getSimpleVT(), Custom);
|
||||
setOperationAction(ISD::VECTOR_SHUFFLE, VT.getSimpleVT(), Custom);
|
||||
setOperationAction(ISD::SCALAR_TO_VECTOR, VT.getSimpleVT(), Expand);
|
||||
setOperationAction(ISD::SCALAR_TO_VECTOR, VT.getSimpleVT(), Custom);
|
||||
setOperationAction(ISD::CONCAT_VECTORS, VT.getSimpleVT(), Custom);
|
||||
setOperationAction(ISD::EXTRACT_SUBVECTOR, VT.getSimpleVT(), Expand);
|
||||
if (VT.isInteger()) {
|
||||
@ -2706,6 +2706,12 @@ static SDValue LowerVECTOR_SHUFFLE(SDValue Op, SelectionDAG &DAG) {
|
||||
}
|
||||
|
||||
static SDValue LowerSCALAR_TO_VECTOR(SDValue Op, SelectionDAG &DAG) {
|
||||
EVT VT = Op.getValueType();
|
||||
EVT EltVT = VT.getVectorElementType();
|
||||
|
||||
if (EltVT.isInteger())
|
||||
return SDValue();
|
||||
|
||||
return Op;
|
||||
}
|
||||
|
||||
|
@ -1726,6 +1726,13 @@ def : Pat<(v4f32 (insertelt QPR:$src1, SPR:$src2, imm:$src3)),
|
||||
def : Pat<(v2f64 (insertelt QPR:$src1, DPR:$src2, imm:$src3)),
|
||||
(INSERT_SUBREG QPR:$src1, DPR:$src2, (DSubReg_f64_reg imm:$src3))>;
|
||||
|
||||
def : Pat<(v2f32 (scalar_to_vector SPR:$src)),
|
||||
(INSERT_SUBREG (v2f32 (IMPLICIT_DEF)), SPR:$src, arm_ssubreg_0)>;
|
||||
def : Pat<(v2f64 (scalar_to_vector DPR:$src)),
|
||||
(INSERT_SUBREG (v2f64 (IMPLICIT_DEF)), DPR:$src, arm_dsubreg_0)>;
|
||||
def : Pat<(v4f32 (scalar_to_vector SPR:$src)),
|
||||
(INSERT_SUBREG (v4f32 (IMPLICIT_DEF)), SPR:$src, arm_ssubreg_0)>;
|
||||
|
||||
// VDUP : Vector Duplicate (from ARM core register to all elements)
|
||||
|
||||
class VDUPD<bits<8> opcod1, bits<2> opcod3, string asmSize, ValueType Ty>
|
||||
|
Loading…
Reference in New Issue
Block a user