emit_a64_data_processing.cpp: remove pointless DoNZCV
.
This commit is contained in:
parent
6f643b2352
commit
c8ec8f8945
@ -667,15 +667,6 @@ static Arm64Gen::ARM64Reg DoCarry(RegAlloc& reg_alloc, Argument& carry_in, IR::I
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static Arm64Gen::ARM64Reg DoNZCV(BlockOfCode& code, RegAlloc& reg_alloc, IR::Inst* nzcv_out) {
|
|
||||||
if (!nzcv_out)
|
|
||||||
return INVALID_REG;
|
|
||||||
|
|
||||||
Arm64Gen::ARM64Reg nzcv = reg_alloc.ScratchGpr();
|
|
||||||
code.MOVI2R(nzcv, 0);
|
|
||||||
return nzcv;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void EmitAdd(BlockOfCode& code, EmitContext& ctx, IR::Inst* inst, int bitsize) {
|
static void EmitAdd(BlockOfCode& code, EmitContext& ctx, IR::Inst* inst, int bitsize) {
|
||||||
auto carry_inst = inst->GetAssociatedPseudoOperation(IR::Opcode::GetCarryFromOp);
|
auto carry_inst = inst->GetAssociatedPseudoOperation(IR::Opcode::GetCarryFromOp);
|
||||||
auto overflow_inst = inst->GetAssociatedPseudoOperation(IR::Opcode::GetOverflowFromOp);
|
auto overflow_inst = inst->GetAssociatedPseudoOperation(IR::Opcode::GetOverflowFromOp);
|
||||||
@ -684,7 +675,7 @@ static void EmitAdd(BlockOfCode& code, EmitContext& ctx, IR::Inst* inst, int bit
|
|||||||
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
|
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
|
||||||
auto& carry_in = args[2];
|
auto& carry_in = args[2];
|
||||||
|
|
||||||
Arm64Gen::ARM64Reg nzcv = DoNZCV(code, ctx.reg_alloc, nzcv_inst);
|
Arm64Gen::ARM64Reg nzcv = nzcv_inst ? ctx.reg_alloc.ScratchGpr() : INVALID_REG;
|
||||||
Arm64Gen::ARM64Reg result = ctx.reg_alloc.UseScratchGpr(args[0]);
|
Arm64Gen::ARM64Reg result = ctx.reg_alloc.UseScratchGpr(args[0]);
|
||||||
Arm64Gen::ARM64Reg carry = DecodeReg(DoCarry(ctx.reg_alloc, carry_in, carry_inst));
|
Arm64Gen::ARM64Reg carry = DecodeReg(DoCarry(ctx.reg_alloc, carry_in, carry_inst));
|
||||||
Arm64Gen::ARM64Reg overflow = overflow_inst ? ctx.reg_alloc.ScratchGpr() : INVALID_REG;
|
Arm64Gen::ARM64Reg overflow = overflow_inst ? ctx.reg_alloc.ScratchGpr() : INVALID_REG;
|
||||||
@ -756,7 +747,7 @@ static void EmitSub(BlockOfCode& code, EmitContext& ctx, IR::Inst* inst, int bit
|
|||||||
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
|
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
|
||||||
auto& carry_in = args[2];
|
auto& carry_in = args[2];
|
||||||
|
|
||||||
Arm64Gen::ARM64Reg nzcv = DoNZCV(code, ctx.reg_alloc, nzcv_inst);
|
Arm64Gen::ARM64Reg nzcv = nzcv_inst ? ctx.reg_alloc.ScratchGpr() : INVALID_REG;
|
||||||
Arm64Gen::ARM64Reg result = ctx.reg_alloc.UseScratchGpr(args[0]);
|
Arm64Gen::ARM64Reg result = ctx.reg_alloc.UseScratchGpr(args[0]);
|
||||||
Arm64Gen::ARM64Reg carry = DoCarry(ctx.reg_alloc, carry_in, carry_inst);
|
Arm64Gen::ARM64Reg carry = DoCarry(ctx.reg_alloc, carry_in, carry_inst);
|
||||||
Arm64Gen::ARM64Reg overflow = overflow_inst ? ctx.reg_alloc.ScratchGpr() : INVALID_REG;
|
Arm64Gen::ARM64Reg overflow = overflow_inst ? ctx.reg_alloc.ScratchGpr() : INVALID_REG;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user