Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 16 additions & 15 deletions llvm/lib/Target/AIE/AIE2InstrInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -467,6 +467,10 @@ unsigned AIE2InstrInfo::getOpCode(MachineInstr &I) const {
else
return isSigned ? AIE2::VUNPACK_S16_S8 : AIE2::VUNPACK_D16_D8;
}
case Intrinsic::aie2_put_ms:
return AIE2::MOV_mv_scl2ms_doTlast_reg;
case Intrinsic::aie2_put_ms_nb:
return AIE2::MOV_NB_mv_scl2ms_doTlast_reg;
default:
llvm_unreachable("Unexpected Intrinsic ID");
}
Expand Down Expand Up @@ -950,21 +954,18 @@ unsigned AIE2InstrInfo::getMvSclMultiSlotPseudoOpcode() const {

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

unsigned AIE2InstrInfo::getMvScl2MSTlastRegOpcode() const {
return AIE2::MOV_mv_scl2ms_doTlast_reg;
}

unsigned AIE2InstrInfo::getMvNBScl2MSTlastRegOpcode() const {
return AIE2::MOV_NB_mv_scl2ms_doTlast_reg;
}

unsigned AIE2InstrInfo::getMvScl2MS(unsigned ConstTLastVal) const {
return (ConstTLastVal == 0 ? AIE2::MOV_mv_scl2ms : AIE2::MOV_TLAST_mv_scl2ms);
}

unsigned AIE2InstrInfo::getMvNBScl2MS(unsigned ConstTLastVal) const {
return (ConstTLastVal == 0 ? AIE2::MOV_NB_mv_scl2ms
: AIE2::MOV_NB_TLAST_mv_scl2ms);
unsigned AIE2InstrInfo::getMvVal2MS(MachineInstr &I,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: Can we use a bit more readable name?

unsigned ConstTLastVal) const {
const bool UseTLastImm = (ConstTLastVal == 0);
const unsigned IntrinsicID = cast<GIntrinsic>(I).getIntrinsicID();
switch (IntrinsicID) {
case Intrinsic::aie2_put_ms:
return UseTLastImm ? AIE2::MOV_mv_scl2ms : AIE2::MOV_TLAST_mv_scl2ms;
case Intrinsic::aie2_put_ms_nb:
return UseTLastImm ? AIE2::MOV_NB_mv_scl2ms : AIE2::MOV_NB_TLAST_mv_scl2ms;
default:
llvm_unreachable("Unexpected Intrinsic ID");
}
}

unsigned AIE2InstrInfo::getCycleSeparatorOpcode() const {
Expand Down
5 changes: 1 addition & 4 deletions llvm/lib/Target/AIE/AIE2InstrInfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,7 @@ class AIE2InstrInfo : public AIE2GenInstrInfo {
unsigned getPtrAdd3DOpcode() const override;
unsigned getMvSclMultiSlotPseudoOpcode() const override;
unsigned getAddSclOpcode() const override;
unsigned getMvScl2MS(unsigned ConstTLastVal) const override;
unsigned getMvNBScl2MS(unsigned ConstTLastVal) const override;
unsigned getMvScl2MSTlastRegOpcode() const override;
unsigned getMvNBScl2MSTlastRegOpcode() const override;
unsigned getMvVal2MS(MachineInstr &I, unsigned ConstTLastVal) const override;
Register getSSStatusReg() const override;
Register getMSStatusReg() const override;
Register getPackSignCReg() const override;
Expand Down
12 changes: 2 additions & 10 deletions llvm/lib/Target/AIE/AIEBaseInstrInfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -444,22 +444,14 @@ struct AIEBaseInstrInfo : public TargetInstrInfo {
virtual Register getMSStatusReg() const {
llvm_unreachable("Target didn't implement getMSStatusReg");
}
virtual unsigned getMvScl2MS(unsigned ConstTLastVal) const {
llvm_unreachable("Target didn't implement getMvScl2MS");
virtual unsigned getMvVal2MS(MachineInstr &I, unsigned ConstTLastVal) const {
llvm_unreachable("Target didn't implement getMvVal2MS");
}

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

virtual unsigned getMvScl2MSTlastRegOpcode() const {
llvm_unreachable("Target didn't implement getMvScl2MSTlastRegOpcode");
}

virtual unsigned getMvNBScl2MSTlastRegOpcode() const {
llvm_unreachable("Target didn't implement getMvNBScl2MSTlastRegOpcode");
}

virtual Register getPackSignCReg() const {
llvm_unreachable("Target didn't implement getPackSignCReg");
}
Expand Down
8 changes: 4 additions & 4 deletions llvm/lib/Target/AIE/AIEBaseInstructionSelector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -535,10 +535,10 @@ bool AIEBaseInstructionSelector::selectPutMSB(MachineInstr &I,
Register ValReg = I.getOperand(1).getReg();
Register TLastReg = I.getOperand(2).getReg();
auto TLastVal = getIConstantVRegValWithLookThrough(TLastReg, MRI);
unsigned OpCode = TII.getMvScl2MSTlastRegOpcode();
unsigned OpCode = TII.getOpCode(I);
if (TLastVal) {
unsigned ConstTLastVal = TLastVal->Value.getZExtValue();
OpCode = TII.getMvScl2MS(ConstTLastVal);
OpCode = TII.getMvVal2MS(I, ConstTLastVal);
}
MachineInstrBuilder MI = MIB.buildInstr(OpCode, {}, {ValReg});
if (!TLastVal) {
Expand All @@ -557,10 +557,10 @@ bool AIEBaseInstructionSelector::selectPutMSNB(MachineInstr &I,
Register ValReg = I.getOperand(2).getReg();
Register TLastReg = I.getOperand(3).getReg();
auto TLastVal = getIConstantVRegValWithLookThrough(TLastReg, MRI);
unsigned OpCode = TII.getMvNBScl2MSTlastRegOpcode();
unsigned OpCode = TII.getOpCode(I);
if (TLastVal) {
unsigned ConstTLastVal = TLastVal->Value.getZExtValue();
OpCode = TII.getMvNBScl2MS(ConstTLastVal);
OpCode = TII.getMvVal2MS(I, ConstTLastVal);
}
MachineInstrBuilder MI = MIB.buildInstr(OpCode, {}, {ValReg});
if (!TLastVal) {
Expand Down
33 changes: 17 additions & 16 deletions llvm/lib/Target/AIE/aie2p/AIE2PInstrInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -562,6 +562,10 @@ unsigned AIE2PInstrInfo::getOpCode(MachineInstr &I) const {
}
case Intrinsic::aie2p_vshuffle_576_bfp16:
return AIE2P::VSHUFFLE_vec_shuffle_ex;
case Intrinsic::aie2p_put_ms:
return AIE2P::MOV_st_mMStream_tlast_reg;
case Intrinsic::aie2p_put_ms_nb:
return AIE2P::MOV_nb_st_mMStream_tlast_reg;
default:
llvm_unreachable("Unexpected Intrinsic ID");
}
Expand Down Expand Up @@ -1970,22 +1974,19 @@ Register AIE2PInstrInfo::getSSStatusReg() const { return AIE2P::srSS0; }

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

unsigned AIE2PInstrInfo::getMvScl2MSTlastRegOpcode() const {
return AIE2P::MOV_st_mMStream_tlast_reg;
}

unsigned AIE2PInstrInfo::getMvNBScl2MSTlastRegOpcode() const {
return AIE2P::MOV_nb_st_mMStream_tlast_reg;
}

unsigned AIE2PInstrInfo::getMvScl2MS(unsigned ConstTLastVal) const {
return (ConstTLastVal == 0) ? AIE2P::MOV_st_mMStream_tlast_imm
: AIE2P::MOV_tlast;
}

unsigned AIE2PInstrInfo::getMvNBScl2MS(unsigned ConstTLastVal) const {
return (ConstTLastVal == 0) ? AIE2P::MOV_nb_st_mMStream_tlast_imm
: AIE2P::MOV_nb_tlast;
unsigned AIE2PInstrInfo::getMvVal2MS(MachineInstr &I,
unsigned ConstTLastVal) const {
const bool UseTLastImm = (ConstTLastVal == 0);
const unsigned IntrinsicID = cast<GIntrinsic>(I).getIntrinsicID();
switch (IntrinsicID) {
case Intrinsic::aie2p_put_ms:
return UseTLastImm ? AIE2P::MOV_st_mMStream_tlast_imm : AIE2P::MOV_tlast;
case Intrinsic::aie2p_put_ms_nb:
return UseTLastImm ? AIE2P::MOV_nb_st_mMStream_tlast_imm
: AIE2P::MOV_nb_tlast;
default:
llvm_unreachable("Unexpected Intrinsic ID");
}
}

Register AIE2PInstrInfo::getPackSignCReg() const { return AIE2P::packSign0; }
Expand Down
5 changes: 1 addition & 4 deletions llvm/lib/Target/AIE/aie2p/AIE2PInstrInfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,7 @@ class AIE2PInstrInfo : public AIE2PGenInstrInfo {
unsigned getConstantMovOpcode(MachineRegisterInfo &MRI, unsigned int Reg,
APInt &Val) const override;
unsigned getScalarMovOpcode(Register DstReg, Register SrcReg) const override;
unsigned getMvScl2MS(unsigned ConstTLastVal) const override;
unsigned getMvNBScl2MS(unsigned ConstTLastVal) const override;
unsigned getMvScl2MSTlastRegOpcode() const override;
unsigned getMvNBScl2MSTlastRegOpcode() const override;
unsigned getMvVal2MS(MachineInstr &I, unsigned ConstTLastVal) const override;
Register getSSStatusReg() const override;
Register getMSStatusReg() const override;
Register getPackSignCReg() const override;
Expand Down