[SystemZ] Add CodeGen support for v4f32
authorUlrich Weigand <ulrich.weigand@de.ibm.com>
Tue, 5 May 2015 19:27:45 +0000 (19:27 +0000)
committerUlrich Weigand <ulrich.weigand@de.ibm.com>
Tue, 5 May 2015 19:27:45 +0000 (19:27 +0000)
commit878c6281d32807b4a711251611a21f00ea4b09d4
tree47572f98426f31f08d3a1cd8d10f609960f9fc9b
parent16541113840f4695a1e5c03286ccfa2f99a7c7e0
[SystemZ] Add CodeGen support for v4f32

The architecture doesn't really have any native v4f32 operations except
v4f32->v2f64 and v2f64->v4f32 conversions, with only half of the v4f32
elements being used.  Even so, using vector registers for <4 x float>
and scalarising individual operations is much better than generating
completely scalar code, since there's much less register pressure.
It's also more efficient to do v4f32 comparisons by extending to 2
v2f64s, comparing those, then packing the result.

This particularly helps with llvmpipe.

Based on a patch by Richard Sandiford.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236523 91177308-0d34-0410-b5e6-96231b3b80d8
37 files changed:
lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.h
lib/Target/SystemZ/SystemZAsmPrinter.cpp
lib/Target/SystemZ/SystemZCallingConv.td
lib/Target/SystemZ/SystemZISelLowering.cpp
lib/Target/SystemZ/SystemZISelLowering.h
lib/Target/SystemZ/SystemZInstrFormats.td
lib/Target/SystemZ/SystemZInstrVector.td
lib/Target/SystemZ/SystemZOperators.td
test/CodeGen/SystemZ/fp-move-09.ll
test/CodeGen/SystemZ/fp-move-10.ll [new file with mode: 0644]
test/CodeGen/SystemZ/vec-cmp-05.ll [new file with mode: 0644]
test/CodeGen/SystemZ/vec-const-05.ll [new file with mode: 0644]
test/CodeGen/SystemZ/vec-const-11.ll [new file with mode: 0644]
test/CodeGen/SystemZ/vec-const-17.ll [new file with mode: 0644]
test/CodeGen/SystemZ/vec-conv-02.ll [new file with mode: 0644]
test/CodeGen/SystemZ/vec-move-01.ll
test/CodeGen/SystemZ/vec-move-02.ll
test/CodeGen/SystemZ/vec-move-03.ll
test/CodeGen/SystemZ/vec-move-04.ll
test/CodeGen/SystemZ/vec-move-05.ll
test/CodeGen/SystemZ/vec-move-07.ll
test/CodeGen/SystemZ/vec-move-08.ll
test/CodeGen/SystemZ/vec-move-09.ll
test/CodeGen/SystemZ/vec-move-10.ll
test/CodeGen/SystemZ/vec-move-11.ll
test/CodeGen/SystemZ/vec-move-12.ll
test/CodeGen/SystemZ/vec-move-13.ll
test/CodeGen/SystemZ/vec-move-14.ll
test/CodeGen/SystemZ/vec-perm-01.ll
test/CodeGen/SystemZ/vec-perm-02.ll
test/CodeGen/SystemZ/vec-perm-03.ll
test/CodeGen/SystemZ/vec-perm-04.ll
test/CodeGen/SystemZ/vec-perm-05.ll
test/CodeGen/SystemZ/vec-perm-06.ll
test/CodeGen/SystemZ/vec-perm-07.ll
test/CodeGen/SystemZ/vec-perm-08.ll
test/CodeGen/SystemZ/vec-sub-01.ll