Home | History | Annotate | Download | only in FP

Lines Matching full:cunit

22 extern void dvmCompilerFlushRegWideForV5TEVFP(CompilationUnit *cUnit,
24 extern void dvmCompilerFlushRegForV5TEVFP(CompilationUnit *cUnit, int reg);
27 static void loadValueAddress(CompilationUnit *cUnit, RegLocation rlSrc,
30 rlSrc = rlSrc.wide ? dvmCompilerUpdateLocWide(cUnit, rlSrc) :
31 dvmCompilerUpdateLoc(cUnit, rlSrc);
34 dvmCompilerFlushRegWideForV5TEVFP(cUnit, rlSrc.lowReg,
37 dvmCompilerFlushRegForV5TEVFP(cUnit, rlSrc.lowReg);
40 opRegRegImm(cUnit, kOpAdd, rDest, rFP,
41 dvmCompilerS2VReg(cUnit, rlSrc.sRegLow) << 2);
44 static bool genInlineSqrt(CompilationUnit *cUnit, MIR *mir)
46 RegLocation rlSrc = dvmCompilerGetSrcWide(cUnit, mir, 0, 1);
53 loadValueAddress(cUnit, rlSrc, r_A2);
54 genDispatchToHandler(cUnit, TEMPLATE_SQRT_DOUBLE_VFP);
55 storeValueWide(cUnit, rlDest, rlResult);
67 static bool genArithOpFloat(CompilationUnit *cUnit, MIR *mir,
99 return genArithOpFloatPortable(cUnit, mir, rlDest, rlSrc1, rlSrc2);
104 rlSrc1 = loadValue(cUnit, rlSrc1, kFPReg);
105 rlSrc2 = loadValue(cUnit, rlSrc2, kFPReg);
106 rlResult = dvmCompilerEvalLoc(cUnit, rlDest, kFPReg, true);
107 newLIR3(cUnit, (MipsOpCode)op, rlResult.lowReg, rlSrc1.lowReg, rlSrc2.lowReg);
108 storeValue(cUnit, rlDest, rlResult);
138 return genArithOpFloatPortable(cUnit, mir, rlDest, rlSrc1, rlSrc2);
143 loadValueAddress(cUnit, rlDest, r_A0);
144 dvmCompilerClobber(cUnit, r_A0);
145 loadValueAddress(cUnit, rlSrc1, r_A1);
146 dvmCompilerClobber(cUnit, r_A1);
147 loadValueAddress(cUnit, rlSrc2, r_A2);
148 genDispatchToHandler(cUnit, opcode);
149 rlDest = dvmCompilerUpdateLoc(cUnit, rlDest);
151 dvmCompilerClobber(cUnit, rlDest.lowReg);
157 static bool genArithOpDouble(CompilationUnit *cUnit, MIR *mir,
185 return genArithOpDoublePortable(cUnit, mir, rlDest, rlSrc1, rlSrc2);
190 rlSrc1 = loadValueWide(cUnit, rlSrc1, kFPReg);
192 rlSrc2 = loadValueWide(cUnit, rlSrc2, kFPReg);
194 rlResult = dvmCompilerEvalLoc(cUnit, rlDest, kFPReg, true);
197 newLIR3(cUnit, (MipsOpCode)op, S2D(rlResult.lowReg, rlResult.highReg),
200 storeValueWide(cUnit, rlDest, rlResult);
225 return genArithOpDoublePortable(cUnit, mir, rlDest, rlSrc1,
231 loadValueAddress(cUnit, rlDest, r_A0);
232 dvmCompilerClobber(cUnit, r_A0);
233 loadValueAddress(cUnit, rlSrc1, r_A1);
234 dvmCompilerClobber(cUnit, r_A1);
235 loadValueAddress(cUnit, rlSrc2, r_A2);
236 genDispatchToHandler(cUnit, opcode);
237 rlDest = dvmCompilerUpdateLocWide(cUnit, rlDest);
239 dvmCompilerClobber(cUnit, rlDest.lowReg);
240 dvmCompilerClobber(cUnit, rlDest.highReg);
246 static bool genConversion(CompilationUnit *cUnit, MIR *mir)
285 return genConversionPortable(cUnit, mir);
290 rlSrc = dvmCompilerGetSrcWide(cUnit, mir, 0, 1);
291 rlSrc = loadValueWide(cUnit, rlSrc, kFPReg);
294 rlSrc = dvmCompilerGetSrc(cUnit, mir, 0);
295 rlSrc = loadValue(cUnit, rlSrc, kFPReg);
299 rlDest = dvmCompilerGetDestWide(cUnit, mir, 0, 1);
300 rlResult = dvmCompilerEvalLoc(cUnit, rlDest, kFPReg, true);
301 newLIR2(cUnit, (MipsOpCode)op, S2D(rlResult.lowReg, rlResult.highReg), srcReg);
302 storeValueWide(cUnit, rlDest, rlResult);
304 rlDest = dvmCompilerGetDest(cUnit, mir, 0);
305 rlResult = dvmCompilerEvalLoc(cUnit, rlDest, kFPReg, true);
306 newLIR2(cUnit, (MipsOpCode)op, rlResult.lowReg, srcReg);
307 storeValue(cUnit, rlDest, rlResult);
347 return genConversionPortable(cUnit, mir);
353 rlSrc = dvmCompilerGetSrcWide(cUnit, mir, 0, 1);
355 rlSrc = dvmCompilerGetSrc(cUnit, mir, 0);
359 rlDest = dvmCompilerGetDestWide(cUnit, mir, 0, 1);
361 rlDest = dvmCompilerGetDest(cUnit, mir, 0);
363 loadValueAddress(cUnit, rlDest, r_A0);
364 dvmCompilerClobber(cUnit, r_A0);
365 loadValueAddress(cUnit, rlSrc, r_A1);
366 genDispatchToHandler(cUnit, templateOpcode);
368 rlDest = dvmCompilerUpdateLocWide(cUnit, rlDest);
369 dvmCompilerClobber(cUnit, rlDest.highReg);
371 rlDest = dvmCompilerUpdateLoc(cUnit, rlDest);
373 dvmCompilerClobber(cUnit, rlDest.lowReg);
378 static bool genCmpFP(CompilationUnit *cUnit, MIR *mir, RegLocation rlDest,
382 RegLocation rlResult = dvmCompilerGetReturn(cUnit);
403 loadValueAddress(cUnit, rlSrc1, r_A0);
404 dvmCompilerClobber(cUnit, r_A0);
405 loadValueAddress(cUnit, rlSrc2, r_A1);
406 genDispatchToHandler(cUnit, templateOpcode);
407 storeValue(cUnit, rlDest, rlResult);