Available on crate feature
encode
only.Expand description
Encoding support for pulley bytecode.
Functionsยง
low32(dst) = bitcast low32(src) as f32
dst = bitcast src as f64
low32(dst) = bitcast low32(src) as i32
dst = bitcast src as i64
- Conditionally transfer control to the given PC offset if
cond
contains a non-zero value. - Conditionally transfer control to the given PC offset if
cond
contains a zero value. - Branch if
a == b
. - Branch if
a == b
. - Branch if
a !=
b. - Branch if
a !=
b. - Branch if signed
a < b
. - Branch if signed
a < b
. - Branch if signed
a <= b
. - Branch if signed
a <= b
. - Branch if unsigned
a < b
. - Branch if unsigned
a < b
. - Branch if unsigned
a <= b
. - Branch if unsigned
a <= b
. - Transfer control to the PC at the given offset and set the
lr
register to the PC just after this instruction. - Move between
f
registers. - Copy the special
sp
stack pointer register into anx
register. - Unconditionally transfer control to the PC at the given offset.
dst = load64(ptr)
dst = sign_extend(load32(ptr))
dst = sign_extend(load32(ptr + offset8))
dst = sign_extend(load32(ptr + offset64))
dst = zero_extend(load32(ptr))
dst = zero_extend(load32(ptr + offset8))
dst = zero_extend(load32(ptr + offset64))
dst = load64(ptr + offset8)
dst = load64(ptr + offset64)
- Do nothing.
sp = fp; pop fp; pop lr
push lr; push fp; fp = sp
- Transfer control the address in the
lr
register. *ptr = low32(src)
*ptr = src
*(ptr + sign_extend(offset8)) = low32(src)
*(ptr + sign_extend(offset64)) = low32(src)
*(ptr + sign_extend(offset8)) = src
*(ptr + sign_extend(offset64)) = src
- Raise a trap.
- Move between
v
registers. - 32-bit wrapping addition:
low32(dst) = low32(src1) + low32(src2)
. - 64-bit wrapping addition:
dst = src1 + src2
. - Set
dst = sign_extend(imm8)
. - Set
dst = sign_extend(imm16)
. - Set
dst = sign_extend(imm32)
. - Set
dst = imm64
. - 32-bit equality.
- 64-bit equality.
- Move between
x
registers. - 32-bit inequality.
- 64-bit inequality.
*dst = *sp; sp -= 4
*dst = *sp; sp -= 8
for dst in dsts.rev() { xpop32 dst }
for dst in dsts.rev() { xpop64 dst }
*sp = low32(src); sp += 4
*sp = src; sp += 8
for src in srcs { xpush32 src }
for src in srcs { xpush64 src }
- 32-bit signed less-than.
- 64-bit signed less-than.
- 32-bit signed less-than-equal.
- 64-bit signed less-than-equal.
- 32-bit unsigned less-than.
- 64-bit unsigned less-than.
- 32-bit unsigned less-than-equal.
- 64-bit unsigned less-than-equal.