isle: expand enums in ISLE (#3586)
* x64: expand FloatCC enum in ISLE * isle: regenerate manifests * isle: generate all enum fields in `clif.isle` This expands the `gen_isle` function to write all of the immediate `enum`s out explicitly in `clif.isle`. Non-`enum` immediates are still `extern primitive`. * Only compile `enum_values` with `rebuild-isle` feature * Only compile `gen_enum_isle` with `rebuild-isle` feature
This commit is contained in:
@@ -6,10 +6,8 @@
|
||||
|
||||
;;;; Extern type declarations for immediates ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(type AtomicRmwOp (primitive AtomicRmwOp))
|
||||
(type Block (primitive Block))
|
||||
(type Constant (primitive Constant))
|
||||
(type FloatCC (primitive FloatCC))
|
||||
(type FuncRef (primitive FuncRef))
|
||||
(type GlobalValue (primitive GlobalValue))
|
||||
(type Heap (primitive Heap))
|
||||
@@ -17,18 +15,85 @@
|
||||
(type Ieee64 (primitive Ieee64))
|
||||
(type Imm64 (primitive Imm64))
|
||||
(type Immediate (primitive Immediate))
|
||||
(type IntCC (primitive IntCC))
|
||||
(type JumpTable (primitive JumpTable))
|
||||
(type MemFlags (primitive MemFlags))
|
||||
(type Offset32 (primitive Offset32))
|
||||
(type SigRef (primitive SigRef))
|
||||
(type StackSlot (primitive StackSlot))
|
||||
(type Table (primitive Table))
|
||||
(type TrapCode (primitive TrapCode))
|
||||
(type Uimm32 (primitive Uimm32))
|
||||
(type Uimm8 (primitive Uimm8))
|
||||
(type bool (primitive bool))
|
||||
|
||||
;;;; Enumerated Immediate: AtomicRmwOp ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(type AtomicRmwOp extern
|
||||
(enum
|
||||
Add
|
||||
And
|
||||
Nand
|
||||
Or
|
||||
Smax
|
||||
Smin
|
||||
Sub
|
||||
Umax
|
||||
Umin
|
||||
Xchg
|
||||
Xor
|
||||
)
|
||||
)
|
||||
|
||||
;;;; Enumerated Immediate: FloatCC ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(type FloatCC extern
|
||||
(enum
|
||||
Equal
|
||||
GreaterThan
|
||||
GreaterThanOrEqual
|
||||
LessThan
|
||||
LessThanOrEqual
|
||||
NotEqual
|
||||
Ordered
|
||||
OrderedNotEqual
|
||||
Unordered
|
||||
UnorderedOrEqual
|
||||
UnorderedOrGreaterThan
|
||||
UnorderedOrGreaterThanOrEqual
|
||||
UnorderedOrLessThan
|
||||
UnorderedOrLessThanOrEqual
|
||||
)
|
||||
)
|
||||
|
||||
;;;; Enumerated Immediate: IntCC ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(type IntCC extern
|
||||
(enum
|
||||
Equal
|
||||
NotEqual
|
||||
NotOverflow
|
||||
Overflow
|
||||
SignedGreaterThan
|
||||
SignedGreaterThanOrEqual
|
||||
SignedLessThan
|
||||
SignedLessThanOrEqual
|
||||
UnsignedGreaterThan
|
||||
UnsignedGreaterThanOrEqual
|
||||
UnsignedLessThan
|
||||
UnsignedLessThanOrEqual
|
||||
)
|
||||
)
|
||||
|
||||
;;;; Enumerated Immediate: TrapCode ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(type TrapCode extern
|
||||
(enum
|
||||
HeapOutOfBounds
|
||||
IntegerDivisionByZero
|
||||
IntegerOverflow
|
||||
StackOverflow
|
||||
)
|
||||
)
|
||||
|
||||
;;;; Value Arrays ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; ISLE representation of `[Value; 2]`.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
src/clif.isle 9c0563583e5500de00ec5e226edc0547ac3ea789c8d76f1da0401c80ec619320fdc9a6f17fd76bbcac74a5894f85385c1f51c900c2b83bc9906d03d0f29bf5cb
|
||||
src/clif.isle be1359b4b6b153f378517c1dd95cd80f4a6bed0c7b86eaba11c088fd71b7bfe80a3c868ace245b2da0bfbbd6ded262ea9576c8e0eeacbf89d03c34a17a709602
|
||||
src/prelude.isle 9bd1fcb6a3604a24cf2e05e6b7eb04dcb3b9dc8fa9a2f1c8f29c25b6e3bf7f679b3b1b72dff87501497b72bc30fc92fd755b898db7e03f380235fae931b6a74b
|
||||
src/isa/aarch64/inst.isle 6e042ec14166fceae4b7133f681fdf604e20a2997e1d60f797e40acd683ccb34e33376189f6b7ed2f5eb441dc61d592cad2592256dfea51296330752181b9403
|
||||
src/isa/aarch64/lower.isle 64a725771537f69c445f44c728e04bffd8a715d6a4d87a5a2bf2e89714ee290b7497c5ca8b335bdddd775f6734be03318ff9aa67e2e4068949ebae06b0902b3f
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
src/clif.isle 9c0563583e5500de00ec5e226edc0547ac3ea789c8d76f1da0401c80ec619320fdc9a6f17fd76bbcac74a5894f85385c1f51c900c2b83bc9906d03d0f29bf5cb
|
||||
src/clif.isle be1359b4b6b153f378517c1dd95cd80f4a6bed0c7b86eaba11c088fd71b7bfe80a3c868ace245b2da0bfbbd6ded262ea9576c8e0eeacbf89d03c34a17a709602
|
||||
src/prelude.isle 9bd1fcb6a3604a24cf2e05e6b7eb04dcb3b9dc8fa9a2f1c8f29c25b6e3bf7f679b3b1b72dff87501497b72bc30fc92fd755b898db7e03f380235fae931b6a74b
|
||||
src/isa/x64/inst.isle b151120df3c356ac697122a8557becd8857eb725851506e844edeb85d831d461322a96d280ad84f9a23518e1e4efb607aebc0e249004148675e4cc19e89f0655
|
||||
src/isa/x64/lower.isle c9b408df0a089fb4f207838973ac775b0f9b56c86f056867c28e6bae317873d3844f74f713f9acd6fed98d3d11a2f9d19d392fe5049169dad33b1fc703b9b766
|
||||
|
||||
Reference in New Issue
Block a user