-
Notifications
You must be signed in to change notification settings - Fork 396
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
vternary and vselect opcodes #4590
Comments
I agree with all 3 steps proposed. Looking at the evaluator for the current |
Thanks @fjeremic. Unless @gita-omr has objections, @alvee-unb please implement this as part of #4578. |
I am fine with the change. |
Replacing of the ternary OpCodes such as TR::bternary etc. to TR::bselect etc. and the associated items respectively. The changes are made onto the followings: - Components of various data types such as- Int8, Float, Double (iternary, bternary, vternary etc) etc.. - Corresponding evaluators such as- bselectEvaluator, iselectEvaluator etc. and other functions where the IL OpCodes are used. - Corresponding outputs of texts such as- "iselect" etc. and comments (//ternary). - The IL opcode (and its respective evaluator to- vbitselectEvaluator)- vselect has been updated to vbitselect. - The new vselect opcode has been marked- unimplemented in the Z tree evaluator. Closes: GitHub issue eclipse#681 and eclipse#4590 Signed-off-by: Md. Alvee Noor <mnoor@unb.ca>
Replacing of the ternary OpCodes such as TR::bternary etc. to TR::bselect etc. and the associated items respectively. The changes are made onto the followings: - Components of various data types such as- Int8, Float, Double (iternary, bternary, vternary etc) etc.. - Corresponding evaluators such as- bselectEvaluator, iselectEvaluator etc. and other functions where the IL OpCodes are used. - Corresponding outputs of texts such as- "iselect" etc. and comments (//ternary). - The IL opcode (and its respective evaluator to- vbitselectEvaluator)- vselect has been updated to vbitselect. - The new vselect opcode has been marked- unimplemented in the Z tree evaluator. Closes: GitHub issue eclipse#681 and eclipse#4590 Signed-off-by: Md. Alvee Noor <mnoor@unb.ca>
I have done the requested changes along with the changes mentioned in the issue #681 and would appreciate the review. Thank you. |
Replacing of the ternary OpCodes such as TR::bternary etc. to TR::bselect etc. and the associated items respectively. The changes are made onto the followings: - Components of various data types such as- Int8, Float, Double (iternary, bternary, vternary etc) etc.. - Corresponding evaluators such as- bselectEvaluator, iselectEvaluator etc. and other functions where the IL OpCodes are used. - Corresponding outputs of texts such as- "iselect" etc. and comments (//ternary). - The IL opcode (and its respective evaluator to- vbitselectEvaluator)- vselect has been updated to vbitselect. - The new vselect opcode has been marked- unimplemented in the Z tree evaluator. - File names which involved updating the class names. Partially Resolves: GitHub issues eclipse#681 and eclipse#4590 Signed-off-by: Md. Alvee Noor <mnoor@unb.ca>
Replacing of the ternary OpCodes such as TR::bternary etc. to TR::bselect etc. and the associated items respectively. The changes are made onto the followings: - Components of various data types such as- Int8, Float, Double (iternary, bternary, vternary etc) etc.. - Corresponding evaluators such as- bselectEvaluator, iselectEvaluator etc. and other functions where the IL OpCodes are used. - Corresponding outputs of texts such as- "iselect" etc. and comments (//ternary). - The IL opcode (and its respective evaluator to- vbitselectEvaluator)- vselect has been updated to vbitselect. - The new vselect opcode has been marked- unimplemented in the Z tree evaluator. - File names which involved updating the class names. Partially Resolves: GitHub issues eclipse#681 and eclipse#4590 Signed-off-by: Md. Alvee Noor <mnoor@unb.ca>
Replacing of the ternary OpCodes such as TR::bternary etc. to TR::bselect etc. and the associated items respectively. The changes are made onto the followings: - Components of various data types such as- Int8, Float, Double (iternary, bternary, vternary etc) etc.. - Corresponding evaluators such as- bselectEvaluator, iselectEvaluator etc. and other functions where the IL OpCodes are used. - Corresponding outputs of texts such as- "iselect" etc. and comments (//ternary). - The IL opcode (and its respective evaluator to- vbitselectEvaluator)- vselect has been updated to vbitselect. - The new vselect opcode has been marked- unimplemented in the Z tree evaluator. - File names which involved updating of the class names. Partially Resolves: GitHub issues eclipse#681 and eclipse#4590 Signed-off-by: Md. Alvee Noor <mnoor@unb.ca>
Replacing of the ternary OpCodes such as TR::bternary etc. to TR::bselect etc. and the associated items respectively. The changes are made onto the followings: - Components of various data types such as- Int8, Float, Double (iternary, bternary, vternary etc) etc.. - Corresponding evaluators such as- bselectEvaluator, iselectEvaluator etc. and other functions where the IL OpCodes are used. - Corresponding outputs of texts such as- "iselect" etc. and comments (//ternary). - The IL opcode (and its respective evaluator to- vbitselectEvaluator)- vselect has been updated to vbitselect. - The new vselect opcode has been marked- unimplemented in the Z tree evaluator. - File names which involved updating of the class names. Partially Resolves: GitHub issues eclipse#681 and eclipse#4590 Signed-off-by: Md. Alvee Noor <mnoor@unb.ca>
Replacing of the ternary OpCodes such as TR::bternary etc. to TR::bselect etc. and the associated items respectively. The changes are made onto the followings: - Components of various data types such as- Int8, Float, Double (iternary, bternary, vternary etc) etc.. - Corresponding evaluators such as- bselectEvaluator, iselectEvaluator etc. and other functions where the IL OpCodes are used. - Corresponding outputs of texts such as- "iselect" etc. and comments (//ternary). - The IL opcode (and its respective evaluator to- vbitselectEvaluator)- vselect has been updated to vbitselect. - The new vselect opcode has been marked- unimplemented in the Z tree evaluator. - File names which involved updating of the class names. Partially Resolves: GitHub issues eclipse#681 and eclipse#4590 Signed-off-by: Md. Alvee Noor <mnoor@unb.ca>
Replacing of the ternary OpCodes such as TR::bternary etc. to TR::bselect etc. and the associated items respectively. The changes are made onto the followings: - Components of various data types such as- Int8, Float, Double (iternary, bternary, vternary etc) etc.. - Corresponding evaluators such as- bselectEvaluator, iselectEvaluator etc. and other functions where the IL OpCodes are used. - Corresponding outputs of texts such as- "iselect" etc. and comments (//ternary). - The IL opcode (and its respective evaluator to- vbitselectEvaluator)- vselect has been updated to vbitselect. - The new vselect opcode has been marked- unimplemented in the Z tree evaluator. - File names which involved updating of the class names. - There are some duplicated usages of the opcodes (`aternary`) and their respective functions for their dependencies on OpenJ9, they will need to be deleted once the eclipse/openj9 #7797 PR is accepted. Partially Resolves: GitHub issues eclipse#681 and eclipse#4590 Signed-off-by: Md. Alvee Noor <mnoor@unb.ca>
Replacing of the ternary OpCodes such as TR::bternary etc. to TR::bselect etc. and the associated items respectively. The changes are made onto the followings: - Components of various data types such as- Int8, Float, Double (iternary, bternary, vternary etc) etc.. - Corresponding evaluators such as- bselectEvaluator, iselectEvaluator etc. and other functions where the IL OpCodes are used. - Corresponding outputs of texts such as- "iselect" etc. and comments (//ternary). - The IL opcode (and its respective evaluator to- vbitselectEvaluator)- vselect has been updated to vbitselect. - The new vselect opcode has been marked- unimplemented in the Z tree evaluator. - File names which involved updating of the class names. - There are some duplicated usages of the opcodes (`aternary`) and their respective functions for their dependencies on OpenJ9, they will need to be deleted once the eclipse/openj9 #7797 PR is accepted. Partially Resolves: GitHub issues eclipse#681 and eclipse#4590 Signed-off-by: Md. Alvee Noor <mnoor@unb.ca>
Replacing of the ternary OpCodes such as TR::bternary etc. to TR::bselect etc. and the associated items respectively. The changes are made onto the followings: - Components of various data types such as- Int8, Float, Double (iternary, bternary, vternary etc) etc.. - Corresponding evaluators such as- bselectEvaluator, iselectEvaluator etc. and other functions where the IL OpCodes are used. - Corresponding outputs of texts such as- "iselect" etc. and comments (//ternary). - The IL opcode (and its respective evaluator to- vbitselectEvaluator)- vselect has been updated to vbitselect. - The new vselect opcode has been marked- unimplemented in the Z tree evaluator. - File names which involved updating of the class names. - There are some duplicated usages of the opcodes (`aternary`) and their respective functions for their dependencies on OpenJ9, they will need to be deleted once the eclipse/openj9 #7797 PR is accepted. Partially Resolves: GitHub issues eclipse#681 and eclipse#4590 Signed-off-by: Md. Alvee Noor <mnoor@unb.ca>
Replacing of the ternary OpCodes such as TR::bternary etc. to TR::bselect etc. and the associated items respectively. The changes are made onto the followings: - Components of various data types such as- Int8, Float, Double (iternary, bternary, vternary etc) etc.. - Corresponding evaluators such as- bselectEvaluator, iselectEvaluator etc. and other functions where the IL OpCodes are used. - Corresponding outputs of texts such as- "iselect" etc. and comments (//ternary). - The IL opcode (and its respective evaluator to- vbitselectEvaluator)- vselect has been updated to vbitselect. - The new vselect opcode has been marked- unimplemented in the Z tree evaluator. - File names which involved updating of the class names. - There are some duplicated usages of the opcodes (`aternary`) and their respective functions for their dependencies on OpenJ9, they will need to be deleted once the eclipse/openj9 #7797 PR is accepted. Partially Resolves: GitHub issues eclipse#681 and eclipse#4590 Signed-off-by: Md. Alvee Noor <mnoor@unb.ca>
Replacing of the ternary OpCodes such as TR::bternary etc. to TR::bselect etc. and the associated items respectively. The changes are made onto the followings: - Components of various data types such as- Int8, Float, Double (iternary, bternary, vternary etc) etc.. - Corresponding evaluators such as- bselectEvaluator, iselectEvaluator etc. and other functions where the IL OpCodes are used. - Corresponding outputs of texts such as- "iselect" etc. and comments (//ternary). - The IL opcode (and its respective evaluator to- vbitselectEvaluator)- vselect has been updated to vbitselect. - The new vselect opcode has been marked- unimplemented in the Z tree evaluator. - File names which involved updating of the class names. - There are some duplicated usages of the opcodes (`aternary`) and their respective functions for their dependencies on OpenJ9, they will need to be deleted once the eclipse/openj9 #7797 PR is accepted. Partially Resolves: GitHub issues eclipse#681 and eclipse#4590 Signed-off-by: Md. Alvee Noor <mnoor@unb.ca>
Replaced the ternary OpCodes such as TR::aternary etc. to TR::aselect etc. respectively. Related OMR PR: eclipse/omr#4578 Partially Resolves: Issue eclipse/omr#681 and eclipse/omr#4590 Signed-off-by: Md. Alvee Noor <mnoor@unb.ca>
Replacing of the ternary OpCodes such as TR::bternary etc. to TR::bselect etc. and the associated items respectively. The changes are made onto the followings: - Components of various data types such as- Int8, Float, Double (iternary, bternary, vternary etc) etc.. - Corresponding evaluators such as- bselectEvaluator, iselectEvaluator etc. and other functions where the IL OpCodes are used. - Corresponding outputs of texts such as- "iselect" etc. and comments (//ternary). - The IL opcode (and its respective evaluator to- vbitselectEvaluator)- vselect has been updated to vbitselect. - The new vselect opcode has been marked- unimplemented in the Z tree evaluator. - File names which involved updating of the class names. - There are some duplicated usages of the opcodes (`aternary`) and their respective functions for their dependencies on OpenJ9, they will need to be deleted once the eclipse/openj9 #7797 PR is accepted. Partially Resolves: GitHub issues eclipse#681 and eclipse#4590 Signed-off-by: Md. Alvee Noor <mnoor@unb.ca>
Done. Closing. |
In reviewing #4578 it was discovered that there is a
vselect
opcode already and hence renamingvternary
to it obviously won't work. This leads to the question of what the semantics of both of those opcodes are expected to be.My understanding from grokking the code is that
vternary
"selects" one whole vector register over another based on the result of a conditional.vselect
maps to a "vector select" instruction implemented on Power and Z that does a bitwise selection from one operand or another under the guidance of a bit mask.For
vternary
, only Z provides an implementation in itsternaryEvaluator
[1]. However, I'm not convinced it is doing the correct (or expected) thing for vector registers as I can see paths through there that generate instructions that I'm not sure if they apply to vector registers (e.g.,SELR
).Here is what I propose:
Rename the current IL opcode
vselect
tovbitselect
to have it more closely match the expected semantics on P and Z. This opcode isn't generated in OMR, nor is it generated in any downstream projects that I know of, so this should have zero impact. I'm tempted to suggest just deleting it, but opcode cleanup is a bigger cleanup that I don't think should be done one opcode at a time.Rename
vternary
tovselect
as part of Refactoring of TR::ternary opcodes to TR::select #4578. There are no generators of this opcode in OMR or known downstream projects. This is mainly to maintain symmetry with the otherselect
family opcodes.Mark the new
vselect
opcode unimplemented in the Z tree evaluator table, unless I have confirmation that the currentternaryEvaluator
does what is expected for vector registers.Opinions @fjeremic @gita-omr ?
[1]
omr/compiler/z/codegen/ControlFlowEvaluator.cpp
Line 2985 in f0489cc
The text was updated successfully, but these errors were encountered: