diff options
Diffstat (limited to 'llvm/test/CodeGen/AVR/shift.ll')
-rw-r--r-- | llvm/test/CodeGen/AVR/shift.ll | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/llvm/test/CodeGen/AVR/shift.ll b/llvm/test/CodeGen/AVR/shift.ll index 90e1b25bd762..beba537cd104 100644 --- a/llvm/test/CodeGen/AVR/shift.ll +++ b/llvm/test/CodeGen/AVR/shift.ll @@ -227,8 +227,7 @@ define i16 @lsl_i16_9(i16 %a) { ; CHECK-LABEL: lsl_i16_9 ; CHECK: mov r25, r24 ; CHECK-NEXT: clr r24 -; CHECK-NEXT: lsl r24 -; CHECK-NEXT: rol r25 +; CHECK-NEXT: lsl r25 ; CHECK-NEXT: ret %result = shl i16 %a, 9 ret i16 %result @@ -240,8 +239,7 @@ define i16 @lsl_i16_13(i16 %a) { ; CHECK-NEXT: swap r25 ; CHECK-NEXT: andi r25, 240 ; CHECK-NEXT: clr r24 -; CHECK-NEXT: lsl r24 -; CHECK-NEXT: rol r25 +; CHECK-NEXT: lsl r25 ; CHECK-NEXT: ret %result = shl i16 %a, 13 ret i16 %result @@ -285,8 +283,7 @@ define i16 @lsr_i16_9(i16 %a) { ; CHECK-LABEL: lsr_i16_9 ; CHECK: mov r24, r25 ; CHECK-NEXT: clr r25 -; CHECK-NEXT: lsr r25 -; CHECK-NEXT: ror r24 +; CHECK-NEXT: lsr r24 ; CHECK-NEXT: ret %result = lshr i16 %a, 9 ret i16 %result @@ -298,8 +295,7 @@ define i16 @lsr_i16_13(i16 %a) { ; CHECK-NEXT: swap r24 ; CHECK-NEXT: andi r24, 15 ; CHECK-NEXT: clr r25 -; CHECK-NEXT: lsr r25 -; CHECK-NEXT: ror r24 +; CHECK-NEXT: lsr r24 ; CHECK-NEXT: ret %result = lshr i16 %a, 13 ret i16 %result @@ -310,9 +306,22 @@ define i16 @asr_i16_9(i16 %a) { ; CHECK: mov r24, r25 ; CHECK-NEXT: lsl r25 ; CHECK-NEXT: sbc r25, r25 -; CHECK-NEXT: asr r25 -; CHECK-NEXT: ror r24 +; CHECK-NEXT: asr r24 ; CHECK-NEXT: ret %result = ashr i16 %a, 9 ret i16 %result } + +define i16 @asr_i16_12(i16 %a) { +; CHECK-LABEL: asr_i16_12 +; CHECK: mov r24, r25 +; CHECK-NEXT: lsl r25 +; CHECK-NEXT: sbc r25, r25 +; CHECK-NEXT: asr r24 +; CHECK-NEXT: asr r24 +; CHECK-NEXT: asr r24 +; CHECK-NEXT: asr r24 +; CHECK-NEXT: ret + %result = ashr i16 %a, 12 + ret i16 %result +} |