[PATCH] D72189: [SystemZ] Support -msoft-float
Jonas Paulsson via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 31 12:35:34 PST 2020
jonpa updated this revision to Diff 241792.
jonpa marked 6 inline comments as done.
jonpa added a comment.
> If soft-float, then we have *no* VectorABI!
Oh! I misunderstood your previous comment "with -msoft-float, GCC also falls back to the 16-byte vector alignment, so we must match that for ABI compatibility" to mean that (source code) vectors should be aligned to 16 bytes in memory. I also think I saw GCC outputing an NLL to align a store in such a case, but I can't reproduce so I guess I was confused.
> What's the difference in assembler? Could this be because you've implemented the VectorABI check the wrong way around? (If soft-float, then we have *no* VectorABI!)
Also with the latest updates of the patch, I see for this function:
typedef int v4si __attribute__ ((vector_size (16)));
v4si foo(v4si *Dst) {
return *Dst;
}
gcc -S -O3 -march=z14 -msoft-float
foo:
lmg %r4,%r5,0(%r3)
stmg %r4,%r5,0(%r2)
br %r14
clang -S -O3 -march=z14 -msoft-float
foo: # @foo
l %r0, 0(%r2)
l %r3, 4(%r2)
l %r4, 8(%r2)
l %r5, 12(%r2)
lr %r2, %r0
br %r14
It seems that gcc is loading from %r3, while clang is loading from %r2, and gcc is returning on the stack, while clang seems to be returning in registers.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D72189/new/
https://reviews.llvm.org/D72189
Files:
clang/lib/Basic/Targets/SystemZ.h
clang/lib/CodeGen/TargetInfo.cpp
clang/lib/Driver/ToolChains/Arch/SystemZ.cpp
clang/lib/Driver/ToolChains/Arch/SystemZ.h
clang/lib/Driver/ToolChains/Clang.cpp
clang/test/CodeGen/systemz-abi.c
clang/test/CodeGen/systemz-abi.cpp
clang/test/CodeGen/target-data.c
clang/test/Driver/systemz-float-01.c
clang/test/Driver/systemz-float-02.c
llvm/lib/Target/SystemZ/SystemZFeatures.td
llvm/lib/Target/SystemZ/SystemZISelLowering.cpp
llvm/lib/Target/SystemZ/SystemZISelLowering.h
llvm/lib/Target/SystemZ/SystemZSubtarget.cpp
llvm/lib/Target/SystemZ/SystemZSubtarget.h
llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp
llvm/test/CodeGen/SystemZ/args-07.ll
llvm/test/CodeGen/SystemZ/soft-float-01.ll
llvm/test/CodeGen/SystemZ/soft-float-02.ll
llvm/test/CodeGen/SystemZ/soft-float-03.ll
llvm/test/CodeGen/SystemZ/soft-float-04.ll
llvm/test/CodeGen/SystemZ/soft-float-args.ll
llvm/test/CodeGen/SystemZ/soft-float-inline-asm-01.ll
llvm/test/CodeGen/SystemZ/soft-float-inline-asm-02.ll
llvm/test/CodeGen/SystemZ/soft-float-inline-asm-03.ll
llvm/test/CodeGen/SystemZ/vec-abi-align.ll
llvm/test/CodeGen/SystemZ/vec-args-06.ll
llvm/test/CodeGen/SystemZ/vec-args-07.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D72189.241792.patch
Type: text/x-patch
Size: 54425 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200131/253d4b42/attachment-0001.bin>
More information about the llvm-commits
mailing list