Skip to content

Commit

Permalink
Support Int64 Length Node within setmemoryEvaluator
Browse files Browse the repository at this point in the history
setMemoryEvaluator generates a sequence of instructions that initializes
a segment of memory of a specified length with a specified value. This
commit enables Int64 Length Node support, while maintaining support for
Int32.

Signed-off-by: AlenBadel <Alen.Badel@ibm.com>
  • Loading branch information
AlenBadel authored and AlenBadel committed Oct 1, 2020
1 parent 64617ba commit 791eac8
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions compiler/p/codegen/OMRTreeEvaluator.cpp
Expand Up @@ -4211,10 +4211,10 @@ TR::Register *OMR::Power::TreeEvaluator::setmemoryEvaluator(TR::Node *node, TR::
generateTrg1Src1Imm2Instruction(cg, TR::InstOpCode::rlwimi, node, valueReg, valueReg, 16, 0xffff0000);
generateTrg1Src1Imm2Instruction(cg, TR::InstOpCode::rldimi, node, valueReg, valueReg, 32, 0xffffffff00000000);

generateTrg1Src1ImmInstruction(cg,TR::InstOpCode::Op_cmpli, node, cndReg, lengthReg, 32);
generateTrg1Src1ImmInstruction(cg, lengthNode->getType().isInt32() ? TR::InstOpCode::cmpli4 : TR::InstOpCode::cmpli8, node, cndReg, lengthReg, 32);
generateConditionalBranchInstruction(cg, TR::InstOpCode::blt, node, residualLabel, cndReg);

generateTrg1Src1ImmInstruction(cg, TR::InstOpCode::srawi, node, tempReg, lengthReg, 5);
generateTrg1Src1ImmInstruction(cg, lengthNode->getType().isInt32() ? TR::InstOpCode::srawi : TR::InstOpCode::sradi, node, tempReg, lengthReg, 5);
generateSrc1Instruction(cg, TR::InstOpCode::mtctr, node, tempReg);
generateLabelInstruction(cg, TR::InstOpCode::label, node, loopStartLabel);
generateMemSrc1Instruction(cg, TR::InstOpCode::std, node, TR::MemoryReference::createWithDisplacement(cg, dstAddrReg, 0, 8), valueReg);
Expand Down

0 comments on commit 791eac8

Please sign in to comment.