76 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc < %s -mtriple=avr | FileCheck %s3; RUN: llc < %s -mtriple=avr -mattr=+avrtiny | FileCheck --check-prefix=TINY %s4 5define i8 @rol8(i8 %val, i8 %amt) {6; CHECK-LABEL: rol8:7; CHECK: ; %bb.0:8; CHECK-NEXT: andi r22, 79; CHECK-NEXT: dec r2210; CHECK-NEXT: brmi .LBB0_211; CHECK-NEXT: .LBB0_1: ; =>This Inner Loop Header: Depth=112; CHECK-NEXT: lsl r2413; CHECK-NEXT: adc r24, r114; CHECK-NEXT: dec r2215; CHECK-NEXT: brpl .LBB0_116; CHECK-NEXT: .LBB0_2:17; CHECK-NEXT: ret18;19; TINY-LABEL: rol8:20; TINY: ; %bb.0:21; TINY-NEXT: andi r22, 722; TINY-NEXT: dec r2223; TINY-NEXT: brmi .LBB0_224; TINY-NEXT: .LBB0_1: ; =>This Inner Loop Header: Depth=125; TINY-NEXT: lsl r2426; TINY-NEXT: adc r24, r1727; TINY-NEXT: dec r2228; TINY-NEXT: brpl .LBB0_129; TINY-NEXT: .LBB0_2:30; TINY-NEXT: ret31 %mod = urem i8 %amt, 832 %inv = sub i8 8, %mod33 %parta = shl i8 %val, %mod34 %partb = lshr i8 %val, %inv35 %rotl = or i8 %parta, %partb36 ret i8 %rotl37}38 39 40define i8 @ror8(i8 %val, i8 %amt) {41; CHECK-LABEL: ror8:42; CHECK: ; %bb.0:43; CHECK-NEXT: andi r22, 744; CHECK-NEXT: dec r2245; CHECK-NEXT: brmi .LBB1_246; CHECK-NEXT: .LBB1_1: ; =>This Inner Loop Header: Depth=147; CHECK-NEXT: bst r24, 048; CHECK-NEXT: ror r2449; CHECK-NEXT: bld r24, 750; CHECK-NEXT: dec r2251; CHECK-NEXT: brpl .LBB1_152; CHECK-NEXT: .LBB1_2:53; CHECK-NEXT: ret54;55; TINY-LABEL: ror8:56; TINY: ; %bb.0:57; TINY-NEXT: andi r22, 758; TINY-NEXT: dec r2259; TINY-NEXT: brmi .LBB1_260; TINY-NEXT: .LBB1_1: ; =>This Inner Loop Header: Depth=161; TINY-NEXT: bst r24, 062; TINY-NEXT: ror r2463; TINY-NEXT: bld r24, 764; TINY-NEXT: dec r2265; TINY-NEXT: brpl .LBB1_166; TINY-NEXT: .LBB1_2:67; TINY-NEXT: ret68 %mod = urem i8 %amt, 869 %inv = sub i8 8, %mod70 %parta = lshr i8 %val, %mod71 %partb = shl i8 %val, %inv72 %rotr = or i8 %parta, %partb73 ret i8 %rotr74}75 76