Skip to content

Commit 5d1ef11

Browse files
Simplify EmitZaInstr
1 parent f0e5e45 commit 5d1ef11

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
@@ -2914,23 +2914,6 @@ AArch64TargetLowering::EmitTileLoad(unsigned Opc, unsigned BaseReg,
29142914
return BB;
29152915
}
29162916

2917-
MachineBasicBlock *
2918-
AArch64TargetLowering::EmitTileMovaz(unsigned Opc, unsigned BaseReg,
2919-
MachineInstr &MI,
2920-
MachineBasicBlock *BB) const {
2921-
const TargetInstrInfo *TII = Subtarget->getInstrInfo();
2922-
MachineInstrBuilder MIB = BuildMI(*BB, MI, MI.getDebugLoc(), TII->get(Opc));
2923-
2924-
MIB.add(MI.getOperand(0)); // ZReg
2925-
MIB.addReg(BaseReg + MI.getOperand(1).getImm(),
2926-
RegState::Define); // add as output
2927-
MIB.addReg(BaseReg + MI.getOperand(1).getImm()); // add as input
2928-
MIB.add(MI.getOperand(2)); // slice index register
2929-
MIB.add(MI.getOperand(3)); // slice index offset
2930-
MI.eraseFromParent(); // The pseudo is gone now.
2931-
return BB;
2932-
}
2933-
29342917
MachineBasicBlock *
29352918
AArch64TargetLowering::EmitFill(MachineInstr &MI, MachineBasicBlock *BB) const {
29362919
const TargetInstrInfo *TII = Subtarget->getInstrInfo();
@@ -2965,20 +2948,20 @@ MachineBasicBlock *AArch64TargetLowering::EmitZTInstr(MachineInstr &MI,
29652948

29662949
MachineBasicBlock *
29672950
AArch64TargetLowering::EmitZAInstr(unsigned Opc, unsigned BaseReg,
2968-
MachineInstr &MI, MachineBasicBlock *BB,
2969-
bool HasTile, bool HasZPROut) const {
2951+
MachineInstr &MI,
2952+
MachineBasicBlock *BB) const {
29702953
const TargetInstrInfo *TII = Subtarget->getInstrInfo();
29712954
MachineInstrBuilder MIB = BuildMI(*BB, MI, MI.getDebugLoc(), TII->get(Opc));
29722955
unsigned StartIdx = 0;
29732956

2957+
bool HasTile = BaseReg != AArch64::ZA;
2958+
bool HasZPROut = HasTile && MI.getOperand(0).isReg();
29742959
if (HasZPROut) {
2975-
if (HasTile) {
2976-
MIB.add(MI.getOperand(0)); // Output ZPR
2977-
MIB.addReg(BaseReg + MI.getOperand(1).getImm(),
2978-
RegState::Define); // Output ZA Tile
2979-
MIB.addReg(BaseReg + MI.getOperand(1).getImm()); // Input Za Tile
2980-
StartIdx = 2;
2981-
}
2960+
MIB.add(MI.getOperand(0)); // Output ZPR
2961+
MIB.addReg(BaseReg + MI.getOperand(1).getImm(),
2962+
RegState::Define); // Output ZA Tile
2963+
MIB.addReg(BaseReg + MI.getOperand(1).getImm()); // Input Za Tile
2964+
StartIdx = 2;
29822965
} else {
29832966
if (HasTile) {
29842967
MIB.addReg(BaseReg + MI.getOperand(0).getImm(), RegState::Define);
@@ -3021,59 +3004,18 @@ MachineBasicBlock *AArch64TargetLowering::EmitInstrWithCustomInserter(
30213004
TII->get(MI.getOpcode()).TSFlags & AArch64::SMEMatrixTypeMask;
30223005
switch (SMEMatrixType) {
30233006
case (AArch64::SMEMatrixArray):
3024-
return EmitZAInstr(SMEOrigInstr, AArch64::ZA, MI, BB, /*HasTile*/ false,
3025-
/*HasZPROut*/ false);
3007+
return EmitZAInstr(SMEOrigInstr, AArch64::ZA, MI, BB);
30263008
case (AArch64::SMEMatrixTileB):
3027-
switch (MI.getOpcode()) {
3028-
case AArch64::MOVAZ_2ZMI_H_B_PSEUDO:
3029-
case AArch64::MOVAZ_2ZMI_V_B_PSEUDO:
3030-
case AArch64::MOVAZ_4ZMI_H_B_PSEUDO:
3031-
case AArch64::MOVAZ_4ZMI_V_B_PSEUDO:
3032-
return EmitZAInstr(SMEOrigInstr, AArch64::ZAB0, MI, BB,
3033-
/*HasTile*/ true, /*HasZPROut*/ true);
3034-
default:
3035-
return EmitZAInstr(SMEOrigInstr, AArch64::ZAB0, MI, BB,
3036-
/*HasTile*/ true, /*HasZPROut*/ false);
3037-
}
3009+
return EmitZAInstr(SMEOrigInstr, AArch64::ZAB0, MI, BB);
30383010
case (AArch64::SMEMatrixTileH):
3039-
switch (MI.getOpcode()) {
3040-
case AArch64::MOVAZ_2ZMI_H_H_PSEUDO:
3041-
case AArch64::MOVAZ_2ZMI_V_H_PSEUDO:
3042-
case AArch64::MOVAZ_4ZMI_H_H_PSEUDO:
3043-
case AArch64::MOVAZ_4ZMI_V_H_PSEUDO:
3044-
return EmitZAInstr(SMEOrigInstr, AArch64::ZAH0, MI, BB,
3045-
/*HasTile*/ true, /*HasZPROut*/ true);
3046-
default:
3047-
return EmitZAInstr(SMEOrigInstr, AArch64::ZAH0, MI, BB,
3048-
/*HasTile*/ true, /*HasZPROut*/ false);
3049-
}
3011+
return EmitZAInstr(SMEOrigInstr, AArch64::ZAH0, MI, BB);
3012+
///*HasTile*/ true, /*HasZPROut*/ false);
30503013
case (AArch64::SMEMatrixTileS):
3051-
switch (MI.getOpcode()) {
3052-
case AArch64::MOVAZ_2ZMI_H_S_PSEUDO:
3053-
case AArch64::MOVAZ_2ZMI_V_S_PSEUDO:
3054-
case AArch64::MOVAZ_4ZMI_H_S_PSEUDO:
3055-
case AArch64::MOVAZ_4ZMI_V_S_PSEUDO:
3056-
return EmitZAInstr(SMEOrigInstr, AArch64::ZAS0, MI, BB,
3057-
/*HasTile*/ true, /*HasZPROut*/ true);
3058-
default:
3059-
return EmitZAInstr(SMEOrigInstr, AArch64::ZAS0, MI, BB,
3060-
/*HasTile*/ true, /*HasZPROut*/ false);
3061-
}
3014+
return EmitZAInstr(SMEOrigInstr, AArch64::ZAS0, MI, BB);
30623015
case (AArch64::SMEMatrixTileD):
3063-
switch (MI.getOpcode()) {
3064-
case AArch64::MOVAZ_2ZMI_H_D_PSEUDO:
3065-
case AArch64::MOVAZ_2ZMI_V_D_PSEUDO:
3066-
case AArch64::MOVAZ_4ZMI_H_D_PSEUDO:
3067-
case AArch64::MOVAZ_4ZMI_V_D_PSEUDO:
3068-
return EmitZAInstr(SMEOrigInstr, AArch64::ZAD0, MI, BB,
3069-
/*HasTile*/ true, /*HasZPROut*/ true);
3070-
default:
3071-
return EmitZAInstr(SMEOrigInstr, AArch64::ZAD0, MI, BB,
3072-
/*HasTile*/ true, /*HasZPROut*/ false);
3073-
}
3016+
return EmitZAInstr(SMEOrigInstr, AArch64::ZAD0, MI, BB);
30743017
case (AArch64::SMEMatrixTileQ):
3075-
return EmitZAInstr(SMEOrigInstr, AArch64::ZAQ0, MI, BB, /*HasTile*/ true,
3076-
/*HasZPROut*/ false);
3018+
return EmitZAInstr(SMEOrigInstr, AArch64::ZAQ0, MI, BB);
30773019
}
30783020
}
30793021

llvm/lib/Target/AArch64/AArch64ISelLowering.h

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -648,13 +648,9 @@ class AArch64TargetLowering : public TargetLowering {
648648
MachineBasicBlock *EmitTileLoad(unsigned Opc, unsigned BaseReg,
649649
MachineInstr &MI,
650650
MachineBasicBlock *BB) const;
651-
MachineBasicBlock *EmitTileMovaz(unsigned Opc, unsigned BaseReg,
652-
MachineInstr &MI,
653-
MachineBasicBlock *BB) const;
654651
MachineBasicBlock *EmitFill(MachineInstr &MI, MachineBasicBlock *BB) const;
655652
MachineBasicBlock *EmitZAInstr(unsigned Opc, unsigned BaseReg,
656-
MachineInstr &MI, MachineBasicBlock *BB,
657-
bool HasTile, bool HasZPROut) const;
653+
MachineInstr &MI, MachineBasicBlock *BB) const;
658654
MachineBasicBlock *EmitZTInstr(MachineInstr &MI, MachineBasicBlock *BB,
659655
unsigned Opcode, bool Op0IsDef) const;
660656
MachineBasicBlock *EmitZero(MachineInstr &MI, MachineBasicBlock *BB) const;

0 commit comments

Comments
 (0)