summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJatin Bhateja <jatin.bhateja@intel.com>2024-03-02 21:30:08 +0530
committerJatin Bhateja <jatin.bhateja@intel.com>2024-03-02 21:30:08 +0530
commit0b270d2eabf62a762a4820fefc30bf238625afb4 (patch)
treea3bac48439724a0c7236d3acd228058934546aba
parentb971fbb76f9d38fef341f927752d2a26daecf91a (diff)
Review resolutions.pr/16354
-rw-r--r--src/hotspot/cpu/x86/c2_MacroAssembler_x86.cpp19
-rw-r--r--src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ByteVector.java4
-rw-r--r--src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ShortVector.java4
-rw-r--r--src/jdk.incubator.vector/share/classes/jdk/incubator/vector/X-Vector.java.template4
4 files changed, 16 insertions, 15 deletions
diff --git a/src/hotspot/cpu/x86/c2_MacroAssembler_x86.cpp b/src/hotspot/cpu/x86/c2_MacroAssembler_x86.cpp
index f6d11f07d09..1ce12bbd48d 100644
--- a/src/hotspot/cpu/x86/c2_MacroAssembler_x86.cpp
+++ b/src/hotspot/cpu/x86/c2_MacroAssembler_x86.cpp
@@ -1668,26 +1668,27 @@ void C2_MacroAssembler::vgather_subword(BasicType elem_ty, XMMRegister dst,
Register mask_idx, Register length,
int vector_len, int vlen_enc) {
Label GATHER8_LOOP;
- XMMRegister iota = xtmp1;
- XMMRegister two_vec = xtmp2;
-
assert(is_subword_type(elem_ty), "");
movl(length, vector_len);
- vpxor(xtmp1, xtmp1, xtmp1, vlen_enc);
- vpxor(dst, dst, dst, vlen_enc);
+ vpxor(xtmp1, xtmp1, xtmp1, vlen_enc); // xtmp1 = {0, ...}
+ vpxor(dst, dst, dst, vlen_enc); // dst = {0, ...}
vallones(xtmp2, vlen_enc);
vpsubd(xtmp2, xtmp1, xtmp2, vlen_enc);
- vpslld(two_vec, xtmp2, 1, vlen_enc);
- load_iota_indices(iota, vector_len * type2aelembytes(elem_ty), T_INT);
+ vpslld(xtmp2, xtmp2, 1, vlen_enc); // xtmp2 = {2, 2, ...}
+ load_iota_indices(xtmp1, vector_len * type2aelembytes(elem_ty), T_INT); // xtmp1 = {0, 1, 2, ...}
bind(GATHER8_LOOP);
+ // TMP_VEC_64(temp_dst) = PICK_SUB_WORDS_FROM_GATHER_INDICES
if (mask == noreg) {
vgather8b_offset(elem_ty, temp_dst, base, idx_base, offset, rtmp, vlen_enc);
} else {
LP64_ONLY(vgather8b_masked_offset(elem_ty, temp_dst, base, idx_base, offset, mask, mask_idx, rtmp, vlen_enc));
}
- vpermd(temp_dst, iota, temp_dst, vlen_enc == Assembler::AVX_512bit ? vlen_enc : Assembler::AVX_256bit);
- vpsubd(iota, iota, two_vec, vlen_enc);
+ // TEMP_PERM_VEC(temp_dst) = PERMUTE TMP_VEC_64(temp_dst) PERM_INDEX(xtmp1)
+ vpermd(temp_dst, xtmp1, temp_dst, vlen_enc == Assembler::AVX_512bit ? vlen_enc : Assembler::AVX_256bit);
+ // PERM_INDEX(xtmp1) = PERM_INDEX(xtmp1) - TWO_VEC(xtmp2)
+ vpsubd(xtmp1, xtmp1, xtmp2, vlen_enc);
+ // DST_VEC = DST_VEC OR TEMP_PERM_VEC
vpor(dst, dst, temp_dst, vlen_enc);
addptr(idx_base, 32 >> (type2aelembytes(elem_ty) - 1));
subl(length, 8 >> (type2aelembytes(elem_ty) - 1));
diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ByteVector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ByteVector.java
index 57f3d7d0334..cf53cd58476 100644
--- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ByteVector.java
+++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ByteVector.java
@@ -3054,9 +3054,9 @@ public abstract class ByteVector extends AbstractVector<Byte> {
Objects.requireNonNull(indexMap);
Class<? extends ByteVector> vectorType = vsp.vectorType();
- VectorSpecies<Integer> lsp = null;
// Constant folding should sweep out following conditonal logic.
+ VectorSpecies<Integer> lsp;
if (isp.length() > IntVector.SPECIES_PREFERRED.length()) {
lsp = IntVector.SPECIES_PREFERRED;
} else {
@@ -3810,9 +3810,9 @@ public abstract class ByteVector extends AbstractVector<Byte> {
m.check(vsp);
Class<? extends ByteVector> vectorType = vsp.vectorType();
- VectorSpecies<Integer> lsp = null;
// Constant folding should sweep out following conditonal logic.
+ VectorSpecies<Integer> lsp;
if (isp.length() > IntVector.SPECIES_PREFERRED.length()) {
lsp = IntVector.SPECIES_PREFERRED;
} else {
diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ShortVector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ShortVector.java
index 6f11c5a7a7d..39276894b9f 100644
--- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ShortVector.java
+++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ShortVector.java
@@ -3055,9 +3055,9 @@ public abstract class ShortVector extends AbstractVector<Short> {
Objects.requireNonNull(indexMap);
Class<? extends ShortVector> vectorType = vsp.vectorType();
- VectorSpecies<Integer> lsp = null;
// Constant folding should sweep out following conditonal logic.
+ VectorSpecies<Integer> lsp;
if (isp.length() > IntVector.SPECIES_PREFERRED.length()) {
lsp = IntVector.SPECIES_PREFERRED;
} else {
@@ -3796,9 +3796,9 @@ public abstract class ShortVector extends AbstractVector<Short> {
m.check(vsp);
Class<? extends ShortVector> vectorType = vsp.vectorType();
- VectorSpecies<Integer> lsp = null;
// Constant folding should sweep out following conditonal logic.
+ VectorSpecies<Integer> lsp;
if (isp.length() > IntVector.SPECIES_PREFERRED.length()) {
lsp = IntVector.SPECIES_PREFERRED;
} else {
diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/X-Vector.java.template b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/X-Vector.java.template
index 6306096265d..22ab291ad2b 100644
--- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/X-Vector.java.template
+++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/X-Vector.java.template
@@ -3627,9 +3627,9 @@ public abstract class $abstractvectortype$ extends AbstractVector<$Boxtype$> {
Objects.requireNonNull(indexMap);
Class<? extends $abstractvectortype$> vectorType = vsp.vectorType();
- VectorSpecies<Integer> lsp = null;
// Constant folding should sweep out following conditonal logic.
+ VectorSpecies<Integer> lsp;
if (isp.length() > IntVector.SPECIES_PREFERRED.length()) {
lsp = IntVector.SPECIES_PREFERRED;
} else {
@@ -4827,9 +4827,9 @@ public abstract class $abstractvectortype$ extends AbstractVector<$Boxtype$> {
m.check(vsp);
Class<? extends $abstractvectortype$> vectorType = vsp.vectorType();
- VectorSpecies<Integer> lsp = null;
// Constant folding should sweep out following conditonal logic.
+ VectorSpecies<Integer> lsp;
if (isp.length() > IntVector.SPECIES_PREFERRED.length()) {
lsp = IntVector.SPECIES_PREFERRED;
} else {