[PowerPC] Implement XL compat __fnabs and __fnabss builtins.
authorAmy Kwan <amy.kwan1@ibm.com>
Thu, 19 May 2022 14:38:34 +0000 (09:38 -0500)
committerAmy Kwan <amy.kwan1@ibm.com>
Thu, 19 May 2022 16:28:40 +0000 (11:28 -0500)
commitc35ca3a1c78f693b749ad11742350b7fc6c5cd89
tree3f22220ee171f2b4119ed7c0b2f1c3b7d331ed63
parent559b8fc17ef6f5a65ccf9a11fce5f91c0a011b00
[PowerPC] Implement XL compat __fnabs and __fnabss builtins.

This patch implements the following floating point negative absolute value
builtins that required for compatibility with the XL compiler:
```
double __fnabs(double);
float __fnabss(float);
```

These builtins will emit :
- fnabs on PWR6 and below, or if VSX is disabled.
- xsnabsdp on PWR7 and above, if VSX is enabled.

Differential Revision: https://reviews.llvm.org/D125506
clang/include/clang/Basic/BuiltinsPPC.def
clang/lib/Basic/Targets/PPC.cpp
clang/test/CodeGen/PowerPC/builtins-ppc-xlcompat-fnabs.c [new file with mode: 0644]
llvm/include/llvm/IR/IntrinsicsPowerPC.td
llvm/lib/Target/PowerPC/P10InstrResources.td
llvm/lib/Target/PowerPC/P9InstrResources.td
llvm/lib/Target/PowerPC/PPCBack2BackFusion.def
llvm/lib/Target/PowerPC/PPCInstrInfo.td
llvm/lib/Target/PowerPC/PPCInstrVSX.td
llvm/test/CodeGen/PowerPC/builtins-ppc-xlcompat-fnabs.ll [new file with mode: 0644]