-
Notifications
You must be signed in to change notification settings - Fork 27
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
Make fence.tso a separate inst, fix fence bug #460
base: main
Are you sure you want to change the base?
Conversation
kind: instruction | ||
name: fence | ||
long_name: Memory ordering fence | ||
description: | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we want to use >
here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think so; the line spacing has syntactic meaning for asciidoc, so we don't want to fold anything.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My understanding of the folding rules is that the text below this would be folded to (hopefully this renders well enough here):
Orders memory operations.
fence.tso
orders all load operations in its predecessor set before all memory operations in its successor set, and all store operations in its predecessor set before all store operations in its successor set. This leaves non-AMO store operations in the 'fence.tso's predecessor set unordered with non-AMO loads in its successor set.The
rs1
andrd
fields are unused and ignored.In modes other than M-mode,
fence.tso
is further affected bymenvcfg.FIOM
,senvcfg.FIOM
<% if ext?(:H) %>, and/orhenvcfg.FIOM
<% end %>.
Is that not preferred?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it actually renders as:
Orders memory operations.
fence.tso
orders all load operations in its predecessor set before all memory operations in its successor set, and all store operations in its predecessor set before all store operations in its successor set. This leaves non-AMO store operations in the 'fence.tso's predecessor set unordered with non-AMO loads in its successor set.
Thers1
andrd
fields are unused and ignored.
In modes other than M-mode,fence.tso
is further affected bymenvcfg.FIOM
,senvcfg.FIOM
<% if ext?(:H) %>, and/orhenvcfg.FIOM
<% end %>.
Which in asciidoc will make all the text show up in a single paragraph.
fixes #428