[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

`