Skip to content

Commit 189fd87

Browse files
Simplify EmitZaInstr
1 parent ba423c0 commit 189fd87

File tree

2 files changed

+17
-79
lines changed

2 files changed

+17
-79
lines changed

llvm/lib/Target/AArch64/AArch64ISelLowering.cpp

Lines changed: 16 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -2941,23 +2941,6 @@ AArch64TargetLowering::EmitTileLoad(unsigned Opc, unsigned BaseReg,
29412941
return BB;
29422942
}
29432943

2944-
MachineBasicBlock *
2945-
AArch64TargetLowering::EmitTileMovaz(unsigned Opc, unsigned BaseReg,
2946-
MachineInstr &MI,
2947-
MachineBasicBlock *BB) const {
2948-
const TargetInstrInfo *TII = Subtarget->getInstrInfo();
2949-
MachineInstrBuilder MIB = BuildMI(*BB, MI, MI.getDebugLoc(), TII->get(Opc));
2950-
2951-
MIB.add(MI.getOperand(0)); // ZReg
2952-
MIB.addReg(BaseReg + MI.getOperand(1).getImm(),
2953-
RegState::Define); // add as output
2954-
MIB.addReg(BaseReg + MI.getOperand(1).getImm()); // add as input
2955-
MIB.add(MI.getOperand(2)); // slice index register
2956-
MIB.add(MI.getOperand(3)); // slice index offset
2957-
MI.eraseFromParent(); // The pseudo is gone now.
2958-
return BB;
2959-
}
2960-
29612944
MachineBasicBlock *
29622945
AArch64TargetLowering::EmitFill(MachineInstr &MI, MachineBasicBlock *BB) const {
29632946
const TargetInstrInfo *TII = Subtarget->getInstrInfo();
@@ -2992,20 +2975,20 @@ MachineBasicBlock *AArch64TargetLowering::EmitZTInstr(MachineInstr &MI,
29922975

29932976
MachineBasicBlock *
29942977
AArch64TargetLowering::EmitZAInstr(unsigned Opc, unsigned BaseReg,
2995-
MachineInstr &MI, MachineBasicBlock *BB,
2996-
bool HasTile, bool HasZPROut) const {
2978+
MachineInstr &MI,
2979+
MachineBasicBlock *BB) const {
29972980
const TargetInstrInfo *TII = Subtarget->getInstrInfo();
29982981
MachineInstrBuilder MIB = BuildMI(*BB, MI, MI.getDebugLoc(), TII->get(Opc));
29992982
unsigned StartIdx = 0;
30002983

2984+
bool HasTile = BaseReg != AArch64::ZA;
2985+
bool HasZPROut = HasTile && MI.getOperand(0).isReg();
30012986
if (HasZPROut) {
3002-
if (HasTile) {
3003-
MIB.add(MI.getOperand(0)); // Output ZPR
3004-
MIB.addReg(BaseReg + MI.getOperand(1).getImm(),
3005-
RegState::Define); // Output ZA Tile
3006-
MIB.addReg(BaseReg + MI.getOperand(1).getImm()); // Input Za Tile
3007-
StartIdx = 2;
3008-
}
2987+
MIB.add(MI.getOperand(0)); // Output ZPR
2988+
MIB.addReg(BaseReg + MI.getOperand(1).getImm(),
2989+
RegState::Define); // Output ZA Tile
2990+
MIB.addReg(BaseReg + MI.getOperand(1).getImm()); // Input Za Tile
2991+
StartIdx = 2;
30092992
} else {
30102993
if (HasTile) {
30112994
MIB.addReg(BaseReg + MI.getOperand(0).getImm(), RegState::Define);
@@ -3122,59 +3105,18 @@ MachineBasicBlock *AArch64TargetLowering::EmitInstrWithCustomInserter(
31223105
TII->get(MI.getOpcode()).TSFlags & AArch64::SMEMatrixTypeMask;
31233106
switch (SMEMatrixType) {
31243107
case (AArch64::SMEMatrixArray):
3125-
return EmitZAInstr(SMEOrigInstr, AArch64::ZA, MI, BB, /*HasTile*/ false,
3126-
/*HasZPROut*/ false);
3108+
return EmitZAInstr(SMEOrigInstr, AArch64::ZA, MI, BB);
31273109
case (AArch64::SMEMatrixTileB):
3128-
switch (MI.getOpcode()) {
3129-
case AArch64::MOVAZ_2ZMI_H_B_PSEUDO:
3130-
case AArch64::MOVAZ_2ZMI_V_B_PSEUDO:
3131-
case AArch64::MOVAZ_4ZMI_H_B_PSEUDO:
3132-
case AArch64::MOVAZ_4ZMI_V_B_PSEUDO:
3133-
return EmitZAInstr(SMEOrigInstr, AArch64::ZAB0, MI, BB,
3134-
/*HasTile*/ true, /*HasZPROut*/ true);
3135-
default:
3136-
return EmitZAInstr(SMEOrigInstr, AArch64::ZAB0, MI, BB,
3137-
/*HasTile*/ true, /*HasZPROut*/ false);
3138-
}
3110+
return EmitZAInstr(SMEOrigInstr, AArch64::ZAB0, MI, BB);
31393111
case (AArch64::SMEMatrixTileH):
3140-
switch (MI.getOpcode()) {
3141-
case AArch64::MOVAZ_2ZMI_H_H_PSEUDO:
3142-
case AArch64::MOVAZ_2ZMI_V_H_PSEUDO:
3143-
case AArch64::MOVAZ_4ZMI_H_H_PSEUDO:
3144-
case AArch64::MOVAZ_4ZMI_V_H_PSEUDO:
3145-
return EmitZAInstr(SMEOrigInstr, AArch64::ZAH0, MI, BB,
3146-
/*HasTile*/ true, /*HasZPROut*/ true);
3147-
default:
3148-
return EmitZAInstr(SMEOrigInstr, AArch64::ZAH0, MI, BB,
3149-
/*HasTile*/ true, /*HasZPROut*/ false);
3150-
}
3112+
return EmitZAInstr(SMEOrigInstr, AArch64::ZAH0, MI, BB);
3113+
///*HasTile*/ true, /*HasZPROut*/ false);
31513114
case (AArch64::SMEMatrixTileS):
3152-
switch (MI.getOpcode()) {
3153-
case AArch64::MOVAZ_2ZMI_H_S_PSEUDO:
3154-
case AArch64::MOVAZ_2ZMI_V_S_PSEUDO:
3155-
case AArch64::MOVAZ_4ZMI_H_S_PSEUDO:
3156-
case AArch64::MOVAZ_4ZMI_V_S_PSEUDO:
3157-
return EmitZAInstr(SMEOrigInstr, AArch64::ZAS0, MI, BB,
3158-
/*HasTile*/ true, /*HasZPROut*/ true);
3159-
default:
3160-
return EmitZAInstr(SMEOrigInstr, AArch64::ZAS0, MI, BB,
3161-
/*HasTile*/ true, /*HasZPROut*/ false);
3162-
}
3115+
return EmitZAInstr(SMEOrigInstr, AArch64::ZAS0, MI, BB);
31633116
case (AArch64::SMEMatrixTileD):
3164-
switch (MI.getOpcode()) {
3165-
case AArch64::MOVAZ_2ZMI_H_D_PSEUDO:
3166-
case AArch64::MOVAZ_2ZMI_V_D_PSEUDO:
3167-
case AArch64::MOVAZ_4ZMI_H_D_PSEUDO:
3168-
case AArch64::MOVAZ_4ZMI_V_D_PSEUDO:
3169-
return EmitZAInstr(SMEOrigInstr, AArch64::ZAD0, MI, BB,
3170-
/*HasTile*/ true, /*HasZPROut*/ true);
3171-
default:
3172-
return EmitZAInstr(SMEOrigInstr, AArch64::ZAD0, MI, BB,
3173-
/*HasTile*/ true, /*HasZPROut*/ false);
3174-
}
3117+
return EmitZAInstr(SMEOrigInstr, AArch64::ZAD0, MI, BB);
31753118
case (AArch64::SMEMatrixTileQ):
3176-
return EmitZAInstr(SMEOrigInstr, AArch64::ZAQ0, MI, BB, /*HasTile*/ true,
3177-
/*HasZPROut*/ false);
3119+
return EmitZAInstr(SMEOrigInstr, AArch64::ZAQ0, MI, BB);
31783120
}
31793121
}
31803122

llvm/lib/Target/AArch64/AArch64ISelLowering.h

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -653,13 +653,9 @@ class AArch64TargetLowering : public TargetLowering {
653653
MachineBasicBlock *EmitTileLoad(unsigned Opc, unsigned BaseReg,
654654
MachineInstr &MI,
655655
MachineBasicBlock *BB) const;
656-
MachineBasicBlock *EmitTileMovaz(unsigned Opc, unsigned BaseReg,
657-
MachineInstr &MI,
658-
MachineBasicBlock *BB) const;
659656
MachineBasicBlock *EmitFill(MachineInstr &MI, MachineBasicBlock *BB) const;
660657
MachineBasicBlock *EmitZAInstr(unsigned Opc, unsigned BaseReg,
661-
MachineInstr &MI, MachineBasicBlock *BB,
662-
bool HasTile, bool HasZPROut) const;
658+
MachineInstr &MI, MachineBasicBlock *BB) const;
663659
MachineBasicBlock *EmitZTInstr(MachineInstr &MI, MachineBasicBlock *BB,
664660
unsigned Opcode, bool Op0IsDef) const;
665661
MachineBasicBlock *EmitZero(MachineInstr &MI, MachineBasicBlock *BB) const;

0 commit comments

Comments
 (0)