mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
[ARM] VECTOR_REG_CAST undef -> undef
Propagate undef through VECTOR_REG_CAST nodes, allowing extra simplification in some patterns.
This commit is contained in:
parent
510612328d
commit
ae50d26182
@ -14020,6 +14020,10 @@ PerformVECTOR_REG_CASTCombine(SDNode *N, TargetLowering::DAGCombinerInfo &DCI,
|
||||
if (ST->isLittle())
|
||||
return DCI.DAG.getNode(ISD::BITCAST, dl, VT, Op);
|
||||
|
||||
// VECTOR_REG_CAST undef -> undef
|
||||
if (Op.isUndef())
|
||||
return DCI.DAG.getUNDEF(VT);
|
||||
|
||||
// VECTOR_REG_CAST(VECTOR_REG_CAST(x)) == VECTOR_REG_CAST(x)
|
||||
if (Op->getOpcode() == ARMISD::VECTOR_REG_CAST) {
|
||||
// If the valuetypes are the same, we can remove the cast entirely.
|
||||
|
@ -355,4 +355,13 @@ entry:
|
||||
ret void
|
||||
}
|
||||
|
||||
define arm_aapcs_vfpcc <8 x half> @undef_one() {
|
||||
; CHECK-LABEL: undef_one:
|
||||
; CHECK: @ %bb.0:
|
||||
; CHECK-NEXT: bx lr
|
||||
%c = call <8 x half> @llvm.arm.mve.vreinterpretq.v8f16.v4f32(<4 x float> undef)
|
||||
ret <8 x half> %c
|
||||
}
|
||||
|
||||
declare <8 x half> @llvm.arm.mve.vreinterpretq.v8f16.v4f32(<4 x float>)
|
||||
declare <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v4i32(<4 x i32>)
|
||||
|
Loading…
x
Reference in New Issue
Block a user