brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.8 KiB · 1fd3cf0 Raw
136 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=avr -mcpu=atmega328 | FileCheck %s --check-prefix=AVR513; RUN: llc < %s -mtriple=avr -mcpu=at90s8515 | FileCheck %s --check-prefix=AVR24 5; Test for bug https://github.com/llvm/llvm-project/issues/564236 7define i32 @foo(i32 %x, i32 %in_min, i32 %in_max, i32 %out_min, i32 %out_max) {8; AVR51-LABEL: foo:9; AVR51:       ; %bb.0: ; %entry10; AVR51-NEXT:    push r611; AVR51-NEXT:    push r712; AVR51-NEXT:    push r813; AVR51-NEXT:    push r914; AVR51-NEXT:    push r1415; AVR51-NEXT:    push r1516; AVR51-NEXT:    push r1617; AVR51-NEXT:    push r1718; AVR51-NEXT:    push r2819; AVR51-NEXT:    push r2920; AVR51-NEXT:    in r28, 6121; AVR51-NEXT:    in r29, 6222; AVR51-NEXT:    movw r8, r2023; AVR51-NEXT:    movw r6, r1824; AVR51-NEXT:    movw r20, r2425; AVR51-NEXT:    movw r18, r2226; AVR51-NEXT:    ldd r22, Y+1327; AVR51-NEXT:    ldd r23, Y+1428; AVR51-NEXT:    ldd r24, Y+1529; AVR51-NEXT:    ldd r25, Y+1630; AVR51-NEXT:    sub r22, r1031; AVR51-NEXT:    sbc r23, r1132; AVR51-NEXT:    sbc r24, r1233; AVR51-NEXT:    sbc r25, r1334; AVR51-NEXT:    sub r18, r635; AVR51-NEXT:    sbc r19, r736; AVR51-NEXT:    sbc r20, r837; AVR51-NEXT:    sbc r21, r938; AVR51-NEXT:    call __mulsi339; AVR51-NEXT:    sub r14, r640; AVR51-NEXT:    sbc r15, r741; AVR51-NEXT:    sbc r16, r842; AVR51-NEXT:    sbc r17, r943; AVR51-NEXT:    movw r18, r1444; AVR51-NEXT:    movw r20, r1645; AVR51-NEXT:    call __divmodsi446; AVR51-NEXT:    add r18, r1047; AVR51-NEXT:    adc r19, r1148; AVR51-NEXT:    adc r20, r1249; AVR51-NEXT:    adc r21, r1350; AVR51-NEXT:    movw r22, r1851; AVR51-NEXT:    movw r24, r2052; AVR51-NEXT:    pop r2953; AVR51-NEXT:    pop r2854; AVR51-NEXT:    pop r1755; AVR51-NEXT:    pop r1656; AVR51-NEXT:    pop r1557; AVR51-NEXT:    pop r1458; AVR51-NEXT:    pop r959; AVR51-NEXT:    pop r860; AVR51-NEXT:    pop r761; AVR51-NEXT:    pop r662; AVR51-NEXT:    ret63;64; AVR2-LABEL: foo:65; AVR2:       ; %bb.0: ; %entry66; AVR2-NEXT:    push r667; AVR2-NEXT:    push r768; AVR2-NEXT:    push r869; AVR2-NEXT:    push r970; AVR2-NEXT:    push r1471; AVR2-NEXT:    push r1572; AVR2-NEXT:    push r1673; AVR2-NEXT:    push r1774; AVR2-NEXT:    push r2875; AVR2-NEXT:    push r2976; AVR2-NEXT:    in r28, 6177; AVR2-NEXT:    in r29, 6278; AVR2-NEXT:    mov r8, r2079; AVR2-NEXT:    mov r9, r2180; AVR2-NEXT:    mov r6, r1881; AVR2-NEXT:    mov r7, r1982; AVR2-NEXT:    mov r20, r2483; AVR2-NEXT:    mov r21, r2584; AVR2-NEXT:    mov r18, r2285; AVR2-NEXT:    mov r19, r2386; AVR2-NEXT:    ldd r22, Y+1387; AVR2-NEXT:    ldd r23, Y+1488; AVR2-NEXT:    ldd r24, Y+1589; AVR2-NEXT:    ldd r25, Y+1690; AVR2-NEXT:    sub r22, r1091; AVR2-NEXT:    sbc r23, r1192; AVR2-NEXT:    sbc r24, r1293; AVR2-NEXT:    sbc r25, r1394; AVR2-NEXT:    sub r18, r695; AVR2-NEXT:    sbc r19, r796; AVR2-NEXT:    sbc r20, r897; AVR2-NEXT:    sbc r21, r998; AVR2-NEXT:    rcall __mulsi399; AVR2-NEXT:    sub r14, r6100; AVR2-NEXT:    sbc r15, r7101; AVR2-NEXT:    sbc r16, r8102; AVR2-NEXT:    sbc r17, r9103; AVR2-NEXT:    mov r18, r14104; AVR2-NEXT:    mov r19, r15105; AVR2-NEXT:    mov r20, r16106; AVR2-NEXT:    mov r21, r17107; AVR2-NEXT:    rcall __divmodsi4108; AVR2-NEXT:    add r18, r10109; AVR2-NEXT:    adc r19, r11110; AVR2-NEXT:    adc r20, r12111; AVR2-NEXT:    adc r21, r13112; AVR2-NEXT:    mov r22, r18113; AVR2-NEXT:    mov r23, r19114; AVR2-NEXT:    mov r24, r20115; AVR2-NEXT:    mov r25, r21116; AVR2-NEXT:    pop r29117; AVR2-NEXT:    pop r28118; AVR2-NEXT:    pop r17119; AVR2-NEXT:    pop r16120; AVR2-NEXT:    pop r15121; AVR2-NEXT:    pop r14122; AVR2-NEXT:    pop r9123; AVR2-NEXT:    pop r8124; AVR2-NEXT:    pop r7125; AVR2-NEXT:    pop r6126; AVR2-NEXT:    ret127entry:128  %sub = sub nsw i32 %x, %in_min129  %sub1 = sub nsw i32 %out_max, %out_min130  %mul = mul nsw i32 %sub1, %sub131  %sub2 = sub nsw i32 %in_max, %in_min132  %div = sdiv i32 %mul, %sub2133  %add = add nsw i32 %div, %out_min134  ret i32 %add135}136