brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.3 KiB · 3d398af Raw
132 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; External Linkage7@a = global i32 0, align 48 9define i32 @my_access_global_a() #0 {10; CHECK-LABEL: my_access_global_a:11; CHECK:         .cfi_startproc12; CHECK-NEXT:  ; %bb.0: ; %entry13; CHECK-NEXT:    move.l (a@GOTPCREL,%pc), %a014; CHECK-NEXT:    move.l (%a0), %d015; CHECK-NEXT:    rts16entry:17  %0 = load i32, ptr @a, align 418  ret i32 %019}20 21; WeakAny Linkage22@b = weak global i32 0, align 423 24define i32 @my_access_global_b() #0 {25; CHECK-LABEL: my_access_global_b:26; CHECK:         .cfi_startproc27; CHECK-NEXT:  ; %bb.0: ; %entry28; CHECK-NEXT:    move.l (b@GOTPCREL,%pc), %a029; CHECK-NEXT:    move.l (%a0), %d030; CHECK-NEXT:    rts31entry:32 %0 = load i32, ptr @b, align 433 ret i32 %034}35 36; Internal Linkage37@c = internal global i32 0, align 438 39define i32 @my_access_global_c() #0 {40; CHECK-LABEL: my_access_global_c:41; CHECK:         .cfi_startproc42; CHECK-NEXT:  ; %bb.0: ; %entry43; CHECK-NEXT:    lea (_GLOBAL_OFFSET_TABLE_@GOTPCREL,%pc), %a044; CHECK-NEXT:    move.l #c@GOTOFF, %d045; CHECK-NEXT:    move.l (0,%a0,%d0), %d046; CHECK-NEXT:    rts47entry:48 %0 = load i32, ptr @c, align 449 ret i32 %050}51 52; External Linkage, only declaration.53@d = external global i32, align 454 55define i32 @my_access_global_load_d() #0 {56; CHECK-LABEL: my_access_global_load_d:57; CHECK:         .cfi_startproc58; CHECK-NEXT:  ; %bb.0: ; %entry59; CHECK-NEXT:    move.l (d@GOTPCREL,%pc), %a060; CHECK-NEXT:    move.l (%a0), %d061; CHECK-NEXT:    rts62entry:63 %0 = load i32, ptr @d, align 464 ret i32 %065}66 67; External Linkage, only declaration, store a value.68define i32 @my_access_global_store_d() #0 {69; CHECK-LABEL: my_access_global_store_d:70; CHECK:         .cfi_startproc71; CHECK-NEXT:  ; %bb.0: ; %entry72; CHECK-NEXT:    move.l (d@GOTPCREL,%pc), %a073; CHECK-NEXT:    move.l #2, (%a0)74; CHECK-NEXT:    moveq #0, %d075; CHECK-NEXT:    rts76entry:77 store i32 2, ptr @d, align 478 ret i32 079}80 81; External Linkage, function pointer access.82declare i32 @access_fp(ptr)83declare i32 @foo()84 85define i32 @my_access_fp_foo() #0 {86; CHECK-LABEL: my_access_fp_foo:87; CHECK:         .cfi_startproc88; CHECK-NEXT:  ; %bb.0: ; %entry89; CHECK-NEXT:    suba.l #4, %sp90; CHECK-NEXT:    .cfi_def_cfa_offset -891; CHECK-NEXT:    move.l (foo@GOTPCREL,%pc), (%sp)92; CHECK-NEXT:    jsr (access_fp@PLT,%pc)93; CHECK-NEXT:    adda.l #4, %sp94; CHECK-NEXT:    rts95entry:96 %call = call i32 @access_fp(ptr @foo)97 ret i32 %call98}99 100; LinkOnceODR Linkage, function pointer access.101 102$bar = comdat any103 104define linkonce_odr i32 @bar() comdat {105; CHECK-LABEL: bar:106; CHECK:         .cfi_startproc107; CHECK-NEXT:  ; %bb.0: ; %entry108; CHECK-NEXT:    moveq #0, %d0109; CHECK-NEXT:    rts110entry:111 ret i32 0112}113 114define i32 @my_access_fp_bar() #0 {115; CHECK-LABEL: my_access_fp_bar:116; CHECK:         .cfi_startproc117; CHECK-NEXT:  ; %bb.0: ; %entry118; CHECK-NEXT:    suba.l #4, %sp119; CHECK-NEXT:    .cfi_def_cfa_offset -8120; CHECK-NEXT:    move.l (bar@GOTPCREL,%pc), (%sp)121; CHECK-NEXT:    jsr (access_fp@PLT,%pc)122; CHECK-NEXT:    adda.l #4, %sp123; CHECK-NEXT:    rts124entry:125 %call = call i32 @access_fp(ptr @bar)126 ret i32 %call127}128 129!llvm.module.flags = !{!0, !1}130!0 = !{i32 1, !"PIC Level", i32 1}131!1 = !{i32 1, !"PIE Level", i32 1}132