# RUN: llc -mtriple=avr -mattr=+lpm -mattr=+lpmx -start-before=greedy %s -o - \ # RUN: | FileCheck %s # RUN: llc -mtriple=avr -mattr=+lpm -mattr=-lpmx -start-before=greedy %s -o - \ # RUN: | FileCheck --check-prefix=NOX %s # This test checks the expansion of the 8-bit LPMBRdZ pseudo instruction and that # the register allocator won't use R31R30 as an output register (which would # lead to undefined behavior). --- | target triple = "avr--" define void @test_lpmbrdz() { entry: ret void } ... --- name: test_lpmbrdz tracksRegLiveness: true body: | bb.0.entry: liveins: $r31r30 ; CHECK-LABEL: test_lpmbrdz: ; CHECK: ; %bb.0: ; CHECK-NEXT: lpm r30, Z ; CHECK-NEXT: ret ; NOX-LABEL: test_lpmbrdz ; NOX: ; %bb.0: ; NOX-NEXT: lpm ; NOX-NEXT: mov r30, r0 ; NOX-NEXT: ret %1:zreg = COPY killed $r31r30 %2:gpr8 = LPMBRdZ %1, implicit-def dead $r0 $r30 = COPY %2 RET implicit $r30 ...