[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / AVR / rot.ll
blob210031588005d42e7b2bcef24f18115335a1496c
1 ; RUN: llc < %s -march=avr | FileCheck %s
3 ; Bit rotation tests.
5 ; CHECK-LABEL: rol8:
6 define i8 @rol8(i8 %val, i8 %amt) {
7   ; CHECK:      andi r22, 7
9   ; CHECK-NEXT: dec r22
10   ; CHECK-NEXT: brmi .LBB0_2
12 ; CHECK-NEXT: .LBB0_1:
13   ; CHECK-NEXT: lsl r24
14   ; CHECK-NEXT: adc r24, r1
15   ; CHECK-NEXT: dec r22
16   ; CHECK-NEXT: brpl .LBB0_1
18 ; CHECK-NEXT: .LBB0_2:
19   ; CHECK-NEXT: ret
20   %mod = urem i8 %amt, 8
22   %inv = sub i8 8, %mod
23   %parta = shl i8 %val, %mod
24   %partb = lshr i8 %val, %inv
26   %rotl = or i8 %parta, %partb
28   ret i8 %rotl
32 ; CHECK-LABEL: ror8:
33 define i8 @ror8(i8 %val, i8 %amt) {
34   ; CHECK:      andi r22, 7
36   ; CHECK-NEXT: dec r22
37   ; CHECK-NEXT: brmi .LBB1_2
39 ; CHECK-NEXT: .LBB1_1:
40   ; CHECK-NEXT: bst r24, 0
41   ; CHECK-NEXT: ror r24
42   ; CHECK-NEXT: bld r24, 7
43   ; CHECK-NEXT: dec r22
44   ; CHECK-NEXT: brpl .LBB1_1
46 ; CHECK-NEXT: .LBB1_2:
47   ; CHECK-NEXT: ret
48   %mod = urem i8 %amt, 8
50   %inv = sub i8 8, %mod
51   %parta = lshr i8 %val, %mod
52   %partb = shl i8 %val, %inv
54   %rotr = or i8 %parta, %partb
56   ret i8 %rotr