@@ -2941,23 +2941,6 @@ AArch64TargetLowering::EmitTileLoad(unsigned Opc, unsigned BaseReg,
2941
2941
return BB;
2942
2942
}
2943
2943
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
-
2961
2944
MachineBasicBlock *
2962
2945
AArch64TargetLowering::EmitFill(MachineInstr &MI, MachineBasicBlock *BB) const {
2963
2946
const TargetInstrInfo *TII = Subtarget->getInstrInfo();
@@ -2992,20 +2975,20 @@ MachineBasicBlock *AArch64TargetLowering::EmitZTInstr(MachineInstr &MI,
2992
2975
2993
2976
MachineBasicBlock *
2994
2977
AArch64TargetLowering::EmitZAInstr(unsigned Opc, unsigned BaseReg,
2995
- MachineInstr &MI, MachineBasicBlock *BB,
2996
- bool HasTile, bool HasZPROut ) const {
2978
+ MachineInstr &MI,
2979
+ MachineBasicBlock *BB ) const {
2997
2980
const TargetInstrInfo *TII = Subtarget->getInstrInfo();
2998
2981
MachineInstrBuilder MIB = BuildMI(*BB, MI, MI.getDebugLoc(), TII->get(Opc));
2999
2982
unsigned StartIdx = 0;
3000
2983
2984
+ bool HasTile = BaseReg != AArch64::ZA;
2985
+ bool HasZPROut = HasTile && MI.getOperand(0).isReg();
3001
2986
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;
3009
2992
} else {
3010
2993
if (HasTile) {
3011
2994
MIB.addReg(BaseReg + MI.getOperand(0).getImm(), RegState::Define);
@@ -3122,59 +3105,18 @@ MachineBasicBlock *AArch64TargetLowering::EmitInstrWithCustomInserter(
3122
3105
TII->get(MI.getOpcode()).TSFlags & AArch64::SMEMatrixTypeMask;
3123
3106
switch (SMEMatrixType) {
3124
3107
case (AArch64::SMEMatrixArray):
3125
- return EmitZAInstr(SMEOrigInstr, AArch64::ZA, MI, BB, /*HasTile*/ false,
3126
- /*HasZPROut*/ false);
3108
+ return EmitZAInstr(SMEOrigInstr, AArch64::ZA, MI, BB);
3127
3109
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);
3139
3111
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);
3151
3114
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);
3163
3116
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);
3175
3118
case (AArch64::SMEMatrixTileQ):
3176
- return EmitZAInstr(SMEOrigInstr, AArch64::ZAQ0, MI, BB, /*HasTile*/ true,
3177
- /*HasZPROut*/ false);
3119
+ return EmitZAInstr(SMEOrigInstr, AArch64::ZAQ0, MI, BB);
3178
3120
}
3179
3121
}
3180
3122
0 commit comments