[GISel][AArch64] Allow PatLeafs to be imported in GISel which were pr… · llvm/llvm-project@f3ffee6 (original) (raw)
`@@ -685,23 +685,35 @@ defm trunc_masked_scatter_i32 : masked_gather_scatter;
`
685
685
`def top16Zero: PatLeaf<(i32 GPR32:$src), [{
`
686
686
` return Op.getValueType() == MVT::i32 &&
`
687
687
` CurDAG->MaskedValueIsZero(Op, APInt::getHighBitsSet(32, 16));
`
688
``
`-
}]>;
`
``
688
`+
}]> {
`
``
689
`+
let GISelLeafPredicateCode = [{
`
``
690
`+
return VT && VT->maskedValueIsZero(Reg, APInt::getHighBitsSet(32, 16)); }];
`
``
691
`+
}
`
689
692
``
690
693
`// top32Zero - answer true if the upper 32 bits of $src are 0, false otherwise
`
691
694
`def top32Zero: PatLeaf<(i64 GPR64:$src), [{
`
692
695
` return Op.getValueType() == MVT::i64 &&
`
693
696
` CurDAG->MaskedValueIsZero(Op, APInt::getHighBitsSet(64, 32));
`
694
``
`-
}]>;
`
``
697
`+
}]> {
`
``
698
`+
let GISelLeafPredicateCode = [{
`
``
699
`+
return VT && VT->maskedValueIsZero(Reg, APInt::getHighBitsSet(64, 32)); }];
`
``
700
`+
}
`
695
701
``
696
702
`// topbitsallzero - Return true if all bits except the lowest bit are known zero
`
697
703
`def topbitsallzero32: PatLeaf<(i32 GPR32:$src), [{
`
698
704
` return Op.getValueType() == MVT::i32 &&
`
699
705
` CurDAG->MaskedValueIsZero(Op, APInt::getHighBitsSet(32, 31));
`
700
``
`-
}]>;
`
``
706
`+
}]> {
`
``
707
`+
let GISelLeafPredicateCode = [{
`
``
708
`+
return VT && VT->maskedValueIsZero(Reg, APInt::getHighBitsSet(32, 31)); }];
`
``
709
`+
}
`
701
710
`def topbitsallzero64: PatLeaf<(i64 GPR64:$src), [{
`
702
711
` return Op.getValueType() == MVT::i64 &&
`
703
712
` CurDAG->MaskedValueIsZero(Op, APInt::getHighBitsSet(64, 63));
`
704
``
`-
}]>;
`
``
713
`+
}]> {
`
``
714
`+
let GISelLeafPredicateCode = [{
`
``
715
`+
return VT && VT->maskedValueIsZero(Reg, APInt::getHighBitsSet(64, 63)); }];
`
``
716
`+
}
`
705
717
``
706
718
`// Node definitions.
`
707
719
`// Compare-and-branch
`