Skip to content

Commit ea170be

Browse files
committed
Optimize for no SPH devices
1 parent 9d6df77 commit ea170be

File tree

2 files changed

+15
-15
lines changed

2 files changed

+15
-15
lines changed

llvm/lib/Target/AVR/AVRExpandPseudoInsts.cpp

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2547,25 +2547,28 @@ bool AVRExpandPseudo::expand<AVR::SPWRITE>(Block &MBB, BlockIt MBBI) {
25472547
.addReg(SrcHiReg, getKillRegState(SrcIsKill))
25482548
.setMIFlags(Flags);
25492549

2550-
} else { // Disable interrupts for older devices (3 extra instructions)
2550+
} else { // Disable interrupts for older devices with SPH (3 extra
2551+
// instructions)
25512552

2552-
buildMI(MBB, MBBI, AVR::INRdA)
2553-
.addReg(STI.getTmpRegister(), RegState::Define)
2554-
.addImm(STI.getIORegSREG())
2555-
.setMIFlags(Flags);
2553+
if (STI.getIORegSPH() != -1) {
2554+
2555+
buildMI(MBB, MBBI, AVR::INRdA)
2556+
.addReg(STI.getTmpRegister(), RegState::Define)
2557+
.addImm(STI.getIORegSREG())
2558+
.setMIFlags(Flags);
25562559

2557-
buildMI(MBB, MBBI, AVR::BCLRs).addImm(0x07).setMIFlags(Flags);
2560+
buildMI(MBB, MBBI, AVR::BCLRs).addImm(0x07).setMIFlags(Flags);
25582561

2559-
if (STI.getIORegSPH() != -1)
25602562
buildMI(MBB, MBBI, AVR::OUTARr)
25612563
.addImm(STI.getIORegSPH())
25622564
.addReg(SrcHiReg, getKillRegState(SrcIsKill))
25632565
.setMIFlags(Flags);
25642566

2565-
buildMI(MBB, MBBI, AVR::OUTARr)
2566-
.addImm(STI.getIORegSREG())
2567-
.addReg(STI.getTmpRegister(), RegState::Kill)
2568-
.setMIFlags(Flags);
2567+
buildMI(MBB, MBBI, AVR::OUTARr)
2568+
.addImm(STI.getIORegSREG())
2569+
.addReg(STI.getTmpRegister(), RegState::Kill)
2570+
.setMIFlags(Flags);
2571+
}
25692572

25702573
buildMI(MBB, MBBI, AVR::OUTARr)
25712574
.addImm(STI.getIORegSPL())

llvm/test/CodeGen/AVR/pseudo/SPWRITE.mir

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# RUN: llc -O0 -run-pass=avr-expand-pseudo -mtriple=avr -mcpu=attiny11 %s -o - \
1+
# RUN: llc -O0 -run-pass=avr-expand-pseudo -mtriple=avr -mcpu=attiny13 %s -o - \
22
# RUN: | FileCheck --check-prefix=NOSPH %s
33
# RUN: llc -O0 -run-pass=avr-expand-pseudo -mtriple=avr -mcpu=atmega328 %s -o - \
44
# RUN: | FileCheck %s
@@ -34,9 +34,6 @@ body: |
3434
; CHECK: OUTARr 61, $r14
3535
3636
; NOSPH-LABEL: test
37-
; NOSPH: $r0 = INRdA 63
38-
; NOSPH: BCLRs 7, implicit-def $sreg
39-
; NOSPH: OUTARr 63, killed $r0
4037
; NOSPH: OUTARr 61, $r14
4138
4239
; XMEGA-LABEL: test

0 commit comments

Comments
 (0)