summaryrefslogtreecommitdiff
path: root/erts/emulator/beam/jit
diff options
context:
space:
mode:
Diffstat (limited to 'erts/emulator/beam/jit')
-rw-r--r--erts/emulator/beam/jit/arm/ops.tab4
-rw-r--r--erts/emulator/beam/jit/x86/ops.tab5
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