-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
x64 backend: be explicit about unimplemented opcodes.
As discussed in #3035, most backends have explicit `unimplemented!(...)` match-arms for opcode lowering cases that are not yet implemented; this allows the backend maintainer to easily see what is not yet implemented, and avoiding a catch-all wildcard arm is less error-prone as opcodes are added in the future. However, the x64 backend was the exception: as @akirilov-arm pointed out, it had a wildcard match arm. This fixes the issue by explicitly listing all opcodes the x64 backend does not yet implement. As per our tests, these opcodes are not used or need by Wasm lowering; but, it is good to know that they exist, so that we can eventually either support or remove them. This was a good exercise for me as I wasn't aware of a few of these in particular: e.g., aarch64 supports `bmask` while x64 does not, and there isn't a good reason why x64 shouldn't, especially if others hope to use Cranelift as a SIMD-capable general codegen in the future. The `unimplemented!()` cases are separate from `panic!()` ones: my convention here was to split out those that are logically just *missing* from those that should be *impossible*, mostly due to expected removal by legalization before we reach the lowering step.
- Loading branch information
Showing
1 changed file
with
140 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters