diff options
Diffstat (limited to 'patio-to-cranelift/src/patio/instructions.rs')
| -rw-r--r-- | patio-to-cranelift/src/patio/instructions.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/patio-to-cranelift/src/patio/instructions.rs b/patio-to-cranelift/src/patio/instructions.rs index 908a0779..fa8d098b 100644 --- a/patio-to-cranelift/src/patio/instructions.rs +++ b/patio-to-cranelift/src/patio/instructions.rs @@ -22,6 +22,7 @@ pub(crate) enum PatioInstruction { Resume(PatioResume), Return(PatioReturn), ReturnVoid(PatioReturnVoid), + Switch(PatioSwitch), VarLoad(PatioVarLoad), VarStore(PatioVarStore), } @@ -123,6 +124,18 @@ pub(crate) struct PatioReturn { pub(crate) struct PatioReturnVoid; +pub(crate) struct PatioSwitch { + pub(crate) destinations: Vec<PatioLocalRef>, + pub(crate) value: PatioOperand, + pub(crate) cases: Vec<PatioSwitchCase>, + pub(crate) default_body: PatioBlock, +} + +pub(crate) struct PatioSwitchCase { + pub(crate) value: u32, + pub(crate) body: PatioBlock, +} + pub(crate) struct PatioVarLoad { pub(crate) destination: PatioLocalRef, pub(crate) var: PatioLocalRef, |
