xref: /llvm-project/llvm/test/MC/AVR/relocations.s (revision 6fb39e496411a64af8fa5484385ef3ff42d2a5f4)
1; RUN: llvm-mc -filetype=obj -triple=avr %s -mattr=avr6 | llvm-objdump -r - | FileCheck %s
2
3; CHECK: RELOCATION RECORDS FOR
4
5.global bar
6
7bar:
8  jmp bar
9
10; CHECK: R_AVR_LDI SYMBOL+0x3
11ldi r21, SYMBOL+3
12
13; CHECK: R_AVR_6 SYMBOL+0x4
14ldd r8, Y+SYMBOL+4
15
16; CHECK-NEXT: R_AVR_6_ADIW FOO
17adiw r24, FOO
18
19; CHECK-NEXT: R_AVR_16 BAR+0x2
20lds r8, BAR+2
21
22; CHECK-NEXT: R_AVR_PORT5 foo
23sbic foo, 1
24
25; CHECK-NEXT: R_AVR_PORT6 Bar+0x2
26in r30, Bar+2
27
28; CHECK-NEXT: R_AVR_CALL foo+0x3
29call foo+3
30
31; CHECK-NEXT: R_AVR_13_PCREL foo-0xa
32rjmp foo-10
33
34; CHECK-NEXT: R_AVR_7_PCREL foo+0x2
35brcs foo+2
36
37; CHECK-NEXT: R_AVR_LO8_LDI bar+0x3
38; CHECK-NEXT: R_AVR_LO8_LDI abc
39ldi r24, lo8(bar+3)
40ldi r16, lo8(+(abc))
41
42; CHECK-NEXT: R_AVR_HI8_LDI abc
43; CHECK-NEXT: R_AVR_HI8_LDI abc
44ldi r30, hi8(abc)
45ldi r16, hi8(+(abc))
46
47; CHECK-NEXT: R_AVR_LO8_LDI_NEG abc
48ldi r16, lo8(-(abc))
49
50; CHECK-NEXT: R_AVR_HI8_LDI_NEG abc
51ldi r16, hi8(-(abc))
52
53; CHECK-NEXT: R_AVR_HH8_LDI foo
54; CHECK-NEXT: R_AVR_HH8_LDI foo
55ldi r16, hh8(foo)
56ldi r16, hh8(+(foo))
57
58; CHECK-NEXT: R_AVR_HH8_LDI_NEG foo
59ldi r16, hh8(-(foo))
60
61; CHECK-NEXT: R_AVR_HH8_LDI foo
62; CHECK-NEXT: R_AVR_HH8_LDI foo
63ldi r24, hlo8(foo)
64ldi r24, hlo8(+(foo))
65
66; CHECK-NEXT: R_AVR_HH8_LDI_NEG foo
67ldi r24, hlo8(-(foo))
68
69; CHECK-NEXT: R_AVR_MS8_LDI bar
70; CHECK-NEXT: R_AVR_MS8_LDI bar
71ldi r24, hhi8(bar)
72ldi r24, hhi8(+(bar))
73
74; CHECK-NEXT: R_AVR_MS8_LDI_NEG bar
75ldi r24, hhi8(-(bar))
76
77; CHECK-NEXT: R_AVR_LO8_LDI_PM foo
78; CHECK-NEXT: R_AVR_LO8_LDI_PM foo
79ldi r17, pm_lo8(foo)
80ldi r25, pm_lo8(+(foo))
81
82; CHECK-NEXT: R_AVR_HI8_LDI_PM bar
83; CHECK-NEXT: R_AVR_HI8_LDI_PM foo
84ldi r22, pm_hi8(bar)
85ldi r25, pm_hi8(+(foo))
86
87; CHECK-NEXT: R_AVR_HH8_LDI_PM baz
88; CHECK-NEXT: R_AVR_HH8_LDI_PM foo
89ldi r25, pm_hh8(baz)
90ldi r25, pm_hh8(+(foo))
91
92; CHECK-NEXT: R_AVR_LO8_LDI_PM_NEG foo
93ldi r25, pm_lo8(-(foo))
94
95; CHECK-NEXT: R_AVR_HI8_LDI_PM_NEG foo
96ldi r25, pm_hi8(-(foo))
97
98; CHECK-NEXT: R_AVR_HH8_LDI_PM_NEG foo
99ldi r25, pm_hh8(-(foo))
100
101; CHECK-NEXT: R_AVR_LO8_LDI_GS foo
102ldi r17, lo8(gs(foo))
103
104; CHECK-NEXT: R_AVR_HI8_LDI_GS foo
105ldi r18, hi8(gs(foo))
106
107; CHECK-NEXT: R_AVR_16 foo
108.short foo
109
110; CHECK-NEXT: R_AVR_16_PM foo
111.short gs(foo)
112
113; CHECK-NEXT: R_AVR_16_PM foo
114.short pm(foo)
115
116; CHECK-NEXT: R_AVR_8
117.byte foo
118
119; CHECK-NEXT: R_AVR_8_LO8
120.byte lo8(foo)
121
122; CHECK-NEXT: R_AVR_8_HI8
123.byte hi8(foo)
124
125; CHECK-NEXT: R_AVR_8_HLO8
126.byte hlo8(foo)
127
128; CHECK: R_AVR_DIFF8
129.byte foo - bar
130
131; CHECK: R_AVR_DIFF16
132.short foo - bar
133
134; CHECK: R_AVR_DIFF32
135.long foo - bar
136