-
Notifications
You must be signed in to change notification settings - Fork 397
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
Develop guidelines for adding/using IL opcodes and NonHelper symbols in the OMR compiler #3051
Comments
@NigelYiboYu points out that using IL opocdes (
|
@fjeremic responded with:
|
@0dvictor noted that:
|
@fjeremic responded:
|
@fjeremic suggests:
|
@0dvictor asked:
|
@ymanton commented:
|
@ymanton also commented:
|
Similarly to LLVM I'm in favor of adopting the notion that OMR IL should be supported on all architectures OMR targets and intrinsic (nonhelper) symbols may be implemented only on certain architectures which can for example be reduced from some language library call. I'm more on the conservative side here as I'm trying to avoid OMR IL bloat. To me, if an OMR IL exists I should be able to use it on all targets OMR supports. The same cannot be said for intrinsic functions as they can be exotic. Not only does this simplify the optimizer and the things that it should care about but it makes porting OMR to a new architecture much easier. i.e. take a look at AArch64 and how long it is taking to implement the evaluators for all the IL we "support". Edit: For example I don't think queries such as this should exist: IL should be such a primitive operation that it must be supported on all OMR targets. One should not have to query whether one can use a particular IL. This is what intrinsics should be for. |
That might be a little too conservative. What happens if you add a new platform that doesn't support support some existing opcodes? Do you change them to intrinsics for everybody? I think "has a reasonable chance of being a HW instruction" is probably an easier criteria to maintain and less likely to back you into a corner later. |
I'd like to move this discussion to today's architecture meeting: @0dvictor @ymanton @fjeremic @andrewcraik @gita-omr @Leonardo2718 @vijaysun-omr |
Issues #3049 and #2997 have raised the following question: how do we decide whether to use IL opcodes or NonHelper (Intrinsic; see #3050) symbols to represent certain functionality/semantics in the OMR compiler?
I will attempt to summarize the discussion in the comments (my sincerest apologies if this is incomplete or somehow changes the intended meaning of the original author)
@vijaysun-omr @mstoodle @charliegracie @andrewcraik @jdmpapin @ymanton @0xdaryl @mpirvu @gita-omr @xliang6
The text was updated successfully, but these errors were encountered: