Skip to content

Commit 0f47223

Browse files
[AIEX][NFC] Refactor put_ms instruction selection to use unified getMvVal2MS interface
1 parent 0faeea4 commit 0f47223

File tree

6 files changed

+41
-53
lines changed

6 files changed

+41
-53
lines changed

llvm/lib/Target/AIE/AIE2InstrInfo.cpp

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,10 @@ unsigned AIE2InstrInfo::getOpCode(MachineInstr &I) const {
467467
else
468468
return isSigned ? AIE2::VUNPACK_S16_S8 : AIE2::VUNPACK_D16_D8;
469469
}
470+
case Intrinsic::aie2_put_ms:
471+
return AIE2::MOV_mv_scl2ms_doTlast_reg;
472+
case Intrinsic::aie2_put_ms_nb:
473+
return AIE2::MOV_NB_mv_scl2ms_doTlast_reg;
470474
default:
471475
llvm_unreachable("Unexpected Intrinsic ID");
472476
}
@@ -950,21 +954,18 @@ unsigned AIE2InstrInfo::getMvSclMultiSlotPseudoOpcode() const {
950954

951955
unsigned AIE2InstrInfo::getAddSclOpcode() const { return AIE2::ADD; }
952956

953-
unsigned AIE2InstrInfo::getMvScl2MSTlastRegOpcode() const {
954-
return AIE2::MOV_mv_scl2ms_doTlast_reg;
955-
}
956-
957-
unsigned AIE2InstrInfo::getMvNBScl2MSTlastRegOpcode() const {
958-
return AIE2::MOV_NB_mv_scl2ms_doTlast_reg;
959-
}
960-
961-
unsigned AIE2InstrInfo::getMvScl2MS(unsigned ConstTLastVal) const {
962-
return (ConstTLastVal == 0 ? AIE2::MOV_mv_scl2ms : AIE2::MOV_TLAST_mv_scl2ms);
963-
}
964-
965-
unsigned AIE2InstrInfo::getMvNBScl2MS(unsigned ConstTLastVal) const {
966-
return (ConstTLastVal == 0 ? AIE2::MOV_NB_mv_scl2ms
967-
: AIE2::MOV_NB_TLAST_mv_scl2ms);
957+
unsigned AIE2InstrInfo::getMvVal2MS(MachineInstr &I,
958+
unsigned ConstTLastVal) const {
959+
const bool UseTLastImm = (ConstTLastVal == 0);
960+
const unsigned IntrinsicID = cast<GIntrinsic>(I).getIntrinsicID();
961+
switch (IntrinsicID) {
962+
case Intrinsic::aie2_put_ms:
963+
return UseTLastImm ? AIE2::MOV_mv_scl2ms : AIE2::MOV_TLAST_mv_scl2ms;
964+
case Intrinsic::aie2_put_ms_nb:
965+
return UseTLastImm ? AIE2::MOV_NB_mv_scl2ms : AIE2::MOV_NB_TLAST_mv_scl2ms;
966+
default:
967+
llvm_unreachable("Unexpected Intrinsic ID");
968+
}
968969
}
969970

970971
unsigned AIE2InstrInfo::getCycleSeparatorOpcode() const {

llvm/lib/Target/AIE/AIE2InstrInfo.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,7 @@ class AIE2InstrInfo : public AIE2GenInstrInfo {
4848
unsigned getPtrAdd3DOpcode() const override;
4949
unsigned getMvSclMultiSlotPseudoOpcode() const override;
5050
unsigned getAddSclOpcode() const override;
51-
unsigned getMvScl2MS(unsigned ConstTLastVal) const override;
52-
unsigned getMvNBScl2MS(unsigned ConstTLastVal) const override;
53-
unsigned getMvScl2MSTlastRegOpcode() const override;
54-
unsigned getMvNBScl2MSTlastRegOpcode() const override;
51+
unsigned getMvVal2MS(MachineInstr &I, unsigned ConstTLastVal) const override;
5552
Register getSSStatusReg() const override;
5653
Register getMSStatusReg() const override;
5754
Register getPackSignCReg() const override;

llvm/lib/Target/AIE/AIEBaseInstrInfo.h

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -444,22 +444,14 @@ struct AIEBaseInstrInfo : public TargetInstrInfo {
444444
virtual Register getMSStatusReg() const {
445445
llvm_unreachable("Target didn't implement getMSStatusReg");
446446
}
447-
virtual unsigned getMvScl2MS(unsigned ConstTLastVal) const {
448-
llvm_unreachable("Target didn't implement getMvScl2MS");
447+
virtual unsigned getMvVal2MS(MachineInstr &I, unsigned ConstTLastVal) const {
448+
llvm_unreachable("Target didn't implement getMvVal2MS");
449449
}
450450

451451
virtual unsigned getMvNBScl2MS(unsigned ConstTLastVal) const {
452452
llvm_unreachable("Target didn't implement getMvNBScl2MS");
453453
}
454454

455-
virtual unsigned getMvScl2MSTlastRegOpcode() const {
456-
llvm_unreachable("Target didn't implement getMvScl2MSTlastRegOpcode");
457-
}
458-
459-
virtual unsigned getMvNBScl2MSTlastRegOpcode() const {
460-
llvm_unreachable("Target didn't implement getMvNBScl2MSTlastRegOpcode");
461-
}
462-
463455
virtual Register getPackSignCReg() const {
464456
llvm_unreachable("Target didn't implement getPackSignCReg");
465457
}

llvm/lib/Target/AIE/AIEBaseInstructionSelector.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -535,10 +535,10 @@ bool AIEBaseInstructionSelector::selectPutMSB(MachineInstr &I,
535535
Register ValReg = I.getOperand(1).getReg();
536536
Register TLastReg = I.getOperand(2).getReg();
537537
auto TLastVal = getIConstantVRegValWithLookThrough(TLastReg, MRI);
538-
unsigned OpCode = TII.getMvScl2MSTlastRegOpcode();
538+
unsigned OpCode = TII.getOpCode(I);
539539
if (TLastVal) {
540540
unsigned ConstTLastVal = TLastVal->Value.getZExtValue();
541-
OpCode = TII.getMvScl2MS(ConstTLastVal);
541+
OpCode = TII.getMvVal2MS(I, ConstTLastVal);
542542
}
543543
MachineInstrBuilder MI = MIB.buildInstr(OpCode, {}, {ValReg});
544544
if (!TLastVal) {
@@ -557,10 +557,10 @@ bool AIEBaseInstructionSelector::selectPutMSNB(MachineInstr &I,
557557
Register ValReg = I.getOperand(2).getReg();
558558
Register TLastReg = I.getOperand(3).getReg();
559559
auto TLastVal = getIConstantVRegValWithLookThrough(TLastReg, MRI);
560-
unsigned OpCode = TII.getMvNBScl2MSTlastRegOpcode();
560+
unsigned OpCode = TII.getOpCode(I);
561561
if (TLastVal) {
562562
unsigned ConstTLastVal = TLastVal->Value.getZExtValue();
563-
OpCode = TII.getMvNBScl2MS(ConstTLastVal);
563+
OpCode = TII.getMvVal2MS(I, ConstTLastVal);
564564
}
565565
MachineInstrBuilder MI = MIB.buildInstr(OpCode, {}, {ValReg});
566566
if (!TLastVal) {

llvm/lib/Target/AIE/aie2p/AIE2PInstrInfo.cpp

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -562,6 +562,10 @@ unsigned AIE2PInstrInfo::getOpCode(MachineInstr &I) const {
562562
}
563563
case Intrinsic::aie2p_vshuffle_576_bfp16:
564564
return AIE2P::VSHUFFLE_vec_shuffle_ex;
565+
case Intrinsic::aie2p_put_ms:
566+
return AIE2P::MOV_st_mMStream_tlast_reg;
567+
case Intrinsic::aie2p_put_ms_nb:
568+
return AIE2P::MOV_nb_st_mMStream_tlast_reg;
565569
default:
566570
llvm_unreachable("Unexpected Intrinsic ID");
567571
}
@@ -1970,22 +1974,19 @@ Register AIE2PInstrInfo::getSSStatusReg() const { return AIE2P::srSS0; }
19701974

19711975
Register AIE2PInstrInfo::getMSStatusReg() const { return AIE2P::srMS0; }
19721976

1973-
unsigned AIE2PInstrInfo::getMvScl2MSTlastRegOpcode() const {
1974-
return AIE2P::MOV_st_mMStream_tlast_reg;
1975-
}
1976-
1977-
unsigned AIE2PInstrInfo::getMvNBScl2MSTlastRegOpcode() const {
1978-
return AIE2P::MOV_nb_st_mMStream_tlast_reg;
1979-
}
1980-
1981-
unsigned AIE2PInstrInfo::getMvScl2MS(unsigned ConstTLastVal) const {
1982-
return (ConstTLastVal == 0) ? AIE2P::MOV_st_mMStream_tlast_imm
1983-
: AIE2P::MOV_tlast;
1984-
}
1985-
1986-
unsigned AIE2PInstrInfo::getMvNBScl2MS(unsigned ConstTLastVal) const {
1987-
return (ConstTLastVal == 0) ? AIE2P::MOV_nb_st_mMStream_tlast_imm
1988-
: AIE2P::MOV_nb_tlast;
1977+
unsigned AIE2PInstrInfo::getMvVal2MS(MachineInstr &I,
1978+
unsigned ConstTLastVal) const {
1979+
const bool UseTLastImm = (ConstTLastVal == 0);
1980+
const unsigned IntrinsicID = cast<GIntrinsic>(I).getIntrinsicID();
1981+
switch (IntrinsicID) {
1982+
case Intrinsic::aie2p_put_ms:
1983+
return UseTLastImm ? AIE2P::MOV_st_mMStream_tlast_imm : AIE2P::MOV_tlast;
1984+
case Intrinsic::aie2p_put_ms_nb:
1985+
return UseTLastImm ? AIE2P::MOV_nb_st_mMStream_tlast_imm
1986+
: AIE2P::MOV_nb_tlast;
1987+
default:
1988+
llvm_unreachable("Unexpected Intrinsic ID");
1989+
}
19891990
}
19901991

19911992
Register AIE2PInstrInfo::getPackSignCReg() const { return AIE2P::packSign0; }

llvm/lib/Target/AIE/aie2p/AIE2PInstrInfo.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,7 @@ class AIE2PInstrInfo : public AIE2PGenInstrInfo {
4646
unsigned getConstantMovOpcode(MachineRegisterInfo &MRI, unsigned int Reg,
4747
APInt &Val) const override;
4848
unsigned getScalarMovOpcode(Register DstReg, Register SrcReg) const override;
49-
unsigned getMvScl2MS(unsigned ConstTLastVal) const override;
50-
unsigned getMvNBScl2MS(unsigned ConstTLastVal) const override;
51-
unsigned getMvScl2MSTlastRegOpcode() const override;
52-
unsigned getMvNBScl2MSTlastRegOpcode() const override;
49+
unsigned getMvVal2MS(MachineInstr &I, unsigned ConstTLastVal) const override;
5350
Register getSSStatusReg() const override;
5451
Register getMSStatusReg() const override;
5552
Register getPackSignCReg() const override;

0 commit comments

Comments
 (0)