summaryrefslogtreecommitdiff
path: root/compiler/optimizing/intrinsics_utils.h
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2020-07-20 10:42:15 +0100
committer Vladimir Marko <vmarko@google.com> 2020-09-24 10:51:06 +0000
commit8942b3a769729e9c1fb65f5b738317483124dc45 (patch)
treee99c60039c9ef27d05a6d43269232953b72058be /compiler/optimizing/intrinsics_utils.h
parent0571d479f52781df0b4d94caaf704631122ba6e6 (diff)
Integer.divideUnsigned() intrinsic on ARM64.
Implements the intrinsic for arm64; adds a comment for a DCHECK() that prevented kNoOutputOverlap usage in intrinsics with slow paths. Author: Vladimir Marko. Committer: Artem Serov. Test: Covered by 082-inline-execute. Test: testrunner.py --target --optimizing --64 Bug: 156736938 Change-Id: Ie1e61c19afe6a899fd4152206e5dbf9ad013e602
Diffstat (limited to 'compiler/optimizing/intrinsics_utils.h')
-rw-r--r--compiler/optimizing/intrinsics_utils.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/compiler/optimizing/intrinsics_utils.h b/compiler/optimizing/intrinsics_utils.h
index 8c9dd14b19..b4ef5ddde3 100644
--- a/compiler/optimizing/intrinsics_utils.h
+++ b/compiler/optimizing/intrinsics_utils.h
@@ -78,6 +78,11 @@ class IntrinsicSlowPath : public TSlowPathCode {
Location out = invoke_->GetLocations()->Out();
if (out.IsValid()) {
DCHECK(out.IsRegisterKind()); // TODO: Replace this when we support output in memory.
+ // We want to double-check that we don't overwrite a live register with the return
+ // value.
+ // Note: For the possible kNoOutputOverlap case we can't simply remove the OUT register
+ // from the GetLiveRegisters() - theoretically it might be needed after the return from
+ // the slow path.
DCHECK(!invoke_->GetLocations()->GetLiveRegisters()->OverlapsRegisters(out));
codegen->MoveFromReturnRegister(out, invoke_->GetType());
}