diff options
Diffstat (limited to 'erts/emulator/beam/jit')
-rw-r--r-- | erts/emulator/beam/jit/arm/ops.tab | 4 | ||||
-rw-r--r-- | erts/emulator/beam/jit/x86/ops.tab | 5 |
2 files changed, 9 insertions, 0 deletions
diff --git a/erts/emulator/beam/jit/arm/ops.tab b/erts/emulator/beam/jit/arm/ops.tab index cc0bfeccf0..f9a0088824 100644 --- a/erts/emulator/beam/jit/arm/ops.tab +++ b/erts/emulator/beam/jit/arm/ops.tab @@ -951,6 +951,10 @@ bs_skip_utf16 Fail=f Ms=xy u Flags=u => skip_utf16(Fail, Ms, Flags) i_bs_get_utf16 S f t d i_bs_skip_utf16 S f t +bs_get_utf32 Fail=f Ms=xy Live=u Flags=u Dst | equal(Ms, Dst) => + bs_get_integer2 Fail Ms Live i=32 u=1 Flags x | + i_bs_validate_unicode_retract Fail x Ms | + move x Dst bs_get_utf32 Fail=f Ms=xy Live=u Flags=u Dst=d => bs_get_integer2 Fail Ms Live i=32 u=1 Flags Dst | i_bs_validate_unicode_retract Fail Dst Ms diff --git a/erts/emulator/beam/jit/x86/ops.tab b/erts/emulator/beam/jit/x86/ops.tab index 1ce0d6f9c2..c6db026e41 100644 --- a/erts/emulator/beam/jit/x86/ops.tab +++ b/erts/emulator/beam/jit/x86/ops.tab @@ -923,6 +923,11 @@ bs_skip_utf16 Fail=f Ms=xy u Flags=u => skip_utf16(Fail, Ms, Flags) i_bs_get_utf16 S f t d i_bs_skip_utf16 S f t +bs_get_utf32 Fail=f Ms=xy Live=u Flags=u Dst | equal(Ms, Dst) => + bs_get_integer2 Fail Ms Live i=32 u=1 Flags x | + i_bs_validate_unicode_retract Fail x Ms | + move x Dst + bs_get_utf32 Fail=f Ms=xy Live=u Flags=u Dst=d => bs_get_integer2 Fail Ms Live i=32 u=1 Flags Dst | i_bs_validate_unicode_retract Fail Dst Ms |