[AArch64][SME2] Add multi-vector saturating doubling multiply high intrinsics
[llvm-project.git] / lld / test / ELF / arm-bl-v4t.s
blob76fd6a2af3e816d53b27a73d3272f56929bbb143
1 // REQUIRES: arm
2 // RUN: rm -rf %t && split-file %s %t
3 // RUN: llvm-mc -arm-add-build-attributes -filetype=obj -triple=armv4t-none-linux-gnueabi %t/a.s -o %t/a.o
4 // RUN: ld.lld %t/a.o --script %t/far.lds -o %t/a-far
5 // RUN: llvm-objdump --no-print-imm-hex -d --no-show-raw-insn --triple=armv4t-none-linux-gnueabi %t/a-far | FileCheck %s --check-prefixes=FAR
6 // RUN: ld.lld %t/a.o --script %t/near.lds -o %t/a-near
7 // RUN: llvm-objdump --no-print-imm-hex -d --no-show-raw-insn --triple=armv4t-none-linux-gnueabi %t/a-near | FileCheck %s --check-prefixes=NEAR
8 // RUN: ld.lld %t/a.o -pie --script %t/far.lds -o %t/a-far-pie
9 // RUN: llvm-objdump --no-print-imm-hex -d --no-show-raw-insn --triple=armv4t-none-linux-gnueabi %t/a-far-pie | FileCheck %s --check-prefixes=FAR-PIE
10 // RUN: ld.lld %t/a.o -pie --script %t/near.lds -o %t/a-near-pie
11 // RUN: llvm-objdump --no-print-imm-hex -d --no-show-raw-insn --triple=armv4t-none-linux-gnueabi %t/a-near-pie | FileCheck %s --check-prefixes=NEAR
13 /// On Armv4T there is no blx instruction so long branch/exchange looks slightly
14 /// different.
16 #--- a.s
17 .text
18 .syntax unified
19 .cpu arm7tdmi
21 .section .low, "ax", %progbits
22 .arm
23 .globl _start
24 .type _start,%function
25 .p2align 2
26 _start:
27 bl target
28 bx lr
30 .thumb
31 .globl thumb_start
32 .type thumb_start,%function
33 .p2align 2
34 thumb_start:
35 bl thumb_target
36 bx lr
38 // FAR-LABEL: <_start>:
39 // FAR-NEXT: 1000000: bl 0x1000010 <__ARMv5LongLdrPcThunk_target> @ imm = #8
40 // FAR-NEXT: bx lr
41 // FAR-EMPTY:
42 // FAR-LABEL: <thumb_start>:
43 // FAR-NEXT: 1000008: bl 0x1000018 <__Thumbv4ABSLongThunk_thumb_target> @ imm = #12
44 // FAR-NEXT: bx lr
45 // FAR-NEXT: bmi 0xffffba @ imm = #-88
46 // FAR-EMPTY:
47 // FAR-NEXT: <__ARMv5LongLdrPcThunk_target>:
48 // FAR-NEXT: 1000010: ldr pc, [pc, #-4] @ 0x1000014 <__ARMv5LongLdrPcThunk_target+0x4>
49 // FAR-EMPTY:
50 // FAR-NEXT: <$d>:
51 // FAR-NEXT: 1000014: 00 00 00 06 .word 0x06000000
52 // FAR-EMPTY:
53 // FAR-NEXT: <__Thumbv4ABSLongThunk_thumb_target>:
54 // FAR-NEXT: 1000018: bx pc
55 // FAR-NEXT: b 0x1000018 <__Thumbv4ABSLongThunk_thumb_target> @ imm = #-6
56 // FAR-EMPTY:
57 // FAR-NEXT: <$a>:
58 // FAR-NEXT: 100001c: ldr r12, [pc] @ 0x1000024 <__Thumbv4ABSLongThunk_thumb_target+0xc>
59 // FAR-NEXT: bx r12
60 // FAR-EMPTY:
61 // FAR-NEXT: <$d>:
62 // FAR-NEXT: 1000024: 05 00 00 06 .word 0x06000005
64 // FAR-PIE-LABEL: <_start>:
65 // FAR-PIE-NEXT: 1000000: bl 0x1000010 <__ARMv4PILongThunk_target> @ imm = #8
66 // FAR-PIE-NEXT: bx lr
67 // FAR-PIE-EMPTY:
68 // FAR-PIE-NEXT: <thumb_start>:
69 // FAR-PIE-NEXT: 1000008: bl 0x100001c <__Thumbv4PILongThunk_thumb_target> @ imm = #16
70 // FAR-PIE-NEXT: bx lr
71 // FAR-PIE-NEXT: bmi 0xffffba @ imm = #-88
72 // FAR-PIE-EMPTY:
73 // FAR-PIE-NEXT: <__ARMv4PILongThunk_target>:
74 // FAR-PIE-NEXT: 1000010: ldr r12, [pc] @ 0x1000018 <__ARMv4PILongThunk_target+0x8>
75 // FAR-PIE-NEXT: add pc, pc, r12
76 // FAR-PIE-EMPTY:
77 // FAR-PIE-NEXT: <$d>:
78 // FAR-PIE-NEXT: 1000018: e4 ff ff 04 .word 0x04ffffe4
79 // FAR-PIE-EMPTY:
80 // FAR-PIE-NEXT: <__Thumbv4PILongThunk_thumb_target>:
81 // FAR-PIE-NEXT: 100001c: bx pc
82 // FAR-PIE-NEXT: b 0x100001c <__Thumbv4PILongThunk_thumb_target> @ imm = #-6
83 // FAR-PIE-EMPTY:
84 // FAR-PIE-NEXT: <$a>:
85 // FAR-PIE-NEXT: 1000020: ldr r12, [pc, #4] @ 0x100002c <__Thumbv4PILongThunk_thumb_target+0x10>
86 // FAR-PIE-NEXT: add r12, pc, r12
87 // FAR-PIE-NEXT: bx r12
88 // FAR-PIE-EMPTY:
89 // FAR-PIE-NEXT: <$d>:
90 // FAR-PIE-NEXT: 100002c: d9 ff ff 04 .word 0x04ffffd9
92 // NEAR-LABEL: <_start>:
93 // NEAR-NEXT: 1000000: bl 0x100000c <thumb_start+0x4> @ imm = #4
94 // NEAR-NEXT: bx lr
95 // NEAR-EMPTY:
96 // NEAR-LABEL: <thumb_start>:
97 // NEAR-NEXT: 1000008: bl 0x1000012 <thumb_target> @ imm = #6
98 // NEAR-NEXT: bx lr
100 .section .high, "ax", %progbits
101 .arm
102 .globl target
103 .type target,%function
104 target:
105 bx lr
107 .thumb
108 .globl thumb_target
109 .type thumb_target,%function
110 thumb_target:
111 bx lr
113 // FAR-LABEL: <target>:
114 // FAR-NEXT: 6000000: bx lr
115 // FAR-EMPTY:
116 // FAR-LABEL: <thumb_target>:
117 // FAR-NEXT: 6000004: bx lr
119 // FAR-PIE-LABEL: <target>:
120 // FAR-PIE-NEXT: 6000000: bx lr
121 // FAR-PIE-EMPTY:
122 // FAR-PIE-LABEL: <thumb_target>:
123 // FAR-PIE-NEXT: 6000004: bx lr
125 // NEAR-LABEL: <target>:
126 // NEAR-LABEL: 100000e: bx lr
127 // NEAR-EMPTY:
128 // NEAR-NEXT: <thumb_target>:
129 // NEAR-NEXT: 1000012: bx lr
132 #--- far.lds
133 SECTIONS {
134 . = SIZEOF_HEADERS;
135 .low 0x01000000 : { *(.low) }
136 .high 0x06000000 : { *(.high) }
139 #--- near.lds
140 SECTIONS {
141 . = SIZEOF_HEADERS;
142 .all 0x01000000 : { *(.low) *(.high) }