| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py | ||
| ; RUN: llc -mtriple=m68k --relocation-model=pic -o - %s | FileCheck %s | ||
|
|
||
| @myvar = internal thread_local global i32 2, align 4 | ||
|
|
||
| define dso_local ptr @get_addr() nounwind { | ||
| ; CHECK-LABEL: get_addr: | ||
| ; CHECK: ; %bb.0: ; %entry | ||
| ; CHECK-NEXT: suba.l #4, %sp | ||
| ; CHECK-NEXT: lea (_GLOBAL_OFFSET_TABLE_@GOTPCREL,%pc), %a0 | ||
| ; CHECK-NEXT: adda.l myvar@TLSLDM, %a0 | ||
| ; CHECK-NEXT: move.l %a0, (%sp) | ||
| ; CHECK-NEXT: jsr (__tls_get_addr@PLT,%pc) | ||
| ; CHECK-NEXT: adda.l myvar@TLSLD, %a0 | ||
| ; CHECK-NEXT: adda.l #4, %sp | ||
| ; CHECK-NEXT: rts | ||
| entry: | ||
| %0 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @myvar) | ||
| ret ptr %0 | ||
| } | ||
|
|
||
| declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,19 @@ | ||
| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py | ||
| ; RUN: llc -mtriple=m68k -o - %s | FileCheck %s | ||
|
|
||
| @myvar = internal thread_local global i32 2, align 4 | ||
|
|
||
| define dso_local ptr @get_addr() nounwind { | ||
| ; CHECK-LABEL: get_addr: | ||
| ; CHECK: ; %bb.0: ; %entry | ||
| ; CHECK-NEXT: suba.l #4, %sp | ||
| ; CHECK-NEXT: jsr __m68k_read_tp@PLT | ||
| ; CHECK-NEXT: adda.l myvar@TPOFF, %a0 | ||
| ; CHECK-NEXT: adda.l #4, %sp | ||
| ; CHECK-NEXT: rts | ||
| entry: | ||
| %0 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @myvar) | ||
| ret ptr %0 | ||
| } | ||
|
|
||
| declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -214,3 +214,6 @@ | |
|
|
||
| # CHECK: or.l %d1, %d6 | ||
| 0x8c 0x81 | ||
|
|
||
| # CHECK: adda.l $f0001, %a0 | ||
| 0xd1 0xf9 0x00 0x0f 0x00 0x01 | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,35 @@ | ||
| ; RUN: llvm-mc -triple=m68k -show-encoding %s | FileCheck %s | ||
|
|
||
| ; CHECK: bsr.b .LBB0_1 | ||
| ; CHECK-SAME: encoding: [0x61,A] | ||
| ; CHECK: fixup A - offset: 1, value: .LBB0_1-1, kind: FK_PCRel_1 | ||
| bsr.b .LBB0_1 | ||
| ; CHECK: bsr.w .LBB0_2 | ||
| ; CHECK-SAME: encoding: [0x61,0x00,A,A] | ||
| ; CHECK: fixup A - offset: 2, value: .LBB0_2, kind: FK_PCRel_2 | ||
| bsr.w .LBB0_2 | ||
| ; CHECK: bsr.l .LBB0_3 | ||
| ; CHECK-SAME: encoding: [0x61,0xff,A,A,A,A] | ||
| ; CHECK: fixup A - offset: 2, value: .LBB0_3, kind: FK_PCRel_4 | ||
| bsr.l .LBB0_3 | ||
| .LBB0_1: | ||
| ; CHECK: add.l #0, %d0 | ||
| ; CHECK-SAME: encoding: [0xd0,0xbc,0x00,0x00,0x00,0x00] | ||
| add.l #0, %d0 | ||
| ; CHECK: rts | ||
| ; CHECK-SAME: encoding: [0x4e,0x75] | ||
| rts | ||
| .LBB0_2: | ||
| ; CHECK: add.l #1, %d0 | ||
| ; CHECK-SAME: encoding: [0xd0,0xbc,0x00,0x00,0x00,0x01] | ||
| add.l #1, %d0 | ||
| ; CHECK: rts | ||
| ; CHECK-SAME: encoding: [0x4e,0x75] | ||
| rts | ||
| .LBB0_3: | ||
| ; CHECK: add.l #1, %d0 | ||
| ; CHECK-SAME: encoding: [0xd0,0xbc,0x00,0x00,0x00,0x01] | ||
| add.l #1, %d0 | ||
| ; CHECK: rts | ||
| ; CHECK-SAME: encoding: [0x4e,0x75] | ||
| rts |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,51 @@ | ||
| ; RUN: llvm-mc -triple=m68k -motorola-integers -filetype=obj < %s \ | ||
| ; RUN: | llvm-objdump -d - | FileCheck %s | ||
|
|
||
| ; CHECK-LABEL: <TIGHT>: | ||
| TIGHT: | ||
| ; CHECK: bsr.w $7a | ||
| bsr.w .LBB0_2 | ||
| move.l $0, $0 | ||
| move.l $0, $0 | ||
| move.l $0, $0 | ||
| move.l $0, $0 | ||
| move.l $0, $0 | ||
| move.l $0, $0 | ||
| move.l $0, $0 | ||
| move.l $0, $0 | ||
| move.l $0, $0 | ||
| move.l $0, $0 | ||
| move.l $0, $0 | ||
| move.l $0, $0 | ||
| .LBB0_2: | ||
| add.l #0, %d0 | ||
| rts | ||
|
|
||
| ; CHECK-LABEL: <RELAXED>: | ||
| RELAXED: | ||
| ; CHECK: bsr.b $82 | ||
| bsr.b .LBB1_2 | ||
| move.l $0, $0 | ||
| move.l $0, $0 | ||
| move.l $0, $0 | ||
| move.l $0, $0 | ||
| move.l $0, $0 | ||
| move.l $0, $0 | ||
| move.l $0, $0 | ||
| move.l $0, $0 | ||
| move.l $0, $0 | ||
| move.l $0, $0 | ||
| move.l $0, $0 | ||
| move.l $0, $0 | ||
| move.l $0, $0 | ||
| .LBB1_2: | ||
| add.l #0, %d0 | ||
| rts | ||
|
|
||
| ; CHECK-LABEL: <ZERO>: | ||
| ZERO: | ||
| ; CHECK: bsr.w $2 | ||
| bsr.w .LBB2_1 | ||
| .LBB2_1: | ||
| add.l #0, %d0 | ||
| rts |