abrown opened PR #10720 from abrown:asm-logical-sse to bytecodealliance:main:
More details in each commit message.
abrown requested fitzgen for a review on PR #10720.
abrown requested wasmtime-compiler-reviewers for a review on PR #10720.
alexcrichton submitted PR review.
alexcrichton created PR review comment:
Drive-by question: here it says the encoding is:
NP 0F 54 /r ANDPS xmm1, xmm2/m128, how does the "NP" map to this?
alexcrichton created PR review comment:
Also drive-by-question, should
_64b | compatbe removed? I feel like that has been copy/pasted around but is mostly only relevant for gpr instructions, 64-bit ones?
abrown submitted PR review.
abrown created PR review comment:
Drive-by question: here it says the encoding is:
NP 0F 54 /r ANDPS xmm1, xmm2/m128, how does the "NP" map to this?I think it boils down to "no prefix":
NP — Indicates the use of 66/F2/F3 prefixes (beyond those already part of the instructions opcode) are not
allowed with the instruction. Such use will either cause an invalid-opcode exception (#UD) or result in the
encoding for a different instruction.should _64b | compat be removed?
I was just thinking about that today: for most instructions we want to have a shorter thing that means "both". Maybe
base?
github-actions[bot] commented on PR #10720:
Subscribe to Label Action
cc @saulecabrera
<details>
This issue or pull request has been labeled: "cranelift", "cranelift:area:x64", "winch"Thus the following users have been cc'd because of the following labels:
- saulecabrera: winch
To subscribe or unsubscribe from this label, edit the <code>.github/subscribe-to-label.json</code> configuration file.
Learn more.
</details>
alexcrichton submitted PR review.
alexcrichton created PR review comment:
Ah ok makes sense about NP.
For features the normal
andinstruction has columns for 64-bit and compat, so it makes sense to me to translate that to_64b | compat, I don't think it's weird to have to specify both vs having a combined option. Forandnpsthough it's easy to translate the "CPUID Feature Flag" column but how does the "64/32 bit Mode Support" column translate to this? Does "V/V" mean_64b | compat? Should it not require_64borcompatfeatures?
abrown created PR review comment:
how does the "64/32 bit Mode Support" column translate to this? Does "V/V" mean _64b | compat?
For older instructions they split this out into two separate columns, "64-bit Mode" and "Compat/Leg Mode," but then they were coalesced into a single column with the space-efficient "V/V" instead of "Valid | Valid." So my reading is that
andpsis valid in both 64-bit and 32-bit (compatibility) modes, hence_64b | compat.So think at some level we need to boil down to essentially
_64b | compatbut we could have an alias for that since it is quite, quite common. I'm going to merge this as-is and we can keep discussing elsewhere.
abrown submitted PR review.
abrown merged PR #10720.
alexcrichton submitted PR review.
alexcrichton created PR review comment:
Ah makes sense! Ok another question (if you'll continue to indulge me): are there instructions valid in 64-bit mode and not valid in 32-bit mode? If not should we perhaps remove the
compatfeature since it's always implicit?
Last updated: Dec 06 2025 at 06:05 UTC