ControlCplusControlV / Scribe

Minimal Yul Transpilation to the Miden VM
GNU General Public License v3.0
51 stars 4 forks source link

Constant Folding #45

Open ControlCplusControlV opened 1 year ago

ControlCplusControlV commented 1 year ago

Constant Folding

Evaluate all expressions which can be evaluated at compile time

    c := add(100, 15)
    a := add(c, 50)
    b := add(b, 10)

Should compiled down to a block which just PUSH's the result of 175 onto the stack.

Test Cases

  1. Input Yul

    {
    let c:u32 := add(100, 15)
    let a:u32 := sub(c, 50)
    let b:u32 := mul(a, 10)
    let d:u32 := div(b, 2)
    }
  2. Assembly Output

    
    use.std::math::u256

begin

Assigning to d

    # u32 literal 425 #
    push.425

end


2. Input Yul
```clike=
{
    let c := add(100, 15)
    let a := sub(c, 50)
    let b := mul(a, 10)
    let d := div(b, 2)
}
  1. Assembly Output
    
    use.std::math::u256

begin

Assigning to d

    # u256 literal: 425 #
    push.425        push.0          push.0          push.0          push.0          push.0          push.0          push.0         

end