Skip to content
Success

Changes

Summary

  1. x86-64: Inline small array copy size for int and long arrays (commit: 2a2e130) (details)
Commit 2a2e13046b1a7c52179fd5f83380e633ccbec11f by Annabelle Huo
x86-64: Inline small array copy size for int and long arrays

(1)
Inline small array copy size without using `rep movs`
for int array and long array
  - If AVX-512 is supported and copy size <= 128 bytes,
    the inlined copy sequence is used.
  - If AVX is supported, the threshold for inlined sequence
    is 64 bytes instead.
  - The enhancement for 32 bit and 64 bit arrays will be reused
    in the downstream OpenJ9 project for reference arrays.

(2)
Refactor char array enhancement implementation to support
both `rep movsw` and `rep movsd` if the copysize is greater
than the supported enhancement threshold.

(3)
Add the following options to disable the enhancement
  - `disableArrayCopyIntArrayInlineSmallSizeWithoutREPMOVS`:
    disable the enhancement for int array

  - `disableArrayCopyLongArrayInlineSmallSizeWithoutREPMOVS`:
    disable the enhancement for long array

  - `disableArrayCopyReferenceArrayInlineSmallSizeWithoutREPMOVS`:
    disable the enhancement for reference array, which will be
    implemented in downstream project OpenJ9.

Signed-off-by: Annabelle Huo <Annabelle.Huo@ibm.com>
(commit: 2a2e130)
The file was modified compiler/x/codegen/OMRTreeEvaluator.hpp (diff)
The file was modified compiler/x/codegen/OMRTreeEvaluator.cpp (diff)
The file was modified compiler/control/OMROptions.cpp (diff)
The file was modified compiler/control/OMROptions.hpp (diff)