Skip to content

Commit e1fccf1

Browse files
committed
clean up comments
1 parent e9daa30 commit e1fccf1

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

Diff for: runtime/compiler/p/codegen/J9TreeEvaluator.cpp

+11-9
Original file line numberDiff line numberDiff line change
@@ -10635,14 +10635,14 @@ hashCodeHelper(TR::Node *node, TR::CodeGenerator *cg, TR::DataType elementType,
1063510635
generateTrg1Src1ImmInstruction(cg, TR::InstOpCode::cmpi4, node, condReg, tempReg, 0x0);
1063610636
generateConditionalBranchInstruction(cg, TR::InstOpCode::beq, node, VSXLoopPrep, condReg);
1063710637

10638-
// deal with misaligned data
10638+
// Deal with misaligned data:
1063910639
// The reason we don't do VSX loop directly is we want to avoid loading unaligned data
1064010640
// and deal with it with vperm.
1064110641
// Instead, we load the first unaligned part, let VSX handle the rest aligned part.
1064210642
// load unaligned v, mask out unwanted part
1064310643
// for example, if value = 0x12345, we mask out 0x12340~0x12344, keep 0x12345~0x1234F
1064410644

10645-
// vtmp1Reg = mem(valueReg & 0xFFFFFFFFFFFFFFF0)
10645+
// vtmp1Reg = mem(valueReg & 0xFFFFFFFFFFFFFFF0) - due to lvx only loading aligned
1064610646
generateTrg1MemInstruction(cg, TR::InstOpCode::lvx, node, vtmp1Reg, TR::MemoryReference::createWithIndexReg(cg, valueReg, constant0Reg, 16));
1064710647
// vtmp2Reg = tempReg = (valueReg & 0xF) << 3 i.e. the number of bits that are mis-aligned
1064810648
loadConstant(cg, node, 0xF, tempReg);
@@ -10688,7 +10688,7 @@ hashCodeHelper(TR::Node *node, TR::CodeGenerator *cg, TR::DataType elementType,
1068810688
default:
1068910689
TR_ASSERT_FATAL(false, "Unsupported hashCodeHelper elementType");
1069010690
}
10691-
// make it so that tempReg point it to the appropriate byte in the multiplierVectors
10691+
// make it so that tempReg point it to the appropriate word in the multiplierVectors
1069210692
if (isLE) {
1069310693
// for LE, we first index by 4*4=16 bytes for the highest powers, then we index by
1069410694
// the value of tempReg
@@ -10697,6 +10697,7 @@ hashCodeHelper(TR::Node *node, TR::CodeGenerator *cg, TR::DataType elementType,
1069710697
// for BE, we will index all the way to the back of the array, subtract by the value
1069810698
// of tempReg, then subtract by an additional 16 bytes for the 4 padded zeros, and then
1069910699
// index backward by 16 bytes to make sure the value we want is in word[3]
10700+
1070010701
// tempReg = -tempReg - 1, so we should add the one back later
1070110702
generateTrg1Src2Instruction(cg, TR::InstOpCode::nor, node, tempReg, tempReg, tempReg);
1070210703
switch (elementType)
@@ -10934,10 +10935,10 @@ hashCodeHelper(TR::Node *node, TR::CodeGenerator *cg, TR::DataType elementType,
1093410935
// Head of the serialLabel
1093510936
generateLabelInstruction(cg, TR::InstOpCode::label, node, serialLabel);
1093610937

10937-
#define UNROLL_FACTOR 4
10938-
// vendReg = endReg - [(unroll_factor - 1) * elementSize]
10938+
const int unrollFactor = 4;
10939+
// vendReg = endReg - [(unrollFactor - 1) * elementSize]
1093910940
generateTrg1Src1ImmInstruction(cg, TR::InstOpCode::addi, node,
10940-
vendReg, endReg, (UNROLL_FACTOR-1) * -1 * TR::DataType::getSize(elementType));
10941+
vendReg, endReg, (unrollFactor-1) * TR::DataType::getSize(elementType) * -1);
1094110942

1094210943
// --- unrolled loop
1094310944
generateLabelInstruction(cg, TR::InstOpCode::label, node, serialUnrollLabel);
@@ -10947,7 +10948,7 @@ hashCodeHelper(TR::Node *node, TR::CodeGenerator *cg, TR::DataType elementType,
1094710948
// hash = hash + temp
1094810949
generateTrg1Src2Instruction(cg, TR::InstOpCode::cmp8, node, condReg, valueReg, vendReg);
1094910950
generateConditionalBranchInstruction(cg, TR::InstOpCode::bge, node, serialLoopLabel, condReg);
10950-
for (int i = 0; i < UNROLL_FACTOR; i++)
10951+
for (int i = 0; i < unrollFactor; i++)
1095110952
{
1095210953
generateTrg1Src1Imm2Instruction(cg, TR::InstOpCode::rlwinm, node, tempReg, hashReg, 5, 0xFFFFFFFFFFFFFFE0);
1095310954
generateTrg1Src2Instruction(cg, TR::InstOpCode::subf, node, hashReg, hashReg, tempReg);
@@ -10971,7 +10972,7 @@ hashCodeHelper(TR::Node *node, TR::CodeGenerator *cg, TR::DataType elementType,
1097110972
}
1097210973
generateTrg1Src2Instruction(cg, TR::InstOpCode::add, node, hashReg, hashReg, tempReg);
1097310974
}
10974-
generateTrg1Src1ImmInstruction(cg, TR::InstOpCode::addi, node, valueReg, valueReg, TR::DataType::getSize(elementType) * UNROLL_FACTOR);
10975+
generateTrg1Src1ImmInstruction(cg, TR::InstOpCode::addi, node, valueReg, valueReg, TR::DataType::getSize(elementType) * unrollFactor);
1097510976
generateLabelInstruction(cg, TR::InstOpCode::b, node, serialUnrollLabel);
1097610977

1097710978

@@ -11089,7 +11090,8 @@ hashCodeHelper(TR::Node *node, TR::CodeGenerator *cg, TR::DataType elementType,
1108911090
// End of this method
1109011091
TR::RegisterDependencyConditions *dependencies =
1109111092
new (cg->trHeapMemory()) TR::RegisterDependencyConditions(0,
11092-
(TR::Int8 == elementType ? 19 : (TR::Int16 == elementType ? 16 : 14)), // extra vector regs
11093+
(TR::Int8 == elementType ? 18 : (TR::Int16 == elementType ? 15 : 14)) + // accumulators
11094+
(!isSigned && TR::Int32 != elementType), // vunpackMaskReg
1109311095
cg->trMemory());
1109411096

1109511097
dependencies->addPostCondition(valueReg, TR::RealRegister::NoReg);

0 commit comments

Comments
 (0)