brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · f21e043 Raw
174 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mcpu=atmega328p -O0 < %s -mtriple=avr | FileCheck --check-prefix=CHECK-MEGA %s3; RUN: llc -mattr=avrtiny -O0 < %s -mtriple=avr | FileCheck %s4 5define i16 @reg_copy16(i16, i16 %a) {6; CHECK-MEGA-LABEL: reg_copy16:7; CHECK-MEGA:       ; %bb.0:8; CHECK-MEGA-NEXT:    movw r24, r229; CHECK-MEGA-NEXT:    ret10;11; CHECK-LABEL: reg_copy16:12; CHECK:       ; %bb.0:13; CHECK-NEXT:    mov r24, r2214; CHECK-NEXT:    mov r25, r2315; CHECK-NEXT:    ret16  ret i16 %a17}18 19define i8 @return_zero() {20; CHECK-MEGA-LABEL: return_zero:21; CHECK-MEGA:       ; %bb.0:22; CHECK-MEGA-NEXT:    mov r24, r123; CHECK-MEGA-NEXT:    ret24;25; CHECK-LABEL: return_zero:26; CHECK:       ; %bb.0:27; CHECK-NEXT:    mov r24, r1728; CHECK-NEXT:    ret29  ret i8 030}31 32define i8 @atomic_load8(ptr %foo) {33; CHECK-MEGA-LABEL: atomic_load8:34; CHECK-MEGA:       ; %bb.0:35; CHECK-MEGA-NEXT:    movw r26, r2436; CHECK-MEGA-NEXT:    in r0, 6337; CHECK-MEGA-NEXT:    cli38; CHECK-MEGA-NEXT:    ld r24, X39; CHECK-MEGA-NEXT:    out 63, r040; CHECK-MEGA-NEXT:    ret41;42; CHECK-LABEL: atomic_load8:43; CHECK:       ; %bb.0:44; CHECK-NEXT:    mov r26, r2445; CHECK-NEXT:    mov r27, r2546; CHECK-NEXT:    in r16, 6347; CHECK-NEXT:    cli48; CHECK-NEXT:    ld r24, X49; CHECK-NEXT:    out 63, r1650; CHECK-NEXT:    ret51  %val = load atomic i8, ptr %foo unordered, align 152  ret i8 %val53}54 55define avr_signalcc void @signal_handler_with_asm() {56; CHECK-MEGA-LABEL: signal_handler_with_asm:57; CHECK-MEGA:       ; %bb.0:58; CHECK-MEGA-NEXT:    push r059; CHECK-MEGA-NEXT:    in r0, 6360; CHECK-MEGA-NEXT:    push r061; CHECK-MEGA-NEXT:    push r162; CHECK-MEGA-NEXT:    clr r163; CHECK-MEGA-NEXT:    push r2464; CHECK-MEGA-NEXT:    ldi r24, 365; CHECK-MEGA-NEXT:    ;APP66; CHECK-MEGA-NEXT:    mov r24, r2467; CHECK-MEGA-NEXT:    ;NO_APP68; CHECK-MEGA-NEXT:    pop r2469; CHECK-MEGA-NEXT:    pop r170; CHECK-MEGA-NEXT:    pop r071; CHECK-MEGA-NEXT:    out 63, r072; CHECK-MEGA-NEXT:    pop r073; CHECK-MEGA-NEXT:    reti74;75; CHECK-LABEL: signal_handler_with_asm:76; CHECK:       ; %bb.0:77; CHECK-NEXT:    push r1678; CHECK-NEXT:    in r16, 6379; CHECK-NEXT:    push r1680; CHECK-NEXT:    push r1781; CHECK-NEXT:    clr r1782; CHECK-NEXT:    push r2483; CHECK-NEXT:    ldi r24, 384; CHECK-NEXT:    ;APP85; CHECK-NEXT:    mov r24, r2486; CHECK-NEXT:    ;NO_APP87; CHECK-NEXT:    pop r2488; CHECK-NEXT:    pop r1789; CHECK-NEXT:    pop r1690; CHECK-NEXT:    out 63, r1691; CHECK-NEXT:    pop r1692; CHECK-NEXT:    reti93  call i8 asm sideeffect "mov $0, $1", "=r,r"(i8 3) nounwind94  ret void95}96 97declare void @foo()98 99define avr_signalcc void @signal_handler_with_call() {100; CHECK-MEGA-LABEL: signal_handler_with_call:101; CHECK-MEGA:       ; %bb.0:102; CHECK-MEGA-NEXT:    push r0103; CHECK-MEGA-NEXT:    in r0, 63104; CHECK-MEGA-NEXT:    push r0105; CHECK-MEGA-NEXT:    push r1106; CHECK-MEGA-NEXT:    clr r1107; CHECK-MEGA-NEXT:    push r18108; CHECK-MEGA-NEXT:    push r19109; CHECK-MEGA-NEXT:    push r20110; CHECK-MEGA-NEXT:    push r21111; CHECK-MEGA-NEXT:    push r22112; CHECK-MEGA-NEXT:    push r23113; CHECK-MEGA-NEXT:    push r24114; CHECK-MEGA-NEXT:    push r25115; CHECK-MEGA-NEXT:    push r26116; CHECK-MEGA-NEXT:    push r27117; CHECK-MEGA-NEXT:    push r30118; CHECK-MEGA-NEXT:    push r31119; CHECK-MEGA-NEXT:    call foo120; CHECK-MEGA-NEXT:    pop r31121; CHECK-MEGA-NEXT:    pop r30122; CHECK-MEGA-NEXT:    pop r27123; CHECK-MEGA-NEXT:    pop r26124; CHECK-MEGA-NEXT:    pop r25125; CHECK-MEGA-NEXT:    pop r24126; CHECK-MEGA-NEXT:    pop r23127; CHECK-MEGA-NEXT:    pop r22128; CHECK-MEGA-NEXT:    pop r21129; CHECK-MEGA-NEXT:    pop r20130; CHECK-MEGA-NEXT:    pop r19131; CHECK-MEGA-NEXT:    pop r18132; CHECK-MEGA-NEXT:    pop r1133; CHECK-MEGA-NEXT:    pop r0134; CHECK-MEGA-NEXT:    out 63, r0135; CHECK-MEGA-NEXT:    pop r0136; CHECK-MEGA-NEXT:    reti137;138; CHECK-LABEL: signal_handler_with_call:139; CHECK:       ; %bb.0:140; CHECK-NEXT:    push r16141; CHECK-NEXT:    in r16, 63142; CHECK-NEXT:    push r16143; CHECK-NEXT:    push r17144; CHECK-NEXT:    clr r17145; CHECK-NEXT:    push r20146; CHECK-NEXT:    push r21147; CHECK-NEXT:    push r22148; CHECK-NEXT:    push r23149; CHECK-NEXT:    push r24150; CHECK-NEXT:    push r25151; CHECK-NEXT:    push r26152; CHECK-NEXT:    push r27153; CHECK-NEXT:    push r30154; CHECK-NEXT:    push r31155; CHECK-NEXT:    rcall foo156; CHECK-NEXT:    pop r31157; CHECK-NEXT:    pop r30158; CHECK-NEXT:    pop r27159; CHECK-NEXT:    pop r26160; CHECK-NEXT:    pop r25161; CHECK-NEXT:    pop r24162; CHECK-NEXT:    pop r23163; CHECK-NEXT:    pop r22164; CHECK-NEXT:    pop r21165; CHECK-NEXT:    pop r20166; CHECK-NEXT:    pop r17167; CHECK-NEXT:    pop r16168; CHECK-NEXT:    out 63, r16169; CHECK-NEXT:    pop r16170; CHECK-NEXT:    reti171  call void @foo()172  ret void173}174