static bool genArithOpFloat(CompilationUnit *cUnit, MIR *mir, int vDest, int vSrc1, int vSrc2) { int op = THUMB_BKPT; /* * Don't attempt to optimize register usage since these opcodes call out to * the handlers. */ switch (mir->dalvikInsn.opCode) { case OP_ADD_FLOAT_2ADDR: case OP_ADD_FLOAT: op = THUMB2_VADDS; break; case OP_SUB_FLOAT_2ADDR: case OP_SUB_FLOAT: op = THUMB2_VSUBS; break; case OP_DIV_FLOAT_2ADDR: case OP_DIV_FLOAT: op = THUMB2_VDIVS; break; case OP_MUL_FLOAT_2ADDR: case OP_MUL_FLOAT: op = THUMB2_VMULS; break; case OP_REM_FLOAT_2ADDR: case OP_REM_FLOAT: case OP_NEG_FLOAT: { return genArithOpFloatPortable(cUnit, mir, vDest, vSrc1, vSrc2); } default: return true; } loadFloat(cUnit, vSrc1, fr2); loadFloat(cUnit, vSrc2, fr4); newLIR3(cUnit, op, fr0, fr2, fr4); storeFloat(cUnit, fr0, vDest, 0); return false; }
Magic3D::XMLElement* Magic3D::TextData::load(XMLElement* root) { if (root) { text = loadString(root, M3D_TEXT_XML_TEXT); if (text.compare(M3D_XML_NULL) == 0) { text.clear(); } std::string fontName = loadString(root, M3D_TEXT_XML_FONT); if (fontName.compare(M3D_XML_NULL) != 0) { bool created; font = ResourceManager::getFonts()->load(fontName, created); } textAlignment = (HORIZONTAL_ALIGN)loadInt(root, M3D_TEXT_XML_ALIGNMENT); textColor = loadColorRGBA(root, M3D_TEXT_XML_COLOR); textSize = loadFloat(root, M3D_TEXT_XML_SIZE); changed = true; } return root; }
void StaticShader::loadShineVariables(float shineDamper, float reflectivity) { loadFloat(_locationShineDamper, shineDamper); loadFloat(_locationReflectivity, reflectivity); }
void StaticShader::loadNumberOfRows(int numberOfRows) { loadFloat(_locationNumberOfRows, numberOfRows); }
void StaticShader::loadShining(float reflectivity, float shineDamper) { loadFloat(this->reflectivity, reflectivity); loadFloat(this->shineDamper, shineDamper); }
static bool genConversion(CompilationUnit *cUnit, MIR *mir) { OpCode opCode = mir->dalvikInsn.opCode; int vSrc1Dest = mir->dalvikInsn.vA; int vSrc2 = mir->dalvikInsn.vB; int op = THUMB_BKPT; bool longSrc = false; bool longDest = false; int srcReg; int tgtReg; switch (opCode) { case OP_INT_TO_FLOAT: longSrc = false; longDest = false; op = THUMB2_VCVTIF; break; case OP_FLOAT_TO_INT: longSrc = false; longDest = false; op = THUMB2_VCVTFI; break; case OP_DOUBLE_TO_FLOAT: longSrc = true; longDest = false; op = THUMB2_VCVTDF; break; case OP_FLOAT_TO_DOUBLE: longSrc = false; longDest = true; op = THUMB2_VCVTFD; break; case OP_INT_TO_DOUBLE: longSrc = false; longDest = true; op = THUMB2_VCVTID; break; case OP_DOUBLE_TO_INT: longSrc = true; longDest = false; op = THUMB2_VCVTDI; break; case OP_FLOAT_TO_LONG: case OP_LONG_TO_FLOAT: case OP_DOUBLE_TO_LONG: case OP_LONG_TO_DOUBLE: return genConversionPortable(cUnit, mir); default: return true; } if (longSrc) { srcReg = dr1; loadDouble(cUnit, vSrc2, srcReg); } else { srcReg = fr2; loadFloat(cUnit, vSrc2, srcReg); } if (longDest) { newLIR2(cUnit, op, dr0, srcReg); storeDouble(cUnit, dr0, vSrc1Dest, 0); } else { newLIR2(cUnit, op, fr0, srcReg); storeFloat(cUnit, fr0, vSrc1Dest, 0); } return false; }