Windows has always been LLP64, not LP64, so the macros were incorrect.
Check for _WIN64, since AArch64 sets that too.
The tests have to be fixed up in two main ways:
- Use 'ULL' suffixes to avoid sign extension when passing hex literals with the sign bit set to signed 128 arguments. Clang -fms-compatibility makes such hex literals signed, not unsigned.
- Disable various tests for 80-bit long double interoperation with i128 values.
I went to test this with a variety of compilers before submitting, but basically, this part here is problematic in MSVC builds. In those builds, the builtins are built with the host compiler (cl.exe), but the tests are built with clang. So, the tests think i128 math is supported, but they all produce undefined symbol errors because the helper functions have been compiled out.
This needs more thought.