1; REQUIRES: avr 2; RUN: llvm-mc -filetype=obj -triple=avr -mcpu=atmega328p %s -o %t0.o 3; RUN: ld.lld %t0.o --defsym=a=0x12345678 --defsym=b=30 --defsym=c=0x15554 -o %t0 4; RUN: llvm-objdump -d --print-imm-hex --mcpu=atmega328p %t0 | \ 5; RUN: FileCheck --check-prefixes=CHECK,AVR %s 6; RUN: llvm-objdump -s --mcpu=atmega328p %t0 | \ 7; RUN: FileCheck --check-prefixes=HEX,AVRHEX %s 8; RUN: llvm-mc -filetype=obj -triple=avr -mcpu=attiny10 %s --defsym=TINY=1 -o %t1.o 9; RUN: ld.lld %t1.o --defsym=a=0x12345678 --defsym=b=30 --defsym=c=0x15554 -o %t1 10; RUN: llvm-objdump -d --print-imm-hex --mcpu=attiny10 %t1 | FileCheck %s 11; RUN: llvm-objdump -s --mcpu=attiny10 %t1 | \ 12; RUN: FileCheck --check-prefixes=HEX,TINYHEX %s 13 14.section .LDI,"ax",@progbits 15; CHECK-LABEL: section .LDI: 16; CHECK: ldi r20, 0x78 17; CHECK-NEXT: ldi r20, 0x56 18; CHECK-NEXT: ldi r20, 0x34 19; CHECK-NEXT: ldi r20, 0x12 20; CHECK-NEXT: ldi r20, 0x3c 21; CHECK-NEXT: ldi r20, 0x2b 22; CHECK-NEXT: ldi r20, 0x1a 23; CHECK-NEXT: ldi r20, 0xaa 24; CHECK-NEXT: ldi r20, 0xaa 25; CHECK-NEXT: ldi r20, 0xff 26 27ldi r20, lo8(a) ; R_AVR_LO8_LDI 28ldi r20, hi8(a) ; R_AVR_HI8_LDI 29ldi r20, hh8(a) ; R_AVR_HH8_LDI 30ldi r20, hhi8(a) ; R_AVR_MS8_LDI 31 32ldi r20, pm_lo8(a) ; R_AVR_LO8_LDI_PM 33ldi r20, pm_hi8(a) ; R_AVR_HI8_LDI_PM 34ldi r20, pm_hh8(a) ; R_AVR_HH8_LDI_PM 35 36ldi r20, lo8_gs(c) ; R_AVR_LO8_LDI_GS 37ldi r20, hi8_gs(c) ; R_AVR_HI8_LDI_GS 38 39ldi r20, b+225 40 41.section .LDI_NEG,"ax",@progbits 42; CHECK-LABEL: section .LDI_NEG: 43; CHECK: ldi r20, 0x88 44; CHECK-NEXT: ldi r20, 0xa9 45; CHECK-NEXT: ldi r20, 0xcb 46; CHECK-NEXT: ldi r20, 0xed 47; CHECK-NEXT: ldi r20, 0xc4 48; CHECK-NEXT: ldi r20, 0xd4 49; CHECK-NEXT: ldi r20, 0xe5 50ldi r20, lo8(-(a)) ; R_AVR_LO8_LDI_NEG 51ldi r20, hi8(-(a)) ; R_AVR_HI8_LDI_NEG 52ldi r20, hh8(-(a)) ; R_AVR_HH8_LDI_NEG 53ldi r20, hhi8(-(a)) ; R_AVR_MS8_LDI_NEG 54 55ldi r20, pm_lo8(-(a)) ; R_AVR_LO8_LDI_PM_NEG 56ldi r20, pm_hi8(-(a)) ; R_AVR_HI8_LDI_PM_NEG 57ldi r20, pm_hh8(-(a)) ; R_AVR_HH8_LDI_PM_NEG 58 59.ifndef TINY 60.section .SIX,"ax",@progbits 61; AVR-LABEL: section .SIX: 62; AVR: std Y+30, r9 63; AVR-NEXT: ldd r9, Y+30 64; AVR-NEXT: adiw r24, 0x1e 65; AVRHEX-LABEL: section .SIX: 66; AVRHEX-NEXT: 9e8e9e8c 4e96 67std Y+b, r9 ; R_AVR_6 68ldd r9, Y+b ; R_AVR_6 69adiw r24, b ; R_AVR_6_ADIW 70.endif 71 72.section .PORT,"ax",@progbits 73; CHECK-LABEL: section .PORT: 74; CHECK: in r20, 0x1e 75; CHECK-NEXT: sbic 0x1e, 0x1 76in r20, b ; R_AVR_PORT6 77sbic b, 1 ; R_AVR_PORT5 78 79.section .LDSSTS,"ax",@progbits 80; CHECK-LABEL: section .LDSSTS: 81; CHECK: lds r20, 0x1e 82; CHECK-NEXT: sts 0x1e, r21 83; HEX-LABEL: section .LDSSTS: 84; AVRHEX: {{.*}} 40911e00 50931e00 85; TINYHEX: {{.*}} 4ea15ea9 86lds r20, b 87sts b, r21 88 89.section .DATA,"ax",@progbits 90; HEX-LABEL: section .DATA: 91; HEX-NEXT: {{.*}} 1e1e000f 00785634 12785634 92.byte b ; R_AVR_8 93.short b ; R_AVR_16 94.short gs(b) ; R_AVR_16_PM 95.long a ; R_AVR_32 96.byte lo8(a) ; R_AVR_8_LO8 97.byte hi8(a) ; R_AVR_8_HI8 98.byte hlo8(a) ; R_AVR_8_HLO8 99