diff options
author | Razvan A Lupusoru <razvan.a.lupusoru@intel.com> | 2014-01-29 16:02:57 -0800 |
---|---|---|
committer | Ian Rogers <irogers@google.com> | 2014-02-05 22:42:21 -0800 |
commit | 2c498d1f28e62e81fbdb477ff93ca7454e7493d7 (patch) | |
tree | 94654433a4dae83ab75d432304dcc0358aefeb1c /compiler/dex/compiler_enums.h | |
parent | 1dcff62155e8477eb114c8a86eb1beb0797ffc11 (diff) | |
download | art-2c498d1f28e62e81fbdb477ff93ca7454e7493d7.zip art-2c498d1f28e62e81fbdb477ff93ca7454e7493d7.tar.gz art-2c498d1f28e62e81fbdb477ff93ca7454e7493d7.tar.bz2 |
Specializing x86 range argument copying
The ARM implementation of range argument copying was specialized in some cases.
For all other architectures, it would fall back to generating memcpy. This patch
updates the x86 implementation so it does not call memcpy and instead generates
loads and stores, favoring movement of 128-bit chunks.
Change-Id: Ic891e5609a4b0e81a47c29cc5a9b301bd10a1933
Signed-off-by: Razvan A Lupusoru <razvan.a.lupusoru@intel.com>
Diffstat (limited to 'compiler/dex/compiler_enums.h')
-rw-r--r-- | compiler/dex/compiler_enums.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/compiler/dex/compiler_enums.h b/compiler/dex/compiler_enums.h index 18122b3..2bc36a5 100644 --- a/compiler/dex/compiler_enums.h +++ b/compiler/dex/compiler_enums.h @@ -210,6 +210,22 @@ enum OpKind { kOpInvalid, }; +enum MoveType { + kMov8GP, // Move 8-bit general purpose register. + kMov16GP, // Move 16-bit general purpose register. + kMov32GP, // Move 32-bit general purpose register. + kMov64GP, // Move 64-bit general purpose register. + kMov32FP, // Move 32-bit FP register. + kMov64FP, // Move 64-bit FP register. + kMovLo64FP, // Move low 32-bits of 64-bit FP register. + kMovHi64FP, // Move high 32-bits of 64-bit FP register. + kMovU128FP, // Move 128-bit FP register to/from possibly unaligned region. + kMov128FP = kMovU128FP, + kMovA128FP, // Move 128-bit FP register to/from region surely aligned to 16-bytes. + kMovLo128FP, // Move low 64-bits of 128-bit FP register. + kMovHi128FP, // Move high 64-bits of 128-bit FP register. +}; + std::ostream& operator<<(std::ostream& os, const OpKind& kind); enum ConditionCode { |