GetNZCVFromOp: Ensure NZ00

This commit is contained in:
Merry 2022-11-27 14:15:06 +00:00 committed by Liam
parent 890deb17ce
commit bcb5948ea2
2 changed files with 5 additions and 5 deletions

View file

@ -82,7 +82,7 @@ void EmitIR<IR::Opcode::GetNZCVFromOp>(oaknut::CodeGenerator& code, EmitContext&
auto flags = ctx.reg_alloc.WriteFlags(inst); auto flags = ctx.reg_alloc.WriteFlags(inst);
RegAlloc::Realize(Wvalue, flags); RegAlloc::Realize(Wvalue, flags);
code.CMP(*Wvalue, WZR.toW()); code.TST(*Wvalue, Wvalue);
break; break;
} }
case IR::Type::U64: { case IR::Type::U64: {
@ -90,7 +90,7 @@ void EmitIR<IR::Opcode::GetNZCVFromOp>(oaknut::CodeGenerator& code, EmitContext&
auto flags = ctx.reg_alloc.WriteFlags(inst); auto flags = ctx.reg_alloc.WriteFlags(inst);
RegAlloc::Realize(Xvalue, flags); RegAlloc::Realize(Xvalue, flags);
code.CMP(*Xvalue, XZR.toX()); code.TST(*Xvalue, Xvalue);
break; break;
} }
default: default:

View file

@ -154,7 +154,7 @@ void EmitX64::EmitGetNZFromOp(EmitContext& ctx, IR::Inst* inst) {
const Xbyak::Reg64 nz = ctx.reg_alloc.ScratchGpr(HostLoc::RAX); const Xbyak::Reg64 nz = ctx.reg_alloc.ScratchGpr(HostLoc::RAX);
const Xbyak::Reg value = ctx.reg_alloc.UseGpr(args[0]).changeBit(bitsize); const Xbyak::Reg value = ctx.reg_alloc.UseGpr(args[0]).changeBit(bitsize);
code.cmp(value, 0); code.test(value, value);
code.lahf(); code.lahf();
code.movzx(eax, ah); code.movzx(eax, ah);
ctx.reg_alloc.DefineValue(inst, nz); ctx.reg_alloc.DefineValue(inst, nz);
@ -180,9 +180,9 @@ void EmitX64::EmitGetNZCVFromOp(EmitContext& ctx, IR::Inst* inst) {
const Xbyak::Reg64 nzcv = ctx.reg_alloc.ScratchGpr(HostLoc::RAX); const Xbyak::Reg64 nzcv = ctx.reg_alloc.ScratchGpr(HostLoc::RAX);
const Xbyak::Reg value = ctx.reg_alloc.UseGpr(args[0]).changeBit(bitsize); const Xbyak::Reg value = ctx.reg_alloc.UseGpr(args[0]).changeBit(bitsize);
code.cmp(value, 0); code.test(value, value);
code.lahf(); code.lahf();
code.seto(code.al); code.mov(al, 0);
ctx.reg_alloc.DefineValue(inst, nzcv); ctx.reg_alloc.DefineValue(inst, nzcv);
} }