@@ -2914,23 +2914,6 @@ AArch64TargetLowering::EmitTileLoad(unsigned Opc, unsigned BaseReg,
2914
2914
return BB;
2915
2915
}
2916
2916
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
-
2934
2917
MachineBasicBlock *
2935
2918
AArch64TargetLowering::EmitFill(MachineInstr &MI, MachineBasicBlock *BB) const {
2936
2919
const TargetInstrInfo *TII = Subtarget->getInstrInfo();
@@ -2965,20 +2948,20 @@ MachineBasicBlock *AArch64TargetLowering::EmitZTInstr(MachineInstr &MI,
2965
2948
2966
2949
MachineBasicBlock *
2967
2950
AArch64TargetLowering::EmitZAInstr(unsigned Opc, unsigned BaseReg,
2968
- MachineInstr &MI, MachineBasicBlock *BB,
2969
- bool HasTile, bool HasZPROut ) const {
2951
+ MachineInstr &MI,
2952
+ MachineBasicBlock *BB ) const {
2970
2953
const TargetInstrInfo *TII = Subtarget->getInstrInfo();
2971
2954
MachineInstrBuilder MIB = BuildMI(*BB, MI, MI.getDebugLoc(), TII->get(Opc));
2972
2955
unsigned StartIdx = 0;
2973
2956
2957
+ bool HasTile = BaseReg != AArch64::ZA;
2958
+ bool HasZPROut = HasTile && MI.getOperand(0).isReg();
2974
2959
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;
2982
2965
} else {
2983
2966
if (HasTile) {
2984
2967
MIB.addReg(BaseReg + MI.getOperand(0).getImm(), RegState::Define);
@@ -3021,59 +3004,18 @@ MachineBasicBlock *AArch64TargetLowering::EmitInstrWithCustomInserter(
3021
3004
TII->get(MI.getOpcode()).TSFlags & AArch64::SMEMatrixTypeMask;
3022
3005
switch (SMEMatrixType) {
3023
3006
case (AArch64::SMEMatrixArray):
3024
- return EmitZAInstr(SMEOrigInstr, AArch64::ZA, MI, BB, /*HasTile*/ false,
3025
- /*HasZPROut*/ false);
3007
+ return EmitZAInstr(SMEOrigInstr, AArch64::ZA, MI, BB);
3026
3008
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);
3038
3010
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);
3050
3013
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);
3062
3015
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);
3074
3017
case (AArch64::SMEMatrixTileQ):
3075
- return EmitZAInstr(SMEOrigInstr, AArch64::ZAQ0, MI, BB, /*HasTile*/ true,
3076
- /*HasZPROut*/ false);
3018
+ return EmitZAInstr(SMEOrigInstr, AArch64::ZAQ0, MI, BB);
3077
3019
}
3078
3020
}
3079
3021
0 commit comments