summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorDylan McKay <me@dylanmckay.io>2017-05-31 06:27:46 +0000
committerDylan McKay <me@dylanmckay.io>2017-05-31 06:27:46 +0000
commit043fa4b3d62190b45390347fc1a39e1c75e9ea0d (patch)
tree14c44a1ff70c4c4af792b46dab4b3975bb69aa90 /llvm
parent48614d4a2c5401bc24a16739b51f02ba3b395c4b (diff)
downloadbcm5719-llvm-043fa4b3d62190b45390347fc1a39e1c75e9ea0d.tar.gz
bcm5719-llvm-043fa4b3d62190b45390347fc1a39e1c75e9ea0d.zip
[AVR] Fix a big in shift operator lowering; Authored by Dr. Gergo Erdi
When generating code for a shift loop, check the shift amount against the literal value 0, not R0 llvm-svn: 304284
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Target/AVR/AVRISelLowering.cpp4
-rw-r--r--llvm/test/CodeGen/AVR/rot.ll4
2 files changed, 4 insertions, 4 deletions
diff --git a/llvm/lib/Target/AVR/AVRISelLowering.cpp b/llvm/lib/Target/AVR/AVRISelLowering.cpp
index ef9c00e4b78..7d3faac1dcc 100644
--- a/llvm/lib/Target/AVR/AVRISelLowering.cpp
+++ b/llvm/lib/Target/AVR/AVRISelLowering.cpp
@@ -1500,9 +1500,9 @@ MachineBasicBlock *AVRTargetLowering::insertShift(MachineInstr &MI,
unsigned DstReg = MI.getOperand(0).getReg();
// BB:
- // cp 0, N
+ // cpi N, 0
// breq RemBB
- BuildMI(BB, dl, TII.get(AVR::CPRdRr)).addReg(ShiftAmtSrcReg).addReg(AVR::R0);
+ BuildMI(BB, dl, TII.get(AVR::CPIRdK)).addReg(ShiftAmtSrcReg).addImm(0);
BuildMI(BB, dl, TII.get(AVR::BREQk)).addMBB(RemBB);
// LoopBB:
diff --git a/llvm/test/CodeGen/AVR/rot.ll b/llvm/test/CodeGen/AVR/rot.ll
index e43daf3e6aa..a7b77d97ba6 100644
--- a/llvm/test/CodeGen/AVR/rot.ll
+++ b/llvm/test/CodeGen/AVR/rot.ll
@@ -6,7 +6,7 @@
define i8 @rol8(i8 %val, i8 %amt) {
; CHECK: andi r22, 7
- ; CHECK-NEXT: cp r22, r0
+ ; CHECK-NEXT: cpi r22, 0
; CHECK-NEXT: breq LBB0_2
; CHECK-NEXT: LBB0_1:
@@ -32,7 +32,7 @@ define i8 @rol8(i8 %val, i8 %amt) {
define i8 @ror8(i8 %val, i8 %amt) {
; CHECK: andi r22, 7
- ; CHECK-NEXT: cp r22, r0
+ ; CHECK-NEXT: cpi r22, 0
; CHECK-NEXT: breq LBB1_2
; CHECK-NEXT: LBB1_1:
OpenPOWER on IntegriCloud