From c2d0ce556860a843d78ac67cbc7bf4200870ca8e Mon Sep 17 00:00:00 2001 From: dzaima Date: Tue, 22 Jun 2021 17:12:23 +0300 Subject: [PATCH] =?UTF-8?q?MOV1l=E2=86=92MOVi1l?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/jit/nvm.c | 2 +- src/jit/x86_64.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/jit/nvm.c b/src/jit/nvm.c index bccdeaf0..cb826b82 100644 --- a/src/jit/nvm.c +++ b/src/jit/nvm.c @@ -478,7 +478,7 @@ Nvm_res m_nvm(Body* body) { #define LSC(R,D) { if(D) MOV8rmo(R,r_PSCS,D*8); else MOV(R,r_SC); } #define INCV(R) INC4mo(R, offsetof(Value,refc)); // ADD4mi(r_TMP, 1); CCALL(i_INC); #ifdef __BMI2__ // TODO move to runtime detection maybe - #define INCB(R,T,U) IMM(T,0xfffffffffffffull);ADD(T,R);IMM(U,0x7fffffffffffeull);CMP(T,U);{JA(lI);MOV1l(U,0x30);BZHI(U,R,U);INCV(U);LBL1(lI);} + #define INCB(R,T,U) IMM(T,0xfffffffffffffull);ADD(T,R);IMM(U,0x7fffffffffffeull);CMP(T,U);{JA(lI);MOVi1l(U,0x30);BZHI(U,R,U);INCV(U);LBL1(lI);} #else #define INCB(R,T,U) IMM(T,0xfffffffffffffull);ADD(T,R);IMM(U,0x7fffffffffffeull);CMP(T,U);{JA(lI);IMM(U,0xffffffffffffull);AND(U,R);INCV(U);LBL1(lI);} #endif diff --git a/src/jit/x86_64.h b/src/jit/x86_64.h index 47a012e1..21cbf1b3 100644 --- a/src/jit/x86_64.h +++ b/src/jit/x86_64.h @@ -379,7 +379,7 @@ static inline void asm_a(TStack* o, u64 len, u8 v[]) { #define SHLi(O,IMM) AC2(SHLi,O,IMM) #define SHRi(O,IMM) AC2(SHRi,O,IMM) #define MOVi(O,IMM) AC2(MOVi,O,IMM) -#define MOV1l(O,IMM) AC2(MOV1l,O,IMM) +#define MOVi1l(O,IMM) AC2(MOVi1l,O,IMM) #define ADD4mi(O,IMM) AC2(ADD4mi,O,IMM) // ADD4mi(o,1) is an alternative for INC4mo(o,0) #define MOV8rm(O,I) AC2(MOV8rm,O,I) // O ← *(u64*)(nullptr + I) @@ -444,7 +444,7 @@ ASMI(MOVi, Reg o, i64 i) { else if (i==(i32)i) { nREX4(o,0); ASM1(0xB8+(o&7)); ASM4(i); } else { nREX8(o,0); ASM1(0xB8+(o&7)); ASM8(i); } } -ASMI(MOV1l, Reg o, i8 imm) { if (o>=4) ASM1(o>=8?0x41:0x40); ASM1(0xb0+(o&7)); ASM1(imm); } +ASMI(MOVi1l, Reg o, i8 imm) { if (o>=4) ASM1(o>=8?0x41:0x40); ASM1(0xb0+(o&7)); ASM1(imm); } ASMI(MOV8mr, Reg o, Reg i) { nREX8(o,i); ASM1(0x89); MRM(o,i); } ASMI(MOV8mro, Reg o, Reg i, i32 off) { nREX8(o,i); ASM1(0x89); MRMo(o,i, off); } ASMI(MOV8rm, Reg i, Reg o) { nREX8(o,i); ASM1(0x8B); MRM(o,i); } ASMI(MOV8rmo, Reg i, Reg o, i32 off) { nREX8(o,i); ASM1(0x8B); MRMo(o,i, off); }