MOV1l→MOVi1l
This commit is contained in:
parent
d98bbb7a83
commit
c2d0ce5568
@ -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 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);
|
#define INCV(R) INC4mo(R, offsetof(Value,refc)); // ADD4mi(r_TMP, 1); CCALL(i_INC);
|
||||||
#ifdef __BMI2__ // TODO move to runtime detection maybe
|
#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
|
#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);}
|
#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
|
#endif
|
||||||
|
|||||||
@ -379,7 +379,7 @@ static inline void asm_a(TStack* o, u64 len, u8 v[]) {
|
|||||||
#define SHLi(O,IMM) AC2(SHLi,O,IMM)
|
#define SHLi(O,IMM) AC2(SHLi,O,IMM)
|
||||||
#define SHRi(O,IMM) AC2(SHRi,O,IMM)
|
#define SHRi(O,IMM) AC2(SHRi,O,IMM)
|
||||||
#define MOVi(O,IMM) AC2(MOVi,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 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)
|
#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 if (i==(i32)i) { nREX4(o,0); ASM1(0xB8+(o&7)); ASM4(i); }
|
||||||
else { nREX8(o,0); ASM1(0xB8+(o&7)); ASM8(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(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); }
|
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); }
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user