Skip to content

WIP: Vnot IL opcode implementation on x86 platform#8258

Draft
JackZhuoyLi wants to merge 1 commit into
eclipse-omr:masterfrom
JackZhuoyLi:add_vnot
Draft

WIP: Vnot IL opcode implementation on x86 platform#8258
JackZhuoyLi wants to merge 1 commit into
eclipse-omr:masterfrom
JackZhuoyLi:add_vnot

Conversation

@JackZhuoyLi

@JackZhuoyLi JackZhuoyLi commented May 21, 2026

Copy link
Copy Markdown

Added the opcode vnot and vmnot tree evaluators in the parent class inside codegen files.
Added vnot helper function and used under unaryVectorArithmeticEvaluator.
Added new VnotTest.cpp unit test for testing proper vnot operations.
Signed-off-by: Zhuoyang Li zhuoyli@ibm.com

@JackZhuoyLi

Copy link
Copy Markdown
Author

@gita-omr @IBMJimmyk here is my pull request

TR::Register *OMR::X86::AMD64::TreeEvaluator::vnotEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
return TR::TreeEvaluator::unImpOpEvaluator(node, cg);
return TR::TreeEvaluator::unaryVectorArithmeticEvaluator(node, cg);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it would be better to remove this method from the amd4 class and use the one from the parent.

Comment thread compiler/x/codegen/UnaryEvaluator.cpp Outdated
Inst_RegReg(movOpcode.getMnemonic(), node, resultReg, sourceReg, cg, movEncoding);
Inst_RegReg(xorOpcode.getMnemonic(), node, resultReg, onesReg, cg, xorEncoding);

if (node->getOpCode().isVectorMasked()) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where does the actual masking happen?

Comment thread compiler/x/codegen/UnaryEvaluator.cpp Outdated
return TR::TreeEvaluator::floatingPointAbsHelper(node, cg);
}

if (opcode.getVectorOperation() == TR::vnot) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where is the code for vmnot?

TR::Register *OMR::X86::I386::TreeEvaluator::vnotEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
return TR::TreeEvaluator::unImpOpEvaluator(node, cg);
return TR::TreeEvaluator::unaryVectorArithmeticEvaluator(node, cg);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similar to amd64, better to not override this method and use the one in the parent.

@JackZhuoyLi JackZhuoyLi force-pushed the add_vnot branch 6 times, most recently from a44d7f5 to 3e99759 Compare June 10, 2026 14:42
@JackZhuoyLi JackZhuoyLi changed the title Update vnot implementation on x platform and Unit Test verification Vnot IL opcode implementation on x86 platform Jun 10, 2026
…t operation across all integer types with masked operation support.

Signed-off-by: Zhuoyang Li <zhuoyli@ibm.com>
@JackZhuoyLi JackZhuoyLi marked this pull request as draft June 18, 2026 17:38
@JackZhuoyLi JackZhuoyLi changed the title Vnot IL opcode implementation on x86 platform WIP: Vnot IL opcode implementation on x86 platform Jun 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants