brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.7 KiB · 3711595 Raw
190 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -O2 -mtriple=m68k -verify-machineinstrs \3; RUN:              -code-model=small -relocation-model=pic \4; RUN:   | FileCheck %s5 6@ptr = external global ptr7@dst = external global i328@src = external global i329 10define void @test0() nounwind {11; CHECK-LABEL: test0:12; CHECK:       ; %bb.0: ; %entry13; CHECK-NEXT:    move.l (dst@GOTPCREL,%pc), %a014; CHECK-NEXT:    move.l (ptr@GOTPCREL,%pc), %a115; CHECK-NEXT:    move.l %a0, (%a1)16; CHECK-NEXT:    move.l (src@GOTPCREL,%pc), %a117; CHECK-NEXT:    move.l (%a1), (%a0)18; CHECK-NEXT:    rts19entry:20    store ptr @dst, ptr @ptr21    %tmp.s = load i32, ptr @src22    store i32 %tmp.s, ptr @dst23    ret void24}25 26@ptr2 = global ptr null27@dst2 = global i32 028@src2 = global i32 029 30define void @test1() nounwind {31; CHECK-LABEL: test1:32; CHECK:       ; %bb.0: ; %entry33; CHECK-NEXT:    move.l (dst2@GOTPCREL,%pc), %a034; CHECK-NEXT:    move.l (ptr2@GOTPCREL,%pc), %a135; CHECK-NEXT:    move.l %a0, (%a1)36; CHECK-NEXT:    move.l (src2@GOTPCREL,%pc), %a137; CHECK-NEXT:    move.l (%a1), (%a0)38; CHECK-NEXT:    rts39entry:40    store ptr @dst2, ptr @ptr241    %tmp.s = load i32, ptr @src242    store i32 %tmp.s, ptr @dst243    ret void44}45 46declare ptr @malloc(i32)47 48define void @test2() nounwind {49; CHECK-LABEL: test2:50; CHECK:       ; %bb.0: ; %entry51; CHECK-NEXT:    suba.l #4, %sp52; CHECK-NEXT:    move.l #40, (%sp)53; CHECK-NEXT:    jsr (malloc@PLT,%pc)54; CHECK-NEXT:    adda.l #4, %sp55; CHECK-NEXT:    rts56entry:57    %ptr = call ptr @malloc(i32 40)58    ret void59}60 61@pfoo = external global ptr62declare ptr @afoo(...)63 64define void @test3() nounwind {65; CHECK-LABEL: test3:66; CHECK:       ; %bb.0: ; %entry67; CHECK-NEXT:    suba.l #4, %sp68; CHECK-NEXT:    jsr (afoo@PLT,%pc)69; CHECK-NEXT:    move.l (pfoo@GOTPCREL,%pc), %a170; CHECK-NEXT:    move.l %a0, (%a1)71; CHECK-NEXT:    jsr (%a0)72; CHECK-NEXT:    adda.l #4, %sp73; CHECK-NEXT:    rts74entry:75    %tmp = call ptr(...) @afoo()76    store ptr %tmp, ptr @pfoo77    %tmp1 = load ptr, ptr @pfoo78    call void(...) %tmp1()79    ret void80}81 82declare void @foo(...)83 84define void @test4() nounwind {85; CHECK-LABEL: test4:86; CHECK:       ; %bb.0: ; %entry87; CHECK-NEXT:    suba.l #4, %sp88; CHECK-NEXT:    jsr (foo@PLT,%pc)89; CHECK-NEXT:    adda.l #4, %sp90; CHECK-NEXT:    rts91entry:92    call void(...) @foo()93    ret void94}95 96@ptr6 = internal global ptr null97@dst6 = internal global i32 098@src6 = internal global i32 099 100define void @test5() nounwind {101; CHECK-LABEL: test5:102; CHECK:       ; %bb.0: ; %entry103; CHECK-NEXT:    lea (dst6,%pc), %a0104; CHECK-NEXT:    move.l %a0, (ptr6,%pc)105; CHECK-NEXT:    move.l (src6,%pc), (dst6,%pc)106; CHECK-NEXT:    rts107entry:108    store ptr @dst6, ptr @ptr6109    %tmp.s = load i32, ptr @src6110    store i32 %tmp.s, ptr @dst6111    ret void112}113 114define void @test7(i32 %n.u) nounwind {115; CHECK-LABEL: test7:116; CHECK:       ; %bb.0: ; %entry117; CHECK-NEXT:    move.l (4,%sp), %d0118; CHECK-NEXT:    add.l #-1, %d0119; CHECK-NEXT:    move.l %d0, %d1120; CHECK-NEXT:    sub.l #12, %d1121; CHECK-NEXT:    bhi .LBB6_12122; CHECK-NEXT:  ; %bb.1: ; %entry123; CHECK-NEXT:    lsl.l #2, %d0124; CHECK-NEXT:    lea (.LJTI6_0,%pc), %a0125; CHECK-NEXT:    move.l %a0, %d1126; CHECK-NEXT:    add.l (0,%a0,%d0), %d1127; CHECK-NEXT:    move.l %d1, %a0128; CHECK-NEXT:    jmp (%a0)129; CHECK-NEXT:  .LBB6_12: ; %bb2130; CHECK-NEXT:    bra foo6@PLT ; TAILCALL131; CHECK-NEXT:  .LBB6_3: ; %bb5132; CHECK-NEXT:    bra foo5@PLT ; TAILCALL133; CHECK-NEXT:  .LBB6_5: ; %bb1134; CHECK-NEXT:    bra foo2@PLT ; TAILCALL135; CHECK-NEXT:  .LBB6_2: ; %bb136; CHECK-NEXT:    bra foo1@PLT ; TAILCALL137; CHECK-NEXT:  .LBB6_9: ; %bb4138; CHECK-NEXT:    bra foo4@PLT ; TAILCALL139; CHECK-NEXT:  .LBB6_8: ; %bb3140; CHECK-NEXT:    bra foo3@PLT ; TAILCALL141entry:142    switch i32 %n.u, label %bb12 [i32 1, label %bb i32 2, label %bb6 i32 4, label %bb7 i32 5, label %bb8 i32 6, label %bb10 i32 7, label %bb1 i32 8, label %bb3 i32 9, label %bb4 i32 10, label %bb9 i32 11, label %bb2 i32 12, label %bb5 i32 13, label %bb11 ]143bb:144    tail call void(...) @foo1()145    ret void146bb1:147    tail call void(...) @foo2()148    ret void149bb2:150    tail call void(...) @foo6()151    ret void152bb3:153    tail call void(...) @foo3()154    ret void155bb4:156    tail call void(...) @foo4()157    ret void158bb5:159    tail call void(...) @foo5()160    ret void161bb6:162    tail call void(...) @foo1()163    ret void164bb7:165    tail call void(...) @foo2()166    ret void167bb8:168    tail call void(...) @foo6()169    ret void170bb9:171    tail call void(...) @foo3()172    ret void173bb10:174    tail call void(...) @foo4()175    ret void176bb11:177    tail call void(...) @foo5()178    ret void179bb12:180    tail call void(...) @foo6()181    ret void182}183 184declare void @foo1(...)185declare void @foo2(...)186declare void @foo6(...)187declare void @foo3(...)188declare void @foo4(...)189declare void @foo5(...)190