We've been marking VPT incompatible instructions as invalid for tail
predication too, though this may not strictly be true. VPT are
incompatible and, unless its the first predicate def in a loop,
they shouldn't be compatible for tail predication either.
Differential Revision: https://reviews.llvm.org/D71410
let Inst{4} = 0b0;
let Defs = [VPR];
- let validForTailPredication = 1;
}
class MVE_VPTt1<string suffix, bits<2> size, dag iops>
let Inst{5} = Qm{3};
let Inst{3-1} = Qm{2-0};
let Inst{0} = fc{1};
- let validForTailPredication = 1;
}
class MVE_VPTt1i<string suffix, bits<2> size>
let Defs = [VPR];
let Predicates = [HasMVEFloat];
- let validForTailPredication = 1;
}
class MVE_VPTft1<string suffix, bit size>
case MVE_VPNOT:
case MVE_VPSEL:
case MVE_VPST:
- case MVE_VPTv16i8:
- case MVE_VPTv16i8r:
- case MVE_VPTv16s8:
- case MVE_VPTv16s8r:
- case MVE_VPTv16u8:
- case MVE_VPTv16u8r:
- case MVE_VPTv4f32:
- case MVE_VPTv4f32r:
- case MVE_VPTv4i32:
- case MVE_VPTv4i32r:
- case MVE_VPTv4s32:
- case MVE_VPTv4s32r:
- case MVE_VPTv4u32:
- case MVE_VPTv4u32r:
- case MVE_VPTv8f16:
- case MVE_VPTv8f16r:
- case MVE_VPTv8i16:
- case MVE_VPTv8i16r:
- case MVE_VPTv8s16:
- case MVE_VPTv8s16r:
- case MVE_VPTv8u16:
- case MVE_VPTv8u16r:
case MVE_VQABSs16:
case MVE_VQABSs32:
case MVE_VQABSs8: