move-stackless-bytecode 0.3.2

Move stackless bytecode
Documentation
============ initial translation from Move ================

[variant baseline]
fun TestSpecBlock::looping($t0|x: u64): u64 {
     var $t1: u64
     var $t2: u64
     var $t3: bool
     var $t4: u64
     var $t5: u64
     var $t6: u64
     var $t7: u64
  0: assume Le($t0, 10)
  1: goto 2
  2: label L3
  3: $t1 := copy($t0)
  4: $t2 := 10
  5: $t3 := <($t1, $t2)
  6: if ($t3) goto 7 else goto 14
  7: label L0
  8: assume Lt($t0, 10)
  9: $t4 := move($t0)
 10: $t5 := 1
 11: $t6 := +($t4, $t5)
 12: $t0 := $t6
 13: goto 2
 14: label L2
 15: assert Eq<u64>($t0, 10)
 16: $t7 := move($t0)
 17: return $t7
}


[variant baseline]
fun TestSpecBlock::simple1($t0|x: u64, $t1|y: u64) {
     var $t2: u64
     var $t3: u64
     var $t4: bool
     var $t5: bool
     var $t6: u64
  0: $t2 := copy($t0)
  1: $t3 := copy($t1)
  2: $t4 := >($t2, $t3)
  3: $t5 := !($t4)
  4: if ($t5) goto 5 else goto 8
  5: label L0
  6: $t6 := 1
  7: abort($t6)
  8: label L2
  9: assert Gt($t0, $t1)
 10: return ()
}


[variant baseline]
fun TestSpecBlock::simple2($t0|x: u64) {
     var $t1|y: u64
     var $t2: u64
     var $t3: u64
     var $t4: u64
  0: $t2 := copy($t0)
  1: $t3 := 1
  2: $t4 := +($t2, $t3)
  3: $t1 := $t4
  4: assert Eq<u64>($t0, Sub($t1, 1))
  5: return ()
}


[variant baseline]
fun TestSpecBlock::simple3($t0|x: u64, $t1|y: u64) {
  0: assume Gt($t0, $t1)
  1: assert Ge($t0, $t1)
  2: return ()
}


[variant baseline]
fun TestSpecBlock::simple4($t0|x: u64, $t1|y: u64) {
     var $t2|z: u64
     var $t3: u64
     var $t4: u64
     var $t5: u64
  0: $t3 := copy($t0)
  1: $t4 := copy($t1)
  2: $t5 := +($t3, $t4)
  3: $t2 := $t5
  4: assume Gt($t0, $t1)
  5: assert Gt($t2, Mul(2, $t1))
  6: return ()
}