mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
64bac7eb58
GCC documentation for the `wa` constraint states that: ``` wa A VSX register (VSR), vs0…vs63. This is either an FPR (vs0…vs31 are f0…f31) or a VR (vs32…vs63 are v0…v31). ``` This technically means that we could accept floating point parameters. In fact, gcc itself does. The following testcase compiles and runs on all PPC platforms with GCC, whereas clang/llc will assert: ``` #include <stdio.h> double foo ( vector double a ) { double b, c; asm("xvabsdp %x0, %x2 \n" "xxsldwi %x1, %x0, %x0, 2 \n" : "+wa" (b), "=wa" (c) : "wa" (a) ); return b+c; } int main(void) { vector double a = {-3., -4.}; double t = foo( a ); printf("%g\n", t); } ``` This patch allows clang/llc to build and run this testcase. Reviewed By: nemanjai, #powerpc Differential Revision: https://reviews.llvm.org/D103409 |
||
---|---|---|
.. | ||
Analysis | ||
AsmParser | ||
BinaryFormat | ||
Bitcode | ||
Bitstream | ||
CodeGen | ||
DebugInfo | ||
Demangle | ||
DWARFLinker | ||
ExecutionEngine | ||
Extensions | ||
FileCheck | ||
Frontend | ||
Fuzzer | ||
FuzzMutate | ||
InterfaceStub | ||
IR | ||
IRReader | ||
LineEditor | ||
Linker | ||
LTO | ||
MC | ||
MCA | ||
Object | ||
ObjectYAML | ||
Option | ||
Passes | ||
ProfileData | ||
Remarks | ||
Support | ||
TableGen | ||
Target | ||
Testing | ||
TextAPI | ||
ToolDrivers | ||
Transforms | ||
WindowsManifest | ||
XRay | ||
CMakeLists.txt |