File: avr-reloc.s

package info (click to toggle)
llvm-toolchain-11 1%3A11.0.1-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 995,808 kB
  • sloc: cpp: 4,767,656; ansic: 760,916; asm: 477,436; python: 170,940; objc: 69,804; lisp: 29,914; sh: 23,855; f90: 18,173; pascal: 7,551; perl: 7,471; ml: 5,603; awk: 3,489; makefile: 2,573; xml: 915; cs: 573; fortran: 503; javascript: 452
file content (84 lines) | stat: -rw-r--r-- 2,545 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
; REQUIRES: avr
; RUN: llvm-mc -filetype=obj -triple=avr -mcpu=atmega328p %s -o %t.o
; RUN: ld.lld %t.o --defsym=a=0x12345678 --defsym=b=30 -o %t
; RUN: llvm-objdump -d --print-imm-hex %t | FileCheck %s
; RUN: llvm-objdump -s %t | FileCheck --check-prefix=HEX %s

.section .LDI,"ax",@progbits
; CHECK-LABEL: section .LDI:
; CHECK:       ldi     r20, 0x78
; CHECK-NEXT:  ldi     r20, 0x56
; CHECK-NEXT:  ldi     r20, 0x34
; CHECK-NEXT:  ldi     r20, 0x12
; CHECK-NEXT:  ldi     r20, 0x3c
; CHECK-NEXT:  ldi     r20, 0x2b
; CHECK-NEXT:  ldi     r20, 0x1a
; CHECK-NEXT:  ldi     r20, 0xff
ldi r20, lo8(a)     ; R_AVR_LO8_LDI
ldi r20, hi8(a)     ; R_AVR_HI8_LDI
ldi r20, hh8(a)     ; R_AVR_HH8_LDI
ldi r20, hhi8(a)    ; R_AVR_MS8_LDI

ldi r20, pm_lo8(a)  ; R_AVR_LO8_LDI_PM
ldi r20, pm_hi8(a)  ; R_AVR_HI8_LDI_PM
ldi r20, pm_hh8(a)  ; R_AVR_HH8_LDI_PM

ldi r20, b+225

.section .LDI_NEG,"ax",@progbits
; CHECK-LABEL: section .LDI_NEG:
; CHECK:       ldi     r20, 0x88
; CHECK-NEXT:  ldi     r20, 0xa9
; CHECK-NEXT:  ldi     r20, 0xcb
; CHECK-NEXT:  ldi     r20, 0xed
; CHECK-NEXT:  ldi     r20, 0xc4
; CHECK-NEXT:  ldi     r20, 0xd4
; CHECK-NEXT:  ldi     r20, 0xe5
ldi r20, lo8(-(a))     ; R_AVR_LO8_LDI_NEG
ldi r20, hi8(-(a))     ; R_AVR_HI8_LDI_NEG
ldi r20, hh8(-(a))     ; R_AVR_HH8_LDI_NEG
ldi r20, hhi8(-(a))    ; R_AVR_MS8_LDI_NEG

ldi r20, pm_lo8(-(a))  ; R_AVR_LO8_LDI_PM_NEG
ldi r20, pm_hi8(-(a))  ; R_AVR_HI8_LDI_PM_NEG
ldi r20, pm_hh8(-(a))  ; R_AVR_HH8_LDI_PM_NEG

;; The disassembler is not yet able to decode those opcodes
;; 9e 8e    std    Y+30, r9
;; 9e 8c    ldd    r9, Y+30
;; 4e 96    adiw   r24, 0x1e
.section .SIX,"ax",@progbits
; HEX-LABEL: section .SIX:
; HEX-NEXT:  9e8e9e8c 4e96
std Y+b, r9   ; R_AVR_6
ldd r9, Y+b   ; R_AVR_6
adiw r24, b   ; R_AVR_6_ADIW

.section .PORT,"ax",@progbits
; CHECK-LABEL: section .PORT:
; CHECK:       in     r20, 0x1e
; CHECK-NEXT:  sbic   0x1e, 0x1
in    r20, b  ; R_AVR_PORT6
sbic  b, 1    ; R_AVR_PORT5

;; The disassembler is not yet able to decode those opcodes
;; 0f c0    rjmp   .+30
;; ee cf    rjmp   .-36
;; 69 f0    breq   .+26
;; 61 f3    breq   .-40
.section .PCREL,"ax",@progbits
; HEX-LABEL: section .PCREL:
; HEX-NEXT:  0fc0eecf 69f061f3
foo:
rjmp foo + 32  ; R_AVR_13_PCREL
rjmp foo - 32  ; R_AVR_13_PCREL
breq foo + 32  ; R_AVR_7_PCREL
breq foo - 32  ; R_AVR_7_PCREL

.section .DATA,"ax",@progbits
; HEX-LABEL: section .DATA:
; HEX-NEXT:  {{.*}} 1e1e000f 00785634 12
.byte b        ; R_AVR_8
.short b       ; R_AVR_16
.short gs(b)   ; R_AVR_16_PM
.long a        ; R_AVR_32