 
 
 bs_init_bits Fail Sz=o Words Regs Flags Dst => system_limit Fail
+bs_init_bits Fail Sz Words Regs Flags Dst=y => \
+   bs_init_bits Fail Sz Words Regs Flags x | move x Dst
 
 bs_init_bits Fail Sz=u Words=u==0 Regs Flags Dst => i_bs_init_bits Sz Regs Dst
 bs_init_bits Fail Sz=u Words Regs Flags Dst =>  i_bs_init_bits_heap Sz Words Regs Dst

bs_get_integer2 Fail=f Ms=x Live=u Sz=sq Unit=u Flags=u Dst=d => \
			gen_get_integer2(Fail, Ms, Live, Sz, Unit, Flags, Dst)

i_bs_get_integer_small_imm x W f? t x
i_bs_get_integer_imm x W t f? t x
i_bs_get_integer f? t t x s x
i_bs_get_integer_8 x f? x
i_bs_get_integer_16 x f? x

%if ARCH_64
i_bs_get_integer_32 x f? x
%endif

# Fetching binaries from binaries.
bs_get_binary2 Fail=f Ms=x Live=u Sz=sq Unit=u Flags=u Dst=d => \
			gen_get_binary2(Fail, Ms, Live, Sz, Unit, Flags, Dst)

i_bs_get_binary_imm2 f? x t W t x
i_bs_get_binary2 f x t? s t x
i_bs_get_binary_all2 f? x t t x
i_bs_get_binary_all_reuse x f? t

# Fetching float from binaries.

# Utf8/utf16/utf32 support. (R12B-5)
#
bs_get_utf8 Fail=f Ms=x u u Dst=d => i_bs_get_utf8 Ms Fail Dst
i_bs_get_utf8 x f? xy

bs_skip_utf8 Fail=f Ms=x u u => i_bs_get_utf8 Ms Fail x

bs_get_utf16 Fail=f Ms=x u Flags=u Dst=d => i_bs_get_utf16 Ms Fail Flags Dst
bs_skip_utf16 Fail=f Ms=x u Flags=u => i_bs_get_utf16 Ms Fail Flags x

i_bs_get_utf16 x f? t xy

bs_get_utf32 Fail=f Ms=x Live=u Flags=u Dst=d => \
	bs_get_integer2 Fail Ms Live i=32 u=1 Flags Dst | \
