[SystemZ] Add vector intrinsics
authorUlrich Weigand <ulrich.weigand@de.ibm.com>
Tue, 5 May 2015 19:31:09 +0000 (19:31 +0000)
committerUlrich Weigand <ulrich.weigand@de.ibm.com>
Tue, 5 May 2015 19:31:09 +0000 (19:31 +0000)
commit88b90e11b47d233309dede183f899788ffab038c
tree478cc897a726bc0ed626061f8981568d0af4769b
parente07464832d2df15184b4b288873123ddaef831c3
[SystemZ] Add vector intrinsics

This adds intrinsics to allow access to all of the z13 vector instructions.
Note that instructions whose semantics can be described by standard LLVM IR
do not get any intrinsics.

For each instructions whose semantics *cannot* (fully) be described, we
define an LLVM IR target-specific intrinsic that directly maps to this
instruction.

For instructions that also set the condition code, the LLVM IR intrinsic
returns the post-instruction CC value as a second result.  Instruction
selection will attempt to detect code that compares that CC value against
constants and use the condition code directly instead.

Based on a patch by Richard Sandiford.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236527 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/IR/IntrinsicsSystemZ.td
lib/Target/SystemZ/SystemZ.h
lib/Target/SystemZ/SystemZISelLowering.cpp
lib/Target/SystemZ/SystemZISelLowering.h
lib/Target/SystemZ/SystemZInstrVector.td
lib/Target/SystemZ/SystemZOperators.td
test/CodeGen/SystemZ/vec-intrinsics.ll [new file with mode: 0644]