This patch remove the override in AIX target,
so the int128 is enabled in 64 bit mode or with ForceEnableInt128.
Details
- Reviewers
hubert.reinterpretcast nemanjai shchenz lkail - Group Reviewers
Restricted Project - Commits
- rG42eea2b69bb9: [AIX] Enable int128 in 64 bit mode
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Making a change to whether a platform has __int128 affects the ABI of libc++'s std::chrono::file_clock. We should make sure the mitigation patch is posted and accepted.
llvm/test/CodeGen/PowerPC/int128_ldst.ll | ||
---|---|---|
31 | Confirming that this case matches GCC on AIX: ld 4,8(3) ld 3,0(3) blr |
Type alignment (16), choice of GPRs for argument passing (first available including r10), va_arg invocations, order of components (big endian), and calls to double/float conversions all check out. It may be reasonable to locate existing tests for these and make sure they also test 64-bit AIX.
llvm/test/CodeGen/PowerPC/int128_ldst.ll | ||
---|---|---|
31 | $ gcc -maix64 -S -O p128.c -o t.s; grep blr -B3 t.s ld 4,8(3) ld 3,0(3) blr |
Making a change to whether a platform has __int128 affects the ABI of libc++'s std::chrono::file_clock. We should make sure the mitigation patch is posted and accepted.
Good point, but the std::chrono::file_clock interface hasn't shipped yet on the platform libc++, since it's currently still at a bit of a backlevel, so I don't think that should be blocking to enabling the type.
I am concerned that __int128 is an over-aligned type on AIX. The required alignment of the type is greater than the greatest fundamental alignment supported by default on the platform.
I would like to see aix triple added to more existing tests involving ABI in llvm/test/CodeGen/PowerPC(such as ppc64-i128-abi.ll), since AIX has independent calling convention lowering and is different from linux.
ppc64-i128-abi.ll CHECK-P9 part depends on D94282: [PowerPC] Support ppc-asm-full-reg-names for AIX.
This LGTM as the start point to support int128 on AIX. We might need more patches involving libraries in the LLVM monorepo, we can do that progressively.
Agreed (although I find it slightly odd that the testing doesn't check the edge case where the argument value is split between r10 and the stack).
Confirming that this case matches GCC on AIX: