Preparing some control instructions for proper emitting.

This commit is contained in:
Ben Vanik
2013-05-24 03:51:58 -07:00
parent bf8f068fa5
commit b8323c3055
2 changed files with 369 additions and 372 deletions

View File

@@ -1471,7 +1471,6 @@ void X64Emitter::update_fpr_value(uint32_t n, GpVar& value) {
// return jit_value_create_nint_constant(fn_, jit_type_nuint, value);
// }
#if 0
GpVar X64Emitter::sign_extend(GpVar& value, int size) {
X86Compiler& c = compiler_;
@@ -1489,25 +1488,27 @@ GpVar X64Emitter::sign_extend(GpVar& value, int size) {
GpVar tmp;
switch (size) {
case 1:
tmp = c.newGpVar(kX86VarTypeGpd);
return value.r8();
XEASSERTALWAYS();
return value;
case 2:
tmp = c.newGpVar(kX86VarTypeGpd);
return value.r16();
XEASSERTALWAYS();
return value;
case 4:
tmp = c.newGpVar(kX86VarTypeGpd);
return value.r32();
XEASSERTALWAYS();
return value;
default:
case 8:
tmp = c.newGpVar(kX86VarTypeGpq);
c.mov(tmp, value);
if (value.getSize() == 4) {
c.cdqe(value);
switch (value.getSize()) {
case 1: c.cbw(value); // b->w->d->q
case 2: c.cwde(value); // w->d->q
case 4: c.cdqe(value); // d->q
break;
}
return value.r64();
return value;
}
}
#endif
GpVar X64Emitter::zero_extend(GpVar& value, int size) {
X86Compiler& c = compiler_;