181 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=static \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, ptr14; CHECK-NEXT: move.l src, dst15; CHECK-NEXT: rts16entry:17 store ptr @dst, ptr @ptr18 %tmp.s = load i32, ptr @src19 store i32 %tmp.s, ptr @dst20 ret void21}22 23@ptr2 = global ptr null24@dst2 = global i32 025@src2 = global i32 026 27define void @test1() nounwind {28; CHECK-LABEL: test1:29; CHECK: ; %bb.0: ; %entry30; CHECK-NEXT: move.l #dst2, ptr231; CHECK-NEXT: move.l src2, dst232; CHECK-NEXT: rts33entry:34 store ptr @dst2, ptr @ptr235 %tmp.s = load i32, ptr @src236 store i32 %tmp.s, ptr @dst237 ret void38}39 40declare ptr @malloc(i32)41 42define void @test2() nounwind {43; CHECK-LABEL: test2:44; CHECK: ; %bb.0: ; %entry45; CHECK-NEXT: suba.l #4, %sp46; CHECK-NEXT: move.l #40, (%sp)47; CHECK-NEXT: jsr malloc48; CHECK-NEXT: adda.l #4, %sp49; CHECK-NEXT: rts50entry:51 %ptr = call ptr @malloc(i32 40)52 ret void53}54 55@pfoo = external global ptr56declare ptr @afoo(...)57 58 59define void @test3() nounwind {60; CHECK-LABEL: test3:61; CHECK: ; %bb.0: ; %entry62; CHECK-NEXT: suba.l #4, %sp63; CHECK-NEXT: jsr afoo64; CHECK-NEXT: move.l %a0, pfoo65; CHECK-NEXT: jsr (%a0)66; CHECK-NEXT: adda.l #4, %sp67; CHECK-NEXT: rts68entry:69 %tmp = call ptr(...) @afoo()70 store ptr %tmp, ptr @pfoo71 %tmp1 = load ptr, ptr @pfoo72 call void(...) %tmp1()73 ret void74}75 76declare void @foo(...)77 78define void @test4() nounwind {79; CHECK-LABEL: test4:80; CHECK: ; %bb.0: ; %entry81; CHECK-NEXT: suba.l #4, %sp82; CHECK-NEXT: jsr foo83; CHECK-NEXT: adda.l #4, %sp84; CHECK-NEXT: rts85entry:86 call void(...) @foo()87 ret void88}89 90@ptr6 = internal global ptr null91@dst6 = internal global i32 092@src6 = internal global i32 093 94define void @test5() nounwind {95; CHECK-LABEL: test5:96; CHECK: ; %bb.0: ; %entry97; CHECK-NEXT: move.l #dst6, ptr698; CHECK-NEXT: move.l src6, dst699; CHECK-NEXT: rts100entry:101 store ptr @dst6, ptr @ptr6102 %tmp.s = load i32, ptr @src6103 store i32 %tmp.s, ptr @dst6104 ret void105}106 107define void @test7(i32 %n.u) nounwind {108; CHECK-LABEL: test7:109; CHECK: ; %bb.0: ; %entry110; CHECK-NEXT: move.l (4,%sp), %d0111; CHECK-NEXT: add.l #-1, %d0112; CHECK-NEXT: move.l %d0, %d1113; CHECK-NEXT: sub.l #12, %d1114; CHECK-NEXT: bhi .LBB6_12115; CHECK-NEXT: ; %bb.1: ; %entry116; CHECK-NEXT: lsl.l #2, %d0117; CHECK-NEXT: move.l #.LJTI6_0, %a0118; CHECK-NEXT: move.l (0,%a0,%d0), %a0119; CHECK-NEXT: jmp (%a0)120; CHECK-NEXT: .LBB6_12: ; %bb2121; CHECK-NEXT: bra foo6 ; TAILCALL122; CHECK-NEXT: .LBB6_3: ; %bb5123; CHECK-NEXT: bra foo5 ; TAILCALL124; CHECK-NEXT: .LBB6_5: ; %bb1125; CHECK-NEXT: bra foo2 ; TAILCALL126; CHECK-NEXT: .LBB6_2: ; %bb127; CHECK-NEXT: bra foo1 ; TAILCALL128; CHECK-NEXT: .LBB6_9: ; %bb4129; CHECK-NEXT: bra foo4 ; TAILCALL130; CHECK-NEXT: .LBB6_8: ; %bb3131; CHECK-NEXT: bra foo3 ; TAILCALL132entry:133 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 ]134bb:135 tail call void(...) @foo1()136 ret void137bb1:138 tail call void(...) @foo2()139 ret void140bb2:141 tail call void(...) @foo6()142 ret void143bb3:144 tail call void(...) @foo3()145 ret void146bb4:147 tail call void(...) @foo4()148 ret void149bb5:150 tail call void(...) @foo5()151 ret void152bb6:153 tail call void(...) @foo1()154 ret void155bb7:156 tail call void(...) @foo2()157 ret void158bb8:159 tail call void(...) @foo6()160 ret void161bb9:162 tail call void(...) @foo3()163 ret void164bb10:165 tail call void(...) @foo4()166 ret void167bb11:168 tail call void(...) @foo5()169 ret void170bb12:171 tail call void(...) @foo6()172 ret void173}174 175declare void @foo1(...)176declare void @foo2(...)177declare void @foo6(...)178declare void @foo3(...)179declare void @foo4(...)180declare void @foo5(...)181