1 // Test file for AArch64 GAS -- instructions with relocation operators.
4 // BFD_RELOC_AARCH64_MOVW_G0
8 // BFD_RELOC_AARCH64_MOVW_G0_S
10 movz x0,#:abs_g0_s:s12
12 // BFD_RELOC_AARCH64_MOVW_G1
15 movk x1,#:abs_g0_nc:u32
17 // BFD_RELOC_AARCH64_MOVW_G1_S
19 movz x1,#:abs_g1_s:s12
20 movk x1,#:abs_g0_nc:s12
22 // BFD_RELOC_AARCH64_MOVW_G2
25 movk x1,#:abs_g1_nc:u48
26 movk x1,#:abs_g0_nc:u48
28 // local data (section relative)
29 movz x1,#:abs_g2:ldata
30 movk x1,#:abs_g1_nc:ldata
31 movk x1,#:abs_g0_nc:ldata
34 movz x1,#:abs_g2:xdata
35 movk x1,#:abs_g1_nc:xdata
36 movk x1,#:abs_g0_nc:xdata
38 // BFD_RELOC_AARCH64_MOVW_G2_S
40 movz x1,#:abs_g2_s:s12
41 movk x1,#:abs_g1_nc:s12
42 movk x1,#:abs_g0_nc:s12
44 // BFD_RELOC_AARCH64_MOVW_G3
47 movk x1,#:abs_g2_nc:s12
48 movk x1,#:abs_g1_nc:s12
49 movk x1,#:abs_g0_nc:s12
52 movk x1,#:abs_g2_nc:u64
53 movk x1,#:abs_g1_nc:u64
54 movk x1,#:abs_g0_nc:u64
56 // BFD_RELOC_AARCH64_LD_LO19_PCREL
61 // BFD_RELOC_AARCH64_ADR_LO21_PCREL
62 // AARCH64 ADR instruction, holding a simple 21 bit pc-relative byte offset.
70 // BFD_RELOC_AARCH64_ADR_HI21_PCREL
78 // BFD_RELOC_AARCH64_ADR_HI21_PCREL
80 adrp x1,:pg_hi21:ldata
81 adrp x2,:pg_hi21:ldata+4088
83 adrp x4,:pg_hi21:xdata+16
84 adrp x5,:pg_hi21:xdata+4088
86 // BFD_RELOC_AARCH64_ADD_LO12
88 add x1,x1,#:lo12:ldata
89 add x2,x2,#:lo12:ldata+4088
91 add x4,x4,#:lo12:xdata+16
92 add x5,x5,#:lo12:xdata+4088
95 // BFD_RELOC_AARCH64_LDST8_LO12
96 ldrb w0, [x0, #:lo12:llit]
97 ldrb w1, [x1, #:lo12:ldata]
98 ldrb w2, [x2, #:lo12:ldata+4088]
99 ldrb w3, [x3, #:lo12:xlit]
100 ldrb w4, [x4, #:lo12:xdata+16]
101 ldrb w5, [x5, #:lo12:xdata+4088]
104 // BFD_RELOC_AARCH64_TSTBR14
110 // BFD_RELOC_AARCH64_BRANCH19
114 // BFD_RELOC_AARCH64_COMPARE19
118 // BFD_RELOC_AARCH64_JUMP26
122 // BFD_RELOC_AARCH64_CALL26
126 // BFD_RELOC_AARCH64_MOVW_IMM
127 movz x0, #0x1234, lsl #48
128 movk x0, #0x5678, lsl #32
129 movk x0, #0x9abc, lsl #16
130 movk x0, #0xdef0, lsl #0
132 movz x0, (u64>>48)&0xffff, lsl #48
133 movk x0, (u64>>32)&0xffff, lsl #32
134 movk x0, (u64>>16)&0xffff, lsl #16
135 movk x0, (u64>>0)&0xffff, lsl #0
137 // BFD_RELOC_AARCH64_BIT_IMM
142 // BFD_RELOC_AARCH64_ADD_U12
148 // BFD_RELOC_AARCH64_EXC_U16
151 // BFD_RELOC_AARCH64_LDST_I9
152 // Signed 9-bit byte offset for load/store single item with writeback options.
153 // Used internally by the AARCH64 assembler and not (currently)
154 // written to any object files.
158 // No writeback, but a negative offset should cause this
159 // to be converted to a LDST_I9 relocation
162 // BFD_RELOC_AARCH64_LDST_U12
163 // Unsigned 12-bit byte offset for load/store single item without options.
164 // Used internally by the AARCH64 assembler and not (currently)
165 // written to any object files.
168 // BFD_RELOC_AARCH64_LDST16_LO12
169 ldrh w0, [x0, #:lo12:llit]
170 // BFD_RELOC_AARCH64_LDST32_LO12
171 ldr w1, [x1, #:lo12:ldata]
172 // BFD_RELOC_AARCH64_LDST64_LO12
173 ldr x2, [x2, #:lo12:ldata+4088]
174 // BFD_RELOC_AARCH64_LDST128_LO12
175 ldr q3, [x3, #:lo12:xlit]
177 // BFD_RELOC_AARCH64_LDST64_LO12
178 prfm pstl1keep, [x7, #:lo12:ldata+4100]
180 // BFD_RELOC_AARCH64_GOT_LD_PREL19
181 ldr x0, :got_prel19:cdata
186 llit: .word 0xdeadf00d
195 ldata: .xword 0x1122334455667788
204 .set u48, 0xaabbccddeeff
205 .set u64, 0xfedcba9876543210
206 .set bit1,0xf000000000000000