brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · 135bcb7 Raw
147 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=avr --mcpu=atmega328 -O0 -verify-machineinstrs \3; RUN:     | FileCheck -check-prefix=CHECK-O0 %s4; RUN: llc < %s -mtriple=avr --mcpu=atmega328 -O3 -verify-machineinstrs \5; RUN:     | FileCheck -check-prefix=CHECK-O3 %s6 7@arr0 = addrspace(1) constant [4 x i16] [i16 123, i16 234, i16 456, i16 67], align 18@arr1 = addrspace(1) constant [4 x i8] c"ABCD", align 19 10define i16 @foo0(i16 %a) addrspace(1) {11; CHECK-O0-LABEL: foo0:12; CHECK-O0:       ; %bb.0: ; %entry13; CHECK-O0-NEXT:    push r2814; CHECK-O0-NEXT:    push r2915; CHECK-O0-NEXT:    in r28, 6116; CHECK-O0-NEXT:    in r29, 6217; CHECK-O0-NEXT:    sbiw r28, 218; CHECK-O0-NEXT:    in r0, 6319; CHECK-O0-NEXT:    cli20; CHECK-O0-NEXT:    out 62, r2921; CHECK-O0-NEXT:    out 63, r022; CHECK-O0-NEXT:    out 61, r2823; CHECK-O0-NEXT:    std Y+2, r2524; CHECK-O0-NEXT:    std Y+1, r2425; CHECK-O0-NEXT:    ldd r30, Y+126; CHECK-O0-NEXT:    ldd r31, Y+227; CHECK-O0-NEXT:    lsl r3028; CHECK-O0-NEXT:    rol r3129; CHECK-O0-NEXT:    subi r30, lo8(-(arr0))30; CHECK-O0-NEXT:    sbci r31, hi8(-(arr0))31; CHECK-O0-NEXT:    lpm r24, Z+32; CHECK-O0-NEXT:    lpm r25, Z33; CHECK-O0-NEXT:    adiw r28, 234; CHECK-O0-NEXT:    in r0, 6335; CHECK-O0-NEXT:    cli36; CHECK-O0-NEXT:    out 62, r2937; CHECK-O0-NEXT:    out 63, r038; CHECK-O0-NEXT:    out 61, r2839; CHECK-O0-NEXT:    pop r2940; CHECK-O0-NEXT:    pop r2841; CHECK-O0-NEXT:    ret42;43; CHECK-O3-LABEL: foo0:44; CHECK-O3:       ; %bb.0: ; %entry45; CHECK-O3-NEXT:    push r2846; CHECK-O3-NEXT:    push r2947; CHECK-O3-NEXT:    in r28, 6148; CHECK-O3-NEXT:    in r29, 6249; CHECK-O3-NEXT:    sbiw r28, 250; CHECK-O3-NEXT:    in r0, 6351; CHECK-O3-NEXT:    cli52; CHECK-O3-NEXT:    out 62, r2953; CHECK-O3-NEXT:    out 63, r054; CHECK-O3-NEXT:    out 61, r2855; CHECK-O3-NEXT:    std Y+2, r2556; CHECK-O3-NEXT:    std Y+1, r2457; CHECK-O3-NEXT:    lsl r2458; CHECK-O3-NEXT:    rol r2559; CHECK-O3-NEXT:    subi r24, lo8(-(arr0))60; CHECK-O3-NEXT:    sbci r25, hi8(-(arr0))61; CHECK-O3-NEXT:    movw r30, r2462; CHECK-O3-NEXT:    lpm r24, Z+63; CHECK-O3-NEXT:    lpm r25, Z64; CHECK-O3-NEXT:    adiw r28, 265; CHECK-O3-NEXT:    in r0, 6366; CHECK-O3-NEXT:    cli67; CHECK-O3-NEXT:    out 62, r2968; CHECK-O3-NEXT:    out 63, r069; CHECK-O3-NEXT:    out 61, r2870; CHECK-O3-NEXT:    pop r2971; CHECK-O3-NEXT:    pop r2872; CHECK-O3-NEXT:    ret73entry:74  %a.addr = alloca i16, align 175  store i16 %a, ptr %a.addr, align 176  %0 = load i16, ptr %a.addr, align 177  %arrayidx = getelementptr inbounds [4 x i16], ptr addrspace(1) @arr0, i16 0, i16 %078  %1 = load i16, ptr addrspace(1) %arrayidx, align 179  ret i16 %180}81 82define i8 @foo1(i16 %a) addrspace(1) {83; CHECK-O0-LABEL: foo1:84; CHECK-O0:       ; %bb.0: ; %entry85; CHECK-O0-NEXT:    push r2886; CHECK-O0-NEXT:    push r2987; CHECK-O0-NEXT:    in r28, 6188; CHECK-O0-NEXT:    in r29, 6289; CHECK-O0-NEXT:    sbiw r28, 290; CHECK-O0-NEXT:    in r0, 6391; CHECK-O0-NEXT:    cli92; CHECK-O0-NEXT:    out 62, r2993; CHECK-O0-NEXT:    out 63, r094; CHECK-O0-NEXT:    out 61, r2895; CHECK-O0-NEXT:    std Y+2, r2596; CHECK-O0-NEXT:    std Y+1, r2497; CHECK-O0-NEXT:    ldd r30, Y+198; CHECK-O0-NEXT:    ldd r31, Y+299; CHECK-O0-NEXT:    subi r30, lo8(-(arr1))100; CHECK-O0-NEXT:    sbci r31, hi8(-(arr1))101; CHECK-O0-NEXT:    lpm r24, Z102; CHECK-O0-NEXT:    adiw r28, 2103; CHECK-O0-NEXT:    in r0, 63104; CHECK-O0-NEXT:    cli105; CHECK-O0-NEXT:    out 62, r29106; CHECK-O0-NEXT:    out 63, r0107; CHECK-O0-NEXT:    out 61, r28108; CHECK-O0-NEXT:    pop r29109; CHECK-O0-NEXT:    pop r28110; CHECK-O0-NEXT:    ret111;112; CHECK-O3-LABEL: foo1:113; CHECK-O3:       ; %bb.0: ; %entry114; CHECK-O3-NEXT:    push r28115; CHECK-O3-NEXT:    push r29116; CHECK-O3-NEXT:    in r28, 61117; CHECK-O3-NEXT:    in r29, 62118; CHECK-O3-NEXT:    sbiw r28, 2119; CHECK-O3-NEXT:    in r0, 63120; CHECK-O3-NEXT:    cli121; CHECK-O3-NEXT:    out 62, r29122; CHECK-O3-NEXT:    out 63, r0123; CHECK-O3-NEXT:    out 61, r28124; CHECK-O3-NEXT:    std Y+2, r25125; CHECK-O3-NEXT:    std Y+1, r24126; CHECK-O3-NEXT:    subi r24, lo8(-(arr1))127; CHECK-O3-NEXT:    sbci r25, hi8(-(arr1))128; CHECK-O3-NEXT:    movw r30, r24129; CHECK-O3-NEXT:    lpm r24, Z130; CHECK-O3-NEXT:    adiw r28, 2131; CHECK-O3-NEXT:    in r0, 63132; CHECK-O3-NEXT:    cli133; CHECK-O3-NEXT:    out 62, r29134; CHECK-O3-NEXT:    out 63, r0135; CHECK-O3-NEXT:    out 61, r28136; CHECK-O3-NEXT:    pop r29137; CHECK-O3-NEXT:    pop r28138; CHECK-O3-NEXT:    ret139entry:140  %a.addr = alloca i16, align 1141  store i16 %a, ptr %a.addr, align 1142  %0 = load i16, ptr %a.addr, align 1143  %arrayidx = getelementptr inbounds [4 x i8], ptr addrspace(1) @arr1, i16 0, i16 %0144  %1 = load i8, ptr addrspace(1) %arrayidx, align 1145  ret i8 %1146}147