Commit c5fffa4d authored by Matt Arsenault's avatar Matt Arsenault Committed by Matt Arsenault
Browse files

GlobalISel: Add observer argument to legalizeIntrinsic

This is passed to legalizeCustom, but not intrinsic. Also remove the
MRI argument, since you can get that from the MachineIRBuilder.

I'm not sure why MachineIRBuilder has a private observer member, and
this is passed separately.
parent 29181e54
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1155,8 +1155,8 @@ public:

  /// Return true if MI is either legal or has been legalized and false
  /// if not legal.
  virtual bool legalizeIntrinsic(MachineInstr &MI, MachineRegisterInfo &MRI,
                                 MachineIRBuilder &MIRBuilder) const;
  virtual bool legalizeIntrinsic(MachineInstr &MI, MachineIRBuilder &MIRBuilder,
                                 GISelChangeObserver &Observer) const;

  /// Return the opcode (SEXT/ZEXT/ANYEXT) that should be performed while
  /// widening a constant of type SmallTy which targets can override.
+2 −2
Original line number Diff line number Diff line
@@ -114,7 +114,7 @@ LegalizerHelper::legalizeInstrStep(MachineInstr &MI) {

  if (MI.getOpcode() == TargetOpcode::G_INTRINSIC ||
      MI.getOpcode() == TargetOpcode::G_INTRINSIC_W_SIDE_EFFECTS)
    return LI.legalizeIntrinsic(MI, MRI, MIRBuilder) ? Legalized
    return LI.legalizeIntrinsic(MI, MIRBuilder, Observer) ? Legalized
                                                          : UnableToLegalize;
  auto Step = LI.getAction(MI, MRI);
  switch (Step.Action) {
+2 −2
Original line number Diff line number Diff line
@@ -682,8 +682,8 @@ LegalizerInfo::findVectorLegalAction(const InstrAspect &Aspect) const {
}

bool LegalizerInfo::legalizeIntrinsic(MachineInstr &MI,
                                      MachineRegisterInfo &MRI,
                                      MachineIRBuilder &MIRBuilder) const {
                                      MachineIRBuilder &MIRBuilder,
                                      GISelChangeObserver &Observer) const {
  return true;
}

+3 −3
Original line number Diff line number Diff line
@@ -640,13 +640,13 @@ bool AArch64LegalizerInfo::legalizeCustom(MachineInstr &MI,
}

bool AArch64LegalizerInfo::legalizeIntrinsic(
    MachineInstr &MI, MachineRegisterInfo &MRI,
    MachineIRBuilder &MIRBuilder) const {
    MachineInstr &MI, MachineIRBuilder &MIRBuilder,
    GISelChangeObserver &Observer) const {
  switch (MI.getIntrinsicID()) {
  case Intrinsic::memcpy:
  case Intrinsic::memset:
  case Intrinsic::memmove:
    if (createMemLibcall(MIRBuilder, MRI, MI) ==
    if (createMemLibcall(MIRBuilder, *MIRBuilder.getMRI(), MI) ==
        LegalizerHelper::UnableToLegalize)
      return false;
    MI.eraseFromParent();
+2 −2
Original line number Diff line number Diff line
@@ -31,8 +31,8 @@ public:
                      MachineIRBuilder &MIRBuilder,
                      GISelChangeObserver &Observer) const override;

  bool legalizeIntrinsic(MachineInstr &MI, MachineRegisterInfo &MRI,
                         MachineIRBuilder &MIRBuilder) const override;
  bool legalizeIntrinsic(MachineInstr &MI, MachineIRBuilder &MIRBuilder,
                         GISelChangeObserver &Observer) const override;

private:
  bool legalizeVaArg(MachineInstr &MI, MachineRegisterInfo &MRI,
Loading