Remove IFLAGS/FFLAGS types (#5406)
All instructions using the CPU flags types (IFLAGS/FFLAGS) were already removed. This patch completes the cleanup by removing all remaining instructions that define values of CPU flags types, as well as the types themselves. Specifically, the following features are removed: - The IFLAGS and FFLAGS types and the SpecialType category. - Special handling of IFLAGS and FFLAGS in machinst/isle.rs and machinst/lower.rs. - The ifcmp, ifcmp_imm, ffcmp, iadd_ifcin, iadd_ifcout, iadd_ifcarry, isub_ifbin, isub_ifbout, and isub_ifborrow instructions. - The writes_cpu_flags instruction property. - The flags verifier pass. - Flags handling in the interpreter. All of these features are currently unused; no functional change intended by this patch. This addresses https://github.com/bytecodealliance/wasmtime/issues/3249.
This commit is contained in:
@@ -179,24 +179,6 @@ instructions are encoded as follows:
|
||||
- f32
|
||||
- f64
|
||||
|
||||
### CPU flags types
|
||||
|
||||
Some target ISAs use CPU flags to represent the result of a comparison. These
|
||||
CPU flags are represented as two value types depending on the type of values
|
||||
compared.
|
||||
|
||||
Since some ISAs don't have CPU flags, these value types should not be used
|
||||
until the legalization phase of compilation where the code is adapted to fit
|
||||
the target ISA. Use instructions like `icmp` instead.
|
||||
|
||||
The CPU flags types are also restricted such that two flags values can not be
|
||||
live at the same time. After legalization, some instruction encodings will
|
||||
clobber the flags, and flags values are not allowed to be live across such
|
||||
instructions either. The verifier enforces these rules.
|
||||
|
||||
- iflags
|
||||
- fflags
|
||||
|
||||
### SIMD vector types
|
||||
|
||||
A SIMD vector type represents a vector of values from one of the scalar types
|
||||
|
||||
Reference in New Issue
Block a user