summaryrefslogtreecommitdiff
path: root/compiler/dex/quick
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/dex/quick')
-rw-r--r--compiler/dex/quick/gen_invoke.cc12
1 files changed, 2 insertions, 10 deletions
diff --git a/compiler/dex/quick/gen_invoke.cc b/compiler/dex/quick/gen_invoke.cc
index 55d50ae76c..e3dc554b40 100644
--- a/compiler/dex/quick/gen_invoke.cc
+++ b/compiler/dex/quick/gen_invoke.cc
@@ -1208,10 +1208,7 @@ bool Mir2Lir::GenInlinedAbsFloat(CallInfo* info) {
rl_src = LoadValue(rl_src, kCoreReg);
RegLocation rl_dest = InlineTarget(info);
RegLocation rl_result = EvalLoc(rl_dest, kCoreReg, true);
- int signMask = AllocTemp();
- LoadConstant(signMask, 0x7fffffff);
- OpRegRegReg(kOpAnd, rl_result.reg.GetReg(), rl_src.reg.GetReg(), signMask);
- FreeTemp(signMask);
+ OpRegRegImm(kOpAnd, rl_result.reg.GetReg(), rl_src.reg.GetReg(), 0x7fffffff);
StoreValue(rl_dest, rl_result);
return true;
}
@@ -1226,12 +1223,7 @@ bool Mir2Lir::GenInlinedAbsDouble(CallInfo* info) {
RegLocation rl_dest = InlineTargetWide(info);
RegLocation rl_result = EvalLoc(rl_dest, kCoreReg, true);
OpRegCopyWide(rl_result.reg.GetReg(), rl_result.reg.GetHighReg(), rl_src.reg.GetReg(), rl_src.reg.GetHighReg());
- FreeTemp(rl_src.reg.GetReg());
- FreeTemp(rl_src.reg.GetHighReg());
- int signMask = AllocTemp();
- LoadConstant(signMask, 0x7fffffff);
- OpRegReg(kOpAnd, rl_result.reg.GetHighReg(), signMask);
- FreeTemp(signMask);
+ OpRegImm(kOpAnd, rl_result.reg.GetHighReg(), 0x7fffffff);
StoreValueWide(rl_dest, rl_result);
return true;
}