|
| 1 | +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py |
| 2 | +; RUN: llc < %s -O=3 -mtriple=avr-none -mcpu=attiny85 -verify-machineinstrs | FileCheck %s |
| 3 | + |
| 4 | +@c = dso_local local_unnamed_addr global i8 0, align 1 |
| 5 | +define dso_local void @mod(i16 noundef %0) local_unnamed_addr addrspace(1) { |
| 6 | +; CHECK-LABEL: mod: |
| 7 | +; CHECK: ; %bb.0: |
| 8 | +; CHECK-NEXT: push r14 |
| 9 | +; CHECK-NEXT: push r16 |
| 10 | +; CHECK-NEXT: push r17 |
| 11 | +; CHECK-NEXT: cpi r24, 10 |
| 12 | +; CHECK-NEXT: cpc r25, r1 |
| 13 | +; CHECK-NEXT: brlo .LBB0_2 |
| 14 | +; CHECK-NEXT: ; %bb.1: |
| 15 | +; CHECK-NEXT: ldi r18, 205 |
| 16 | +; CHECK-NEXT: ldi r19, 204 |
| 17 | +; CHECK-NEXT: ldi r20, 0 |
| 18 | +; CHECK-NEXT: ldi r21, 0 |
| 19 | +; CHECK-NEXT: movw r22, r24 |
| 20 | +; CHECK-NEXT: mov r14, r24 |
| 21 | +; CHECK-NEXT: movw r24, r20 |
| 22 | +; CHECK-NEXT: rcall __mulsi3 |
| 23 | +; CHECK-NEXT: movw r16, r24 |
| 24 | +; CHECK-NEXT: lsr r17 |
| 25 | +; CHECK-NEXT: ror r16 |
| 26 | +; CHECK-NEXT: lsr r17 |
| 27 | +; CHECK-NEXT: ror r16 |
| 28 | +; CHECK-NEXT: lsr r17 |
| 29 | +; CHECK-NEXT: ror r16 |
| 30 | +; CHECK-NEXT: movw r24, r16 |
| 31 | +; CHECK-NEXT: rcall mod |
| 32 | +; CHECK-NEXT: mov r24, r16 |
| 33 | +; CHECK-NEXT: ldi r22, -10 |
| 34 | +; CHECK-NEXT: rcall __mulqi3 |
| 35 | +; CHECK-NEXT: add r24, r14 |
| 36 | +; CHECK-NEXT: .LBB0_2: |
| 37 | +; CHECK-NEXT: ori r24, 48 |
| 38 | +; CHECK-NEXT: sts c, r24 |
| 39 | +; CHECK-NEXT: pop r17 |
| 40 | +; CHECK-NEXT: pop r16 |
| 41 | +; CHECK-NEXT: pop r14 |
| 42 | +; CHECK-NEXT: ret |
| 43 | + %2 = icmp ugt i16 %0, 9 |
| 44 | + %3 = trunc i16 %0 to i8 |
| 45 | + br i1 %2, label %4, label %9 |
| 46 | +4: ; preds = %1 |
| 47 | + %5 = udiv i16 %0, 10 |
| 48 | + %6 = trunc i16 %5 to i8 |
| 49 | + %7 = mul i8 %6, -10 |
| 50 | + tail call addrspace(1) void @mod(i16 noundef %5) |
| 51 | + %8 = add i8 %7, %3 |
| 52 | + br label %9 |
| 53 | +9: ; preds = %4, %1 |
| 54 | + %10 = phi i8 [ %3, %1 ], [ %8, %4 ] |
| 55 | + %11 = or disjoint i8 %10, 48 |
| 56 | + store i8 %11, ptr @c, align 1 |
| 57 | + ret void |
| 58 | +} |
0 commit comments