diff options
| author | Yonghong Song <yhs@fb.com> | 2018-02-23 23:49:29 +0000 |
|---|---|---|
| committer | Yonghong Song <yhs@fb.com> | 2018-02-23 23:49:29 +0000 |
| commit | fcd1e0f62586f371dfd5921be84d5bfd636417fc (patch) | |
| tree | 43195e3236e81b825e90b8f11b2f8209dc7ab9c8 /llvm/lib | |
| parent | b1a52bd756eb68bf5c447693701143acc5d1d3ad (diff) | |
| download | bcm5719-llvm-fcd1e0f62586f371dfd5921be84d5bfd636417fc.tar.gz bcm5719-llvm-fcd1e0f62586f371dfd5921be84d5bfd636417fc.zip | |
bpf: Support 32-bit subregister in various InstrInfo hooks
This patch support 32-bit subregister in three InstrInfo hooks, i.e.
copyPhysReg, loadRegFromStackSlot and storeRegToStackSlot,
Signed-off-by: Jiong Wang <jiong.wang@netronome.com>
Reviewed-by: Yonghong Song <yhs@fb.com>
llvm-svn: 325988
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/BPF/BPFInstrInfo.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/Target/BPF/BPFInstrInfo.cpp b/llvm/lib/Target/BPF/BPFInstrInfo.cpp index 5351cfa9502..ffb7acd222b 100644 --- a/llvm/lib/Target/BPF/BPFInstrInfo.cpp +++ b/llvm/lib/Target/BPF/BPFInstrInfo.cpp @@ -36,6 +36,9 @@ void BPFInstrInfo::copyPhysReg(MachineBasicBlock &MBB, if (BPF::GPRRegClass.contains(DestReg, SrcReg)) BuildMI(MBB, I, DL, get(BPF::MOV_rr), DestReg) .addReg(SrcReg, getKillRegState(KillSrc)); + else if (BPF::GPR32RegClass.contains(DestReg, SrcReg)) + BuildMI(MBB, I, DL, get(BPF::MOV_rr_32), DestReg) + .addReg(SrcReg, getKillRegState(KillSrc)); else llvm_unreachable("Impossible reg-to-reg copy"); } @@ -54,6 +57,11 @@ void BPFInstrInfo::storeRegToStackSlot(MachineBasicBlock &MBB, .addReg(SrcReg, getKillRegState(IsKill)) .addFrameIndex(FI) .addImm(0); + else if (RC == &BPF::GPR32RegClass) + BuildMI(MBB, I, DL, get(BPF::STW32)) + .addReg(SrcReg, getKillRegState(IsKill)) + .addFrameIndex(FI) + .addImm(0); else llvm_unreachable("Can't store this register to stack slot"); } @@ -69,6 +77,8 @@ void BPFInstrInfo::loadRegFromStackSlot(MachineBasicBlock &MBB, if (RC == &BPF::GPRRegClass) BuildMI(MBB, I, DL, get(BPF::LDD), DestReg).addFrameIndex(FI).addImm(0); + else if (RC == &BPF::GPR32RegClass) + BuildMI(MBB, I, DL, get(BPF::LDW32), DestReg).addFrameIndex(FI).addImm(0); else llvm_unreachable("Can't load this register from stack slot"); } |

