@@ -918,16 +918,23 @@ def slice;
918918def encoder;
919919def decoder;
920920
921- /// PointerLikeRegClass - Values that are designed to have pointer width are
922- /// derived from this. TableGen treats the register class as having a symbolic
923- /// type that it doesn't know, and resolves the actual regclass to use by using
924- /// the TargetRegisterInfo::getPointerRegClass() hook at codegen time.
925- ///
926- /// This is deprecated in favor of RegClassByHwMode.
921+ /// PointerLikeRegClass - Pseudoinstruction operands that are designed
922+ /// to have pointer width are derived from this. This should only be
923+ /// used by StandardPseudoInstruction instructions. No target specific
924+ /// instruction should use this.
927925class PointerLikeRegClass<int Kind> {
928926 int RegClassKind = Kind;
929927}
930928
929+ /// ptr_rc definition - Mark this operand as being a pointer value
930+ /// whose register class needs to be defined by the target. Targets
931+ /// should provide instruction definition overrides which substitute
932+ /// the uses of this with the backend defined RegisterClass or
933+ /// RegClassByHwMode to use for pointer virtual registers for a
934+ /// particular opcode (typically by defining a subsitute instruction
935+ /// with RemapPointerOperands).
936+ def ptr_rc : PointerLikeRegClass<0>;
937+
931938/// RegClassByHwMode - Operands that change the register class based
932939/// on the subtarget are derived from this. TableGen
933940/// treats the register class as having a symbolic kind that it
@@ -941,13 +948,6 @@ class RegClassByHwMode<list<HwMode> Modes,
941948 list<RegisterClass> Objects = RegClasses;
942949}
943950
944- /// ptr_rc definition - Mark this operand as being a pointer value whose
945- /// register class is resolved dynamically via a callback to TargetInstrInfo.
946- /// FIXME: We should probably change this to a class which contain a list of
947- /// flags. But currently we have but one flag.
948- // Deprecated, use RegClassByHwMode instead.
949- def ptr_rc : PointerLikeRegClass<0>;
950-
951951/// unknown definition - Mark this operand as being of unknown type, causing
952952/// it to be resolved by inference in the context it is used.
953953class unknown_class;
0 commit comments