Skip to content
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

Is the set of proposed instructions sufficient? #11

Closed
binji opened this issue May 23, 2017 · 4 comments
Closed

Is the set of proposed instructions sufficient? #11

binji opened this issue May 23, 2017 · 4 comments
Labels

Comments

@binji
Copy link
Member

binji commented May 23, 2017

The current proposal doesn't have much more than what is currently in ES. Do we want other instructions?

@binji binji added the question label May 23, 2017
@lars-t-hansen
Copy link

One operation that never made it into ES was an instruction to relax in a spinloop (ie, the PAUSE instruction in x86, IIRC). It was in the very earliest drafts of the spec but I think that, more than anything, it was considered very low-level for ES and something that would create controversy. (I experimented with a related idea, a micro-wait primitive with a back-off scheme, and I called that "pause" too, but it's not what I'm talking about here.)

I know that PAUSE is important for performance on x86. I don't know if ARM has anything similar in eg its event instructions (WFE). I don't know if it's a good idea to push this through for the MVP since we won't be able to remove it again if it turns out to be the wrong thing.

@jfbastien
Copy link
Member

Worth forking as a separate question, and polling (ha!) at the upcoming meeting.

@binji
Copy link
Member Author

binji commented Jun 6, 2017

There wasn't a poll about this in the CG meeting, but there seemed to be interest in exploring adding a yield operation (as opposed to pause). This would be defined in the spec as being a no-op, but would be a hint to implementations to yield execution to another thread.

@binji
Copy link
Member Author

binji commented Jun 6, 2017

As for other operations, we discussed other atomic primitives, including:

  • neg
  • min/max
  • signed/unsigned (this is in the notes, but I can't recall what this means...)
  • nand

We decided (without polling) that these other operations could be handled later if there is interest.

@binji binji closed this as completed Jun 6, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants