summaryrefslogtreecommitdiffstats
path: root/test/800-smali
diff options
context:
space:
mode:
authornikolay serdjuk <nikolay.y.serdjuk@intel.com>2015-01-20 17:03:02 +0600
committerbuzbee <buzbee@google.com>2015-02-20 09:01:38 -0800
commit55693289c9f6c616e195e7b4ea3fe8e10c0681a6 (patch)
treeee43d85c19e61f5fdec76fbe6f26dcb6392b85a7 /test/800-smali
parentba6d943827e6df52316a843468691de264ab4aa5 (diff)
downloadart-55693289c9f6c616e195e7b4ea3fe8e10c0681a6.zip
art-55693289c9f6c616e195e7b4ea3fe8e10c0681a6.tar.gz
art-55693289c9f6c616e195e7b4ea3fe8e10c0681a6.tar.bz2
ART: Some conditions should be stricter in GenInlinedMinMax()
When we inline Min or Max intrinsics of long data type in 32-bit mode we should care about register overlap cases. I.e. when result and operands share partially or entirely same registers. We consider three cases: a) If result is between two operands, then we fail to inline because implementation tends to be overcomplicated. b) Since we always copy the first operand into result, we should check whether result and the second operand share same registers. If so, we swap the second with the first one. c) If operands share same registers then we just copy the first operand into result and stop. The algorithm requires many registers. Therefore, we try to reuse some of them. This also needs check for overlap. Change-Id: I1e327acedfdc63d9b434b21b41d75bb86c41f1d0
Diffstat (limited to 'test/800-smali')
0 files changed, 0 insertions, 0 deletions