Skip to content

Commit 935032b

Browse files
TimNNshepmaster
authored andcommitted
[PATCH-AVR] avr-rust/rust-legacy-fork#37: DREGS_WITHOUT_Z
1 parent 7051ead commit 935032b

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

lib/Target/AVR/AVRInstrInfo.td

+2-2
Original file line numberDiff line numberDiff line change
@@ -832,7 +832,7 @@ let isCall = 1 in
832832
//===----------------------------------------------------------------------===//
833833
let isTerminator = 1,
834834
isReturn = 1,
835-
isBarrier = 1 in
835+
isBarrier = 1 in
836836
{
837837
def RET : F16<0b1001010100001000,
838838
(outs),
@@ -1222,7 +1222,7 @@ isReMaterializable = 1 in
12221222
// ldd Rd, P+q
12231223
// ldd Rd+1, P+q+1
12241224
let Constraints = "@earlyclobber $dst" in
1225-
def LDDWRdPtrQ : Pseudo<(outs DREGS:$dst),
1225+
def LDDWRdPtrQ : Pseudo<(outs DREGS_WITHOUT_Z:$dst),
12261226
(ins memri:$memri),
12271227
"lddw\t$dst, $memri",
12281228
[(set i16:$dst, (load addr:$memri))]>,

lib/Target/AVR/AVRRegisterInfo.td

+12
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,18 @@ def DREGS : RegisterClass<"AVR", [i16], 8,
157157
R9R8, R7R6, R5R4, R3R2, R1R0
158158
)>;
159159

160+
// Main 16-bit pair register class.
161+
def DREGS_WITHOUT_Z : RegisterClass<"AVR", [i16], 8,
162+
(
163+
// Return value and arguments.
164+
add R25R24, R19R18, R21R20, R23R22,
165+
// Scratch registers.
166+
R27R26,
167+
// Callee saved registers.
168+
R29R28, R17R16, R15R14, R13R12, R11R10,
169+
R9R8, R7R6, R5R4, R3R2, R1R0
170+
)>;
171+
160172
// 16-bit register class for immediate instructions.
161173
def DLDREGS : RegisterClass<"AVR", [i16], 8,
162174
(

0 commit comments

Comments
 (0)