diff --git a/llvm/lib/Target/AVR/Disassembler/AVRDisassembler.cpp b/llvm/lib/Target/AVR/Disassembler/AVRDisassembler.cpp --- a/llvm/lib/Target/AVR/Disassembler/AVRDisassembler.cpp +++ b/llvm/lib/Target/AVR/Disassembler/AVRDisassembler.cpp @@ -57,18 +57,41 @@ createAVRDisassembler); } +static const uint16_t GPRDecoderTable[] = { + AVR::R0, AVR::R1, AVR::R2, AVR::R3, + AVR::R4, AVR::R5, AVR::R6, AVR::R7, + AVR::R8, AVR::R9, AVR::R10, AVR::R11, + AVR::R12, AVR::R13, AVR::R14, AVR::R15, + AVR::R16, AVR::R17, AVR::R18, AVR::R19, + AVR::R20, AVR::R21, AVR::R22, AVR::R23, + AVR::R24, AVR::R25, AVR::R26, AVR::R27, + AVR::R28, AVR::R29, AVR::R30, AVR::R31, +}; + static DecodeStatus DecodeGPR8RegisterClass(MCInst &Inst, unsigned RegNo, uint64_t Address, const void *Decoder) { + if (RegNo > 31) + return MCDisassembler::Fail; + + unsigned Register = GPRDecoderTable[RegNo]; + Inst.addOperand(MCOperand::createReg(Register)); return MCDisassembler::Success; } static DecodeStatus DecodeLD8RegisterClass(MCInst &Inst, unsigned RegNo, uint64_t Address, const void *Decoder) { + if (RegNo > 15) + return MCDisassembler::Fail; + + unsigned Register = GPRDecoderTable[RegNo+16]; + Inst.addOperand(MCOperand::createReg(Register)); return MCDisassembler::Success; } static DecodeStatus DecodePTRREGSRegisterClass(MCInst &Inst, unsigned RegNo, uint64_t Address, const void *Decoder) { + // Note: this function must be defined but does not seem to be called. + assert(false && "unimplemented: PTRREGS register class"); return MCDisassembler::Success; } diff --git a/llvm/test/MC/AVR/inst-adc.s b/llvm/test/MC/AVR/inst-adc.s --- a/llvm/test/MC/AVR/inst-adc.s +++ b/llvm/test/MC/AVR/inst-adc.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -12,3 +13,8 @@ ; CHECK: adc r15, r0 ; encoding: [0xf0,0x1c] ; CHECK: adc r16, r31 ; encoding: [0x0f,0x1f] ; CHECK: adc r31, r16 ; encoding: [0xf0,0x1f] + +; CHECK-INST: adc r0, r15 +; CHECK-INST: adc r15, r0 +; CHECK-INST: adc r16, r31 +; CHECK-INST: adc r31, r16 diff --git a/llvm/test/MC/AVR/inst-add.s b/llvm/test/MC/AVR/inst-add.s --- a/llvm/test/MC/AVR/inst-add.s +++ b/llvm/test/MC/AVR/inst-add.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -12,3 +13,8 @@ ; CHECK: add r15, r0 ; encoding: [0xf0,0x0c] ; CHECK: add r16, r31 ; encoding: [0x0f,0x0f] ; CHECK: add r31, r16 ; encoding: [0xf0,0x0f] + +; CHECK-INST: add r0, r15 +; CHECK-INST: add r15, r0 +; CHECK-INST: add r16, r31 +; CHECK-INST: add r31, r16 diff --git a/llvm/test/MC/AVR/inst-adiw.s b/llvm/test/MC/AVR/inst-adiw.s --- a/llvm/test/MC/AVR/inst-adiw.s +++ b/llvm/test/MC/AVR/inst-adiw.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -mattr=addsubiw -show-encoding < %s | FileCheck %s +; RUNx: llvm-mc -filetype=obj -triple avr -mattr=addsubiw < %s | llvm-objdump -d -mattr=addsubiw - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -25,3 +26,14 @@ ; CHECK: adiw r24, SYMBOL ; encoding: [0b00AAAAAA,0x96] ; fixup A - offset: 0, value: SYMBOL, kind: fixup_6_adiw + +; CHECK-INST: adiw r26, 12 +; CHECK-INST: adiw r26, 63 + +; CHECK-INST: adiw r28, 17 +; CHECK-INST: adiw r28, 0 + +; CHECK-INST: adiw r30, 63 +; CHECK-INST: adiw r30, 3 + +; CHECK-INST: adiw r24, 0 diff --git a/llvm/test/MC/AVR/inst-and.s b/llvm/test/MC/AVR/inst-and.s --- a/llvm/test/MC/AVR/inst-and.s +++ b/llvm/test/MC/AVR/inst-and.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -12,3 +13,8 @@ ; CHECK: and r15, r0 ; encoding: [0xf0,0x20] ; CHECK: and r16, r31 ; encoding: [0x0f,0x23] ; CHECK: and r31, r16 ; encoding: [0xf0,0x23] + +; CHECK-INST: and r0, r15 +; CHECK-INST: and r15, r0 +; CHECK-INST: and r16, r31 +; CHECK-INST: and r31, r16 diff --git a/llvm/test/MC/AVR/inst-andi.s b/llvm/test/MC/AVR/inst-andi.s --- a/llvm/test/MC/AVR/inst-andi.s +++ b/llvm/test/MC/AVR/inst-andi.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -17,3 +18,10 @@ ; CHECK: andi r20, BAR ; encoding: [0x40'A',0x70] ; CHECK: ; fixup A - offset: 0, value: BAR, kind: fixup_ldi + +; CHECK-INST: andi r16, 255 +; CHECK-INST: andi r29, 190 +; CHECK-INST: andi r22, 172 +; CHECK-INST: andi r27, 92 + +; CHECK-INST: andi r20, 0 diff --git a/llvm/test/MC/AVR/inst-bld.s b/llvm/test/MC/AVR/inst-bld.s --- a/llvm/test/MC/AVR/inst-bld.s +++ b/llvm/test/MC/AVR/inst-bld.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -12,3 +13,8 @@ ; CHECK: bld r1, 1 ; encoding: [0x11,0xf8] ; CHECK: bld r0, 0 ; encoding: [0x00,0xf8] ; CHECK: bld r7, 2 ; encoding: [0x72,0xf8] + +; CHECK-INST: bld r3, 5 +; CHECK-INST: bld r1, 1 +; CHECK-INST: bld r0, 0 +; CHECK-INST: bld r7, 2 diff --git a/llvm/test/MC/AVR/inst-bst.s b/llvm/test/MC/AVR/inst-bst.s --- a/llvm/test/MC/AVR/inst-bst.s +++ b/llvm/test/MC/AVR/inst-bst.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -12,3 +13,8 @@ ; CHECK: bst r1, 1 ; encoding: [0x11,0xfa] ; CHECK: bst r0, 0 ; encoding: [0x00,0xfa] ; CHECK: bst r7, 2 ; encoding: [0x72,0xfa] + +; CHECK-INST: bst r3, 5 +; CHECK-INST: bst r1, 1 +; CHECK-INST: bst r0, 0 +; CHECK-INST: bst r7, 2 diff --git a/llvm/test/MC/AVR/inst-cbr.s b/llvm/test/MC/AVR/inst-cbr.s --- a/llvm/test/MC/AVR/inst-cbr.s +++ b/llvm/test/MC/AVR/inst-cbr.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -12,3 +13,8 @@ ; CHECK: andi r24, -191 ; encoding: [0x81,0x74] ; CHECK: andi r20, -174 ; encoding: [0x42,0x75] ; CHECK: andi r31, -1 ; encoding: [0xff,0x7f] + +; CHECK-INST: andi r17, 47 +; CHECK-INST: andi r24, 65 +; CHECK-INST: andi r20, 82 +; CHECK-INST: andi r31, 255 diff --git a/llvm/test/MC/AVR/inst-clr.s b/llvm/test/MC/AVR/inst-clr.s --- a/llvm/test/MC/AVR/inst-clr.s +++ b/llvm/test/MC/AVR/inst-clr.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -13,3 +14,7 @@ ; CHECK: clr r5 ; encoding: [0x55,0x24] ; CHECK: clr r0 ; encoding: [0x00,0x24] +; CHECK-INST: clr r2 +; CHECK-INST: clr r12 +; CHECK-INST: clr r5 +; CHECK-INST: clr r0 diff --git a/llvm/test/MC/AVR/inst-cp.s b/llvm/test/MC/AVR/inst-cp.s --- a/llvm/test/MC/AVR/inst-cp.s +++ b/llvm/test/MC/AVR/inst-cp.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -12,3 +13,8 @@ ; CHECK: cp r19, r0 ; encoding: [0x30,0x15] ; CHECK: cp r15, r31 ; encoding: [0xff,0x16] ; CHECK: cp r0, r0 ; encoding: [0x00,0x14] + +; CHECK-INST: cp r12, r2 +; CHECK-INST: cp r19, r0 +; CHECK-INST: cp r15, r31 +; CHECK-INST: cp r0, r0 diff --git a/llvm/test/MC/AVR/inst-cpc.s b/llvm/test/MC/AVR/inst-cpc.s --- a/llvm/test/MC/AVR/inst-cpc.s +++ b/llvm/test/MC/AVR/inst-cpc.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -12,3 +13,8 @@ ; CHECK: cp r20, r0 ; encoding: [0x40,0x15] ; CHECK: cp r10, r31 ; encoding: [0xaf,0x16] ; CHECK: cp r0, r0 ; encoding: [0x00,0x14] + +; CHECK-INST: cp r13, r12 +; CHECK-INST: cp r20, r0 +; CHECK-INST: cp r10, r31 +; CHECK-INST: cp r0, r0 diff --git a/llvm/test/MC/AVR/inst-cpi.s b/llvm/test/MC/AVR/inst-cpi.s --- a/llvm/test/MC/AVR/inst-cpi.s +++ b/llvm/test/MC/AVR/inst-cpi.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -18,3 +19,8 @@ ; CHECK: cpi r21, ear ; encoding: [0x50'A',0x30] ; CHECK: ; fixup A - offset: 0, value: ear, kind: fixup_ldi +; CHECK-INST: cpi r16, 241 +; CHECK-INST: cpi r29, 190 +; CHECK-INST: cpi r22, 172 +; CHECK-INST: cpi r27, 92 +; CHECK-INST: cpi r21, 0 diff --git a/llvm/test/MC/AVR/inst-cpse.s b/llvm/test/MC/AVR/inst-cpse.s --- a/llvm/test/MC/AVR/inst-cpse.s +++ b/llvm/test/MC/AVR/inst-cpse.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -12,3 +13,8 @@ ; CHECK: cpse r9, r0 ; encoding: [0x90,0x10] ; CHECK: cpse r5, r31 ; encoding: [0x5f,0x12] ; CHECK: cpse r3, r3 ; encoding: [0x33,0x10] + +; CHECK-INST: cpse r2, r13 +; CHECK-INST: cpse r9, r0 +; CHECK-INST: cpse r5, r31 +; CHECK-INST: cpse r3, r3 diff --git a/llvm/test/MC/AVR/inst-eor.s b/llvm/test/MC/AVR/inst-eor.s --- a/llvm/test/MC/AVR/inst-eor.s +++ b/llvm/test/MC/AVR/inst-eor.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -12,3 +13,8 @@ ; CHECK: eor r15, r0 ; encoding: [0xf0,0x24] ; CHECK: eor r16, r31 ; encoding: [0x0f,0x27] ; CHECK: eor r31, r16 ; encoding: [0xf0,0x27] + +; CHECK-INST: eor r0, r15 +; CHECK-INST: eor r15, r0 +; CHECK-INST: eor r16, r31 +; CHECK-INST: eor r31, r16 diff --git a/llvm/test/MC/AVR/inst-ldi.s b/llvm/test/MC/AVR/inst-ldi.s --- a/llvm/test/MC/AVR/inst-ldi.s +++ b/llvm/test/MC/AVR/inst-ldi.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr -mattr=sram < %s | llvm-objdump -d -mattr=sram - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -15,3 +16,9 @@ ; CHECK: ldi r21, SYMBOL+3 ; encoding: [0x50'A',0xe0] ; CHECK: ; fixup A - offset: 0, value: SYMBOL+3, kind: fixup_ldi + +; CHECK-INST: ldi r16, 241 +; CHECK-INST: ldi r29, 190 +; CHECK-INST: ldi r22, 172 +; CHECK-INST: ldi r27, 92 +; CHECK-INST: ldi r21, 0 diff --git a/llvm/test/MC/AVR/inst-lsl.s b/llvm/test/MC/AVR/inst-lsl.s --- a/llvm/test/MC/AVR/inst-lsl.s +++ b/llvm/test/MC/AVR/inst-lsl.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -12,3 +13,8 @@ ; CHECK: lsl r25 ; encoding: [0x99,0x0f] ; CHECK: lsl r5 ; encoding: [0x55,0x0c] ; CHECK: lsl r0 ; encoding: [0x00,0x0c] + +; CHECK-INST: lsl r31 +; CHECK-INST: lsl r25 +; CHECK-INST: lsl r5 +; CHECK-INST: lsl r0 diff --git a/llvm/test/MC/AVR/inst-mov.s b/llvm/test/MC/AVR/inst-mov.s --- a/llvm/test/MC/AVR/inst-mov.s +++ b/llvm/test/MC/AVR/inst-mov.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -12,3 +13,8 @@ ; CHECK: mov r9, r0 ; encoding: [0x90,0x2c] ; CHECK: mov r5, r31 ; encoding: [0x5f,0x2e] ; CHECK: mov r3, r3 ; encoding: [0x33,0x2c] + +; CHECK-INST: mov r2, r13 +; CHECK-INST: mov r9, r0 +; CHECK-INST: mov r5, r31 +; CHECK-INST: mov r3, r3 diff --git a/llvm/test/MC/AVR/inst-or.s b/llvm/test/MC/AVR/inst-or.s --- a/llvm/test/MC/AVR/inst-or.s +++ b/llvm/test/MC/AVR/inst-or.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -11,3 +12,8 @@ ; CHECK: or r15, r0 ; encoding: [0xf0,0x28] ; CHECK: or r16, r31 ; encoding: [0x0f,0x2b] ; CHECK: or r31, r16 ; encoding: [0xf0,0x2b] + +; CHECK-INST: or r0, r15 +; CHECK-INST: or r15, r0 +; CHECK-INST: or r16, r31 +; CHECK-INST: or r31, r16 diff --git a/llvm/test/MC/AVR/inst-ori.s b/llvm/test/MC/AVR/inst-ori.s --- a/llvm/test/MC/AVR/inst-ori.s +++ b/llvm/test/MC/AVR/inst-ori.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -17,3 +18,10 @@ ; CHECK: ori r16, FOOBAR ; encoding: [A,0x60] ; CHECK: ; fixup A - offset: 0, value: FOOBAR, kind: fixup_ldi + +; CHECK-INST: ori r17, 208 +; CHECK-INST: ori r24, 190 +; CHECK-INST: ori r20, 173 +; CHECK-INST: ori r31, 0 + +; CHECK-INST: ori r16, 0 diff --git a/llvm/test/MC/AVR/inst-rol.s b/llvm/test/MC/AVR/inst-rol.s --- a/llvm/test/MC/AVR/inst-rol.s +++ b/llvm/test/MC/AVR/inst-rol.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -12,3 +13,8 @@ ; CHECK: rol r25 ; encoding: [0x99,0x1f] ; CHECK: rol r5 ; encoding: [0x55,0x1c] ; CHECK: rol r0 ; encoding: [0x00,0x1c] + +; CHECK-INST: rol r31 +; CHECK-INST: rol r25 +; CHECK-INST: rol r5 +; CHECK-INST: rol r0 diff --git a/llvm/test/MC/AVR/inst-sbc.s b/llvm/test/MC/AVR/inst-sbc.s --- a/llvm/test/MC/AVR/inst-sbc.s +++ b/llvm/test/MC/AVR/inst-sbc.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -12,3 +13,8 @@ ; CHECK: sbc r15, r0 ; encoding: [0xf0,0x08] ; CHECK: sbc r16, r31 ; encoding: [0x0f,0x0b] ; CHECK: sbc r31, r16 ; encoding: [0xf0,0x0b] + +; CHECK-INST: sbc r0, r15 +; CHECK-INST: sbc r15, r0 +; CHECK-INST: sbc r16, r31 +; CHECK-INST: sbc r31, r16 diff --git a/llvm/test/MC/AVR/inst-sbci.s b/llvm/test/MC/AVR/inst-sbci.s --- a/llvm/test/MC/AVR/inst-sbci.s +++ b/llvm/test/MC/AVR/inst-sbci.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -16,3 +17,9 @@ ; CHECK: sbci r22, FOO ; encoding: [0x60'A',0x40] ; CHECK: ; fixup A - offset: 0, value: FOO, kind: fixup_ldi + +; CHECK-INST: sbci r17, 21 +; CHECK-INST: sbci r23, 196 +; CHECK-INST: sbci r30, 244 +; CHECK-INST: sbci r19, 16 +; CHECK-INST: sbci r22, 0 diff --git a/llvm/test/MC/AVR/inst-sbiw.s b/llvm/test/MC/AVR/inst-sbiw.s --- a/llvm/test/MC/AVR/inst-sbiw.s +++ b/llvm/test/MC/AVR/inst-sbiw.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -mattr=addsubiw -show-encoding < %s | FileCheck %s +; RUNx: llvm-mc -filetype=obj -triple avr -mattr=addsubiw < %s | llvm-objdump -d -mattr=addsubiw - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -31,3 +32,17 @@ ; CHECK: sbiw r24, SYMBOL-1 ; encoding: [0b00AAAAAA,0x97] ; fixup A - offset: 0, value: SYMBOL-1, kind: fixup_6_adiw + +; CHECK-INST: sbiw r26, 54 +; CHECK-INST: sbiw X, 63 + +; CHECK-INST: sbiw 28, 52 +; CHECK-INST: sbiw r28, 0 + +; CHECK-INST: sbiw r30, 63 +; CHECK-INST: sbiw Z, 47 + +; CHECK-INST: sbiw r24, 1 +; CHECK-INST: sbiw r24, 2 + +; CHECK-INST: sbiw r24, SYMBOL-1 diff --git a/llvm/test/MC/AVR/inst-sbr.s b/llvm/test/MC/AVR/inst-sbr.s --- a/llvm/test/MC/AVR/inst-sbr.s +++ b/llvm/test/MC/AVR/inst-sbr.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -16,3 +17,10 @@ ; CHECK: ori r19, _start ; encoding: [0x30'A',0x60] ; CHECK: ; fixup A - offset: 0, value: _start, kind: fixup_ldi + +; CHECK-INST: ori r17, 208 +; CHECK-INST: ori r24, 190 +; CHECK-INST: ori r20, 173 +; CHECK-INST: ori r31, 0 + +; CHECK-INST: ori r19, 0 diff --git a/llvm/test/MC/AVR/inst-ser.s b/llvm/test/MC/AVR/inst-ser.s --- a/llvm/test/MC/AVR/inst-ser.s +++ b/llvm/test/MC/AVR/inst-ser.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -11,3 +12,8 @@ ; CHECK: ldi r31, 255 ; encoding: [0xff,0xef] ; CHECK: ldi r27, 255 ; encoding: [0xbf,0xef] ; CHECK: ldi r31, 255 ; encoding: [0xff,0xef] + +; CHECK-INST: ldi r16, 255 +; CHECK-INST: ldi r31, 255 +; CHECK-INST: ldi r27, 255 +; CHECK-INST: ldi r31, 255 diff --git a/llvm/test/MC/AVR/inst-sub.s b/llvm/test/MC/AVR/inst-sub.s --- a/llvm/test/MC/AVR/inst-sub.s +++ b/llvm/test/MC/AVR/inst-sub.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -11,3 +12,8 @@ ; CHECK: sub r15, r0 ; encoding: [0xf0,0x18] ; CHECK: sub r16, r31 ; encoding: [0x0f,0x1b] ; CHECK: sub r31, r16 ; encoding: [0xf0,0x1b] + +; CHECK-INST: sub r0, r15 +; CHECK-INST: sub r15, r0 +; CHECK-INST: sub r16, r31 +; CHECK-INST: sub r31, r16 diff --git a/llvm/test/MC/AVR/inst-subi.s b/llvm/test/MC/AVR/inst-subi.s --- a/llvm/test/MC/AVR/inst-subi.s +++ b/llvm/test/MC/AVR/inst-subi.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -16,3 +17,10 @@ ; CHECK: subi r20, EXTERN_SYMBOL+0 ; encoding: [0x40'A',0x50] ; CHECK: ; fixup A - offset: 0, value: EXTERN_SYMBOL+0, kind: fixup_ldi + +; CHECK-INST: subi r22, 82 +; CHECK-INST: subi r27, 39 +; CHECK-INST: subi r31, 244 +; CHECK-INST: subi r16, 144 + +; CHECK-INST: subi r20, 0 diff --git a/llvm/test/MC/AVR/inst-tst.s b/llvm/test/MC/AVR/inst-tst.s --- a/llvm/test/MC/AVR/inst-tst.s +++ b/llvm/test/MC/AVR/inst-tst.s @@ -1,4 +1,5 @@ ; RUN: llvm-mc -triple avr -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -filetype=obj -triple avr < %s | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s foo: @@ -12,3 +13,8 @@ ; CHECK: tst r14 ; encoding: [0xee,0x20] ; CHECK: tst r24 ; encoding: [0x88,0x23] ; CHECK: tst r12 ; encoding: [0xcc,0x20] + +; CHECK-INST: tst r3 +; CHECK-INST: tst r14 +; CHECK-INST: tst r24 +; CHECK-INST: tst r12