2
Может ли команды popcnt
, bsf
, bsr
и lzcnt
быть созданными в родном OCaml на процессорах x86?Имеет ли OCaml функцию popcnt?
Может ли команды popcnt
, bsf
, bsr
и lzcnt
быть созданными в родном OCaml на процессорах x86?Имеет ли OCaml функцию popcnt?
У меня есть источники OCaml 4.01.0, и для этого довольно легко проверить. Если вы ищете эти инструкции в источниках генерации кода, они не отображаются.
$ pwd
/home/jeffsco/oc41/asmcomp/i386
$ ls
arch.ml emit_nt.mlp reload.ml selection.ml
emit.mlp proc.ml scheduling.ml
$ grep -w popcnt *
$ grep -w bsf *
$ grep -w bsr *
$ grep -w lzcnt *
Если я смотрю на то, как movl
я получаю много хитов:
$ grep -w movl *
emit.mlp: ` movl {emit_reg src}, {emit_reg dst}\n`
emit.mlp: | _ -> ` movl $0, {emit_reg i.res.(0)}\n`
. . .
Итак, я сильно подозреваю, ответ нет. Возможно, что-то изменилось для OCaml 4.02, но я сомневаюсь.