Why do ARM chips have an instruction with Javascript in the name (FJCVTZS)?

后端 未结 1 362
独厮守ぢ
独厮守ぢ 2021-01-30 05:43

FJCVTZS is \"Floating-point Javascript Convert to Signed fixed-point, rounding toward Zero\". It is supported in Arm v8.3-A chips and later. Which is odd, because you don\'t e

相关标签:
1条回答
  • 2021-01-30 06:23

    It is because JS uses double precision for the numbers, but if you want to perform operations with bits, the task is nontrivial, so a specific instruction to convert JS double into integer makes the thing easier.

    This ARM link explains it very well: https://community.arm.com/processors/b/blog/posts/armv8-a-architecture-2016-additions

    In order to add more information regarding fuz's comment, the differences between FCVTZS and FJCVTZS (both of them convert floating point to int) are that in case of overflow, FJCVTZS value will be 0x80000000 instead of overflowing. Furthermore, FJCVTZS can generate an exception in order to indicate how the conversion was (i.e. inexact).

    FJCVTZS : http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0801g/hko1477562192868.html

    FCVTZS : http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0802a/FCVTZS_float_int.html

    0 讨论(0)
提交回复
热议问题