summaryrefslogtreecommitdiff
path: root/erts/emulator/beam/jit/x86/ops.tab
diff options
context:
space:
mode:
authorErlang/OTP <otp@erlang.org>2023-04-25 17:08:52 +0200
committerErlang/OTP <otp@erlang.org>2023-04-25 17:08:52 +0200
commitec59a080681865a8a32003ec527b6802e8aefdc5 (patch)
tree3d6fa69af031753c0190f39c9cdab5f14152ad9f /erts/emulator/beam/jit/x86/ops.tab
parente597996dded611ed8b07a29e666599818607fc12 (diff)
parentc62f3fabe2ee9ca610f1fc9605181b06f820c31c (diff)
downloaderlang-ec59a080681865a8a32003ec527b6802e8aefdc5.tar.gz
Merge branch 'john/erts/fix-hd-tl-loader-transformations/GH-7024/OTP-18519' into maint-25
* john/erts/fix-hd-tl-loader-transformations/GH-7024/OTP-18519: jit: Fix hd/1 and tl/1 BIF specialization
Diffstat (limited to 'erts/emulator/beam/jit/x86/ops.tab')
-rw-r--r--erts/emulator/beam/jit/x86/ops.tab14
1 files changed, 5 insertions, 9 deletions
diff --git a/erts/emulator/beam/jit/x86/ops.tab b/erts/emulator/beam/jit/x86/ops.tab
index 1ce0d6f9c2..5481fff2d8 100644
--- a/erts/emulator/beam/jit/x86/ops.tab
+++ b/erts/emulator/beam/jit/x86/ops.tab
@@ -660,18 +660,14 @@ i_perf_counter
bif0 u$bif:erlang:self/0 Dst=d => self Dst
bif0 u$bif:erlang:node/0 Dst=d => node Dst
-bif1 Fail=f Bif=u$bif:erlang:hd/1 Src=n Dst =>
- jump Fail
-bif1 Fail=f Bif=u$bif:erlang:hd/1 Src Dst =>
+bif1 Fail=f Bif=u$bif:erlang:hd/1 Src=xy Dst =>
is_nonempty_list Fail Src | get_hd Src Dst
-bif1 Fail Bif=u$bif:erlang:hd/1 Src Dst =>
- bif_hd Fail Src Dst
+bif1 Fail=p Bif=u$bif:erlang:hd/1 Src Dst =>
+ bif_hd Src Dst
-bif_hd j s d
+bif_hd s d
-bif1 Fail=f Bif=u$bif:erlang:tl/1 Src=n Dst =>
- jump Fail
-bif1 Fail=f Bif=u$bif:erlang:tl/1 Src Dst =>
+bif1 Fail=f Bif=u$bif:erlang:tl/1 Src=xy Dst =>
is_nonempty_list Fail Src | get_tl Src Dst
bif1 Fail Bif=u$bif:erlang:get/1 Src=s Dst=d => get(Src, Dst)