8317763: Follow-up to AVX512 intrinsics for Arrays.sort() PR
Reviewed-by: jbhateja, kvn, ihse, sviswanathan
This commit is contained in:
parent
839cb19ec2
commit
2edf9c3f1e
@ -4173,7 +4173,7 @@ void StubGenerator::generate_compiler_stubs() {
|
||||
}
|
||||
|
||||
// Load x86_64_sort library on supported hardware to enable avx512 sort and partition intrinsics
|
||||
if (UseAVX > 2 && VM_Version::supports_avx512dq()) {
|
||||
if (VM_Version::is_intel() && VM_Version::supports_avx512dq()) {
|
||||
void *libsimdsort = nullptr;
|
||||
char ebuf_[1024];
|
||||
char dll_name_simd_sort[JVM_MAXPATHLEN];
|
||||
|
@ -57,9 +57,18 @@
|
||||
#include <cmath>
|
||||
#include <cstdint>
|
||||
#include <cstring>
|
||||
#include <immintrin.h>
|
||||
#include <limits>
|
||||
|
||||
/*
|
||||
Workaround for the bug in GCC12 (that was fixed in GCC 12.3.1).
|
||||
More details are available at: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105593
|
||||
*/
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
||||
#pragma GCC diagnostic ignored "-Wuninitialized"
|
||||
#include <immintrin.h>
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
#define X86_SIMD_SORT_INFINITY std::numeric_limits<double>::infinity()
|
||||
#define X86_SIMD_SORT_INFINITYF std::numeric_limits<float>::infinity()
|
||||
#define X86_SIMD_SORT_INFINITYH 0x7c00
|
||||
|
@ -166,9 +166,9 @@ final class DualPivotQuicksort {
|
||||
/**
|
||||
* Partitions the specified range of the array using the given pivots.
|
||||
*
|
||||
* @param a the array to be sorted
|
||||
* @param low the index of the first element, inclusive, to be sorted
|
||||
* @param high the index of the last element, exclusive, to be sorted
|
||||
* @param a the array to be partitioned
|
||||
* @param low the index of the first element, inclusive, to be partitioned
|
||||
* @param high the index of the last element, exclusive, to be partitioned
|
||||
* @param pivotIndex1 the index of pivot1, the first pivot
|
||||
* @param pivotIndex2 the index of pivot2, the second pivot
|
||||
*/
|
||||
@ -178,13 +178,13 @@ final class DualPivotQuicksort {
|
||||
/**
|
||||
* Partitions the specified range of the array using the two pivots provided.
|
||||
*
|
||||
* @param elemType the class of the array to be sorted
|
||||
* @param array the array to be sorted
|
||||
* @param elemType the class of the array to be partitioned
|
||||
* @param array the array to be partitioned
|
||||
* @param offset the relative offset, in bytes, from the base address of
|
||||
* the array to partition, otherwise if the array is {@code null},an absolute
|
||||
* address pointing to the first element to partition from.
|
||||
* @param low the index of the first element, inclusive, to be sorted
|
||||
* @param high the index of the last element, exclusive, to be sorted
|
||||
* @param low the index of the first element, inclusive, to be partitioned
|
||||
* @param high the index of the last element, exclusive, to be partitioned
|
||||
* @param pivotIndex1 the index of pivot1, the first pivot
|
||||
* @param pivotIndex2 the index of pivot2, the second pivot
|
||||
* @param po the method reference for the fallback implementation
|
||||
|
Loading…
Reference in New Issue
Block a user