在 SICStus Prolog 中使用 CLMUL
Utilizing CLMUL in SICStus Prolog
如何获得 SICStus Prolog JIT to use any of the following ISA?
Intel BMI:
POPCNT
、LZCNT
、TZCNT
、PDEP
、PEXT
Intel CLMUL: PCLMULQDQ
ARM AArch64: RBIT
我需要它们来充电 clpz。现在,我得到了:
非ISO运算函数msb/1
.
作为开始很好,但我想要 更多。 请帮忙!
不幸的是,对于这种情况,用户无法扩展 JIT。
我一直在考虑从 Prolog 访问人口计数指令(用于一些不相关的用途)。添加这个和其他类似指令的方法是:
- 向
is/2
添加新的算术指令。这需要 所有 我们的代码支持,而不仅仅是 JIT 编译代码,所以解释器、WAM 仿真器、各种内部字节码处理器、我们 [=] 中的所有静态分析器11=],等等等等
- 添加 JIT 编译,仅回调到运行时系统中相应的 C 例程。
- 如果可以证明它可以充分提高性能,请让 JIT 编译器为具有它们的目标发出特殊用途的 CPU 指令。
(1) 需要足够的用户需求(当然也需要明确的融资)。 (3) 需要有说服力的基准。目前这两个都不可用,但当然可以改变。
如何获得 SICStus Prolog JIT to use any of the following ISA?
Intel BMI:
POPCNT
、LZCNT
、TZCNT
、PDEP
、PEXT
Intel CLMUL:
PCLMULQDQ
ARM AArch64:
RBIT
我需要它们来充电 clpz。现在,我得到了:
非ISO运算函数
msb/1
.
作为开始很好,但我想要 更多。 请帮忙!
不幸的是,对于这种情况,用户无法扩展 JIT。
我一直在考虑从 Prolog 访问人口计数指令(用于一些不相关的用途)。添加这个和其他类似指令的方法是:
- 向
is/2
添加新的算术指令。这需要 所有 我们的代码支持,而不仅仅是 JIT 编译代码,所以解释器、WAM 仿真器、各种内部字节码处理器、我们 [=] 中的所有静态分析器11=],等等等等 - 添加 JIT 编译,仅回调到运行时系统中相应的 C 例程。
- 如果可以证明它可以充分提高性能,请让 JIT 编译器为具有它们的目标发出特殊用途的 CPU 指令。
(1) 需要足够的用户需求(当然也需要明确的融资)。 (3) 需要有说服力的基准。目前这两个都不可用,但当然可以改变。