Skip to content

Floating-point register number is incorrect (or at least confusing) on X86_64

Currently, on X86_64 we set REG_XMM1 to be the xmm1 register, when it should be the xmm0 register.

This is because numbering of xmm/ymm/zmm registers in Cmm starts at 1 but the underlying machine register are numbered starting from 0.

This infelicity means that GHC doesn't follow the calling convention that it says it does, and causes problem e.g. when using GhcForeignImportPrim as arguments are not in the expected registers.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information