All tests passing (again).

This commit is contained in:
JET
2012-01-18 12:41:51 -07:00
parent 9c58c7c936
commit 233725e232

View File

@ -1,4 +1,4 @@
/* Copyright (c) 2010-2011, Avian Contributors /* Copyright (c) 2010-2012, Avian Contributors
Permission to use, copy, modify, and/or distribute this software Permission to use, copy, modify, and/or distribute this software
for any purpose with or without fee is hereby granted, provided for any purpose with or without fee is hereby granted, provided
@ -232,7 +232,7 @@ inline int blo(int offset) { return SETCOND(b(offset), CC); }
inline int bhs(int offset) { return SETCOND(b(offset), CS); } inline int bhs(int offset) { return SETCOND(b(offset), CS); }
// HARDWARE FLAGS // HARDWARE FLAGS
bool vfpSupported() { bool vfpSupported() {
return true; return false; // TODO
} }
} }
@ -2183,37 +2183,38 @@ class MyArchitecture: public Assembler::Architecture {
unsigned aSize, uint8_t* aTypeMask, uint64_t* aRegisterMask, unsigned aSize, uint8_t* aTypeMask, uint64_t* aRegisterMask,
unsigned bSize, bool* thunk) unsigned bSize, bool* thunk)
{ {
*aTypeMask = (1 << RegisterOperand); *thunk = false;
*aTypeMask = ~0;
*aRegisterMask = ~static_cast<uint64_t>(0);
switch (op) { switch (op) {
case Negate:
*aTypeMask = (1 << RegisterOperand);
break;
case Absolute: case Absolute:
case FloatAbsolute: case FloatAbsolute:
case FloatSquareRoot: case FloatSquareRoot:
case FloatNegate: case FloatNegate:
case Float2Float: case Float2Float:
if (vfpSupported()) { if (!vfpSupported()) {
} else {
*thunk = true; *thunk = true;
} }
break; break;
case Float2Int: case Float2Int:
if (vfpSupported() && bSize == 4) { if (!vfpSupported() || bSize != 4) {
} else {
*thunk = true; *thunk = true;
} }
break; break;
case Int2Float: case Int2Float:
if (vfpSupported() && aSize == 4) { if (!vfpSupported() || aSize != 4) {
} else {
*thunk = true; *thunk = true;
} }
break; break;
default: default:
*aRegisterMask = ~static_cast<uint64_t>(0);
*thunk = false;
break; break;
} }
} }
@ -2301,8 +2302,7 @@ class MyArchitecture: public Assembler::Architecture {
case JumpIfFloatGreaterOrUnordered: case JumpIfFloatGreaterOrUnordered:
case JumpIfFloatLessOrEqualOrUnordered: case JumpIfFloatLessOrEqualOrUnordered:
case JumpIfFloatGreaterOrEqualOrUnordered: case JumpIfFloatGreaterOrEqualOrUnordered:
if (vfpSupported()) { if (!vfpSupported()) {
} else {
*thunk = true; *thunk = true;
} }
break; break;