brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.0 KiB · 407bbd4 Raw
197 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=medium -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 (_GLOBAL_OFFSET_TABLE_@GOTPCREL,%pc), %a0104; CHECK-NEXT:    move.l %a0, %a1105; CHECK-NEXT:    adda.l #dst6@GOTOFF, %a1106; CHECK-NEXT:    move.l #ptr6@GOTOFF, %d0107; CHECK-NEXT:    move.l %a1, (0,%a0,%d0)108; CHECK-NEXT:    move.l #src6@GOTOFF, %d0109; CHECK-NEXT:    move.l #dst6@GOTOFF, %d1110; CHECK-NEXT:    move.l (0,%a0,%d0), (0,%a0,%d1)111; CHECK-NEXT:    rts112entry:113    store ptr @dst6, ptr @ptr6114    %tmp.s = load i32, ptr @src6115    store i32 %tmp.s, ptr @dst6116    ret void117}118 119define void @test7(i32 %n.u) nounwind {120; CHECK-LABEL: test7:121; CHECK:       ; %bb.0: ; %entry122; CHECK-NEXT:    move.l (4,%sp), %d0123; CHECK-NEXT:    add.l #-1, %d0124; CHECK-NEXT:    move.l %d0, %d1125; CHECK-NEXT:    sub.l #12, %d1126; CHECK-NEXT:    bhi .LBB6_12127; CHECK-NEXT:  ; %bb.1: ; %entry128; CHECK-NEXT:    lea (_GLOBAL_OFFSET_TABLE_@GOTPCREL,%pc), %a0129; CHECK-NEXT:    lsl.l #2, %d0130; CHECK-NEXT:    move.l %a0, %a1131; CHECK-NEXT:    adda.l #.LJTI6_0@GOTOFF, %a1132; CHECK-NEXT:    move.l %a0, %d1133; CHECK-NEXT:    add.l (0,%a1,%d0), %d1134; CHECK-NEXT:    move.l %d1, %a0135; CHECK-NEXT:    jmp (%a0)136; CHECK-NEXT:  .LBB6_12: ; %bb2137; CHECK-NEXT:    bra foo6@PLT ; TAILCALL138; CHECK-NEXT:  .LBB6_3: ; %bb5139; CHECK-NEXT:    bra foo5@PLT ; TAILCALL140; CHECK-NEXT:  .LBB6_5: ; %bb1141; CHECK-NEXT:    bra foo2@PLT ; TAILCALL142; CHECK-NEXT:  .LBB6_2: ; %bb143; CHECK-NEXT:    bra foo1@PLT ; TAILCALL144; CHECK-NEXT:  .LBB6_9: ; %bb4145; CHECK-NEXT:    bra foo4@PLT ; TAILCALL146; CHECK-NEXT:  .LBB6_8: ; %bb3147; CHECK-NEXT:    bra foo3@PLT ; TAILCALL148entry:149    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 ]150bb:151    tail call void(...) @foo1()152    ret void153bb1:154    tail call void(...) @foo2()155    ret void156bb2:157    tail call void(...) @foo6()158    ret void159bb3:160    tail call void(...) @foo3()161    ret void162bb4:163    tail call void(...) @foo4()164    ret void165bb5:166    tail call void(...) @foo5()167    ret void168bb6:169    tail call void(...) @foo1()170    ret void171bb7:172    tail call void(...) @foo2()173    ret void174bb8:175    tail call void(...) @foo6()176    ret void177bb9:178    tail call void(...) @foo3()179    ret void180bb10:181    tail call void(...) @foo4()182    ret void183bb11:184    tail call void(...) @foo5()185    ret void186bb12:187    tail call void(...) @foo6()188    ret void189}190 191declare void @foo1(...)192declare void @foo2(...)193declare void @foo6(...)194declare void @foo3(...)195declare void @foo4(...)196declare void @foo5(...)197