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:
Andrew Brown
2021-12-12 18:31:42 -08:00
committed by GitHub
parent fab77e0d0f
commit 86611d3bbc
5 changed files with 131 additions and 13 deletions

View File

@@ -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]`.