[llvm] [AVR] Add extra codegen test (PR #152902)

Tom Vijlbrief via llvm-commits llvm-commits at lists.llvm.org
Sun Aug 10 01:59:20 PDT 2025


https://github.com/tomtor created https://github.com/llvm/llvm-project/pull/152902

See https://github.com/llvm/llvm-project/pull/152028

>From b2b99a44e03bbb772ccc41ee5ef1e7f9f589f2e9 Mon Sep 17 00:00:00 2001
From: Tom Vijlbrief <tvijlbrief at gmail.com>
Date: Sun, 10 Aug 2025 10:58:04 +0200
Subject: [PATCH] [AVR] Add extra codegen test

---
 llvm/test/CodeGen/AVR/issue-151080-mod.ll | 58 +++++++++++++++++++++++
 1 file changed, 58 insertions(+)
 create mode 100644 llvm/test/CodeGen/AVR/issue-151080-mod.ll

diff --git a/llvm/test/CodeGen/AVR/issue-151080-mod.ll b/llvm/test/CodeGen/AVR/issue-151080-mod.ll
new file mode 100644
index 0000000000000..e2981236482e6
--- /dev/null
+++ b/llvm/test/CodeGen/AVR/issue-151080-mod.ll
@@ -0,0 +1,58 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc < %s -O=3 -mtriple=avr-none -mcpu=attiny85 -verify-machineinstrs | FileCheck %s
+
+ at c = dso_local local_unnamed_addr global i8 0, align 1
+define dso_local void @mod(i16 noundef %0) local_unnamed_addr addrspace(1) {
+; CHECK-LABEL: mod:
+; CHECK:       ; %bb.0:
+; CHECK-NEXT:    push r14
+; CHECK-NEXT:    push r16
+; CHECK-NEXT:    push r17
+; CHECK-NEXT:    cpi r24, 10
+; CHECK-NEXT:    cpc r25, r1
+; CHECK-NEXT:    brlo .LBB0_2
+; CHECK-NEXT:  ; %bb.1:
+; CHECK-NEXT:    ldi r18, 205
+; CHECK-NEXT:    ldi r19, 204
+; CHECK-NEXT:    ldi r20, 0
+; CHECK-NEXT:    ldi r21, 0
+; CHECK-NEXT:    movw r22, r24
+; CHECK-NEXT:    mov r14, r24
+; CHECK-NEXT:    movw r24, r20
+; CHECK-NEXT:    rcall __mulsi3
+; CHECK-NEXT:    movw r16, r24
+; CHECK-NEXT:    lsr r17
+; CHECK-NEXT:    ror r16
+; CHECK-NEXT:    lsr r17
+; CHECK-NEXT:    ror r16
+; CHECK-NEXT:    lsr r17
+; CHECK-NEXT:    ror r16
+; CHECK-NEXT:    movw r24, r16
+; CHECK-NEXT:    rcall mod
+; CHECK-NEXT:    mov r24, r16
+; CHECK-NEXT:    ldi r22, -10
+; CHECK-NEXT:    rcall __mulqi3
+; CHECK-NEXT:    add r24, r14
+; CHECK-NEXT:  .LBB0_2:
+; CHECK-NEXT:    ori r24, 48
+; CHECK-NEXT:    sts c, r24
+; CHECK-NEXT:    pop r17
+; CHECK-NEXT:    pop r16
+; CHECK-NEXT:    pop r14
+; CHECK-NEXT:    ret
+  %2 = icmp ugt i16 %0, 9
+  %3 = trunc i16 %0 to i8
+  br i1 %2, label %4, label %9
+4:                                                ; preds = %1
+  %5 = udiv i16 %0, 10
+  %6 = trunc i16 %5 to i8
+  %7 = mul i8 %6, -10
+  tail call addrspace(1) void @mod(i16 noundef %5)
+  %8 = add i8 %7, %3
+  br label %9
+9:                                                ; preds = %4, %1
+  %10 = phi i8 [ %3, %1 ], [ %8, %4 ]
+  %11 = or disjoint i8 %10, 48
+  store i8 %11, ptr @c, align 1
+  ret void
+}



More information about the llvm-commits mailing list