Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于LoongArch架构中宏定义使用的原则 #50

Open
wangchenguang123 opened this issue Mar 25, 2024 · 4 comments
Open

关于LoongArch架构中宏定义使用的原则 #50

wangchenguang123 opened this issue Mar 25, 2024 · 4 comments

Comments

@wangchenguang123
Copy link

想请问以下各位老师,LoongArch的预定义宏的使用原则:
(1)什么时候使用__loongarch__/__loongarch64/__loongarch_lp64
期待各位老师的解答,辛苦了。

@xen0n xen0n transferred this issue from loongson-community/areweloongyet Mar 25, 2024
@xen0n
Copy link
Member

xen0n commented Mar 25, 2024

  • __loongarch__: 当前在为 LoongArch 编译
  • __loongarch_lp64: 当前使用 LP64 数据模型,这意味着:
    • GPR 至少有 64 位宽,使用其低 64 位(或完整 64 位)传参
    • ABI 是 LP64S/LP64F/LP64D 等 LP64 数据模型的 ABI
  • __loongarch64 不应再被使用,它是从 __mips64 直接变为 __loongarch64 的旧世界产物。本义是“我在为支持 64 位的处理器编译”,但请注意:处理器支持 64 位操作,并不意味着你就可以利用这些 64 位操作。请按需使用其他符号。

更多详见龙芯官方文档 https://github.com/loongson/la-softdev-convention

@wangchenguang123
Copy link
Author

  • __loongarch__: 当前在为 LoongArch 编译

    • __loongarch_lp64: 当前使用 LP64 数据模型,这意味着:

      • GPR 至少有 64 位宽,使用其低 64 位(或完整 64 位)传参
      • ABI 是 LP64S/LP64F/LP64D 等 LP64 数据模型的 ABI
    • __loongarch64 不应再被使用,它是从 __mips64 直接变为 __loongarch64 的旧世界产物。本义是“我在为支持 64 位的处理器编译”,但请注意:处理器支持 64 位操作,并不意味着你就可以利用这些 64 位操作。请按需使用其他符号。

更多详见龙芯官方文档 https://github.com/loongson/la-softdev-convention

感谢老师的解答,我在认真学习一下

@xry111
Copy link
Member

xry111 commented Mar 25, 2024

如果确实需要判断是否处理器支持 64 位操作,建议用 __loongarch_grlen >= 64,这样读的人一看就知道是在判断处理器而不是 ABI。

@xen0n
Copy link
Member

xen0n commented Apr 17, 2024

Triage: 此问题是常见问题,值得一篇专门的 AWLY 学习资料。待写

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants