diff options
author | Richard Sandiford <rsandifo@linux.vnet.ibm.com> | 2013-11-06 12:16:02 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@linux.vnet.ibm.com> | 2013-11-06 12:16:02 +0000 |
commit | d975a82e08ab15242724bc46e53d58b4ff3e4815 (patch) | |
tree | fa724e77303943138884e6d08e97bc612c998ff3 /lib/Target/SystemZ | |
parent | 02707cb98e29f7e1a086da25c688a01578943d71 (diff) | |
download | external_llvm-d975a82e08ab15242724bc46e53d58b4ff3e4815.zip external_llvm-d975a82e08ab15242724bc46e53d58b4ff3e4815.tar.gz external_llvm-d975a82e08ab15242724bc46e53d58b4ff3e4815.tar.bz2 |
[SystemZ] Handle vectors in getSetCCResultType
I don't have a standalone testcase for this, but it should allow r193676
to be reapplied.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194148 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/SystemZ')
-rw-r--r-- | lib/Target/SystemZ/SystemZISelLowering.cpp | 9 | ||||
-rw-r--r-- | lib/Target/SystemZ/SystemZISelLowering.h | 4 |
2 files changed, 8 insertions, 5 deletions
diff --git a/lib/Target/SystemZ/SystemZISelLowering.cpp b/lib/Target/SystemZ/SystemZISelLowering.cpp index 380ce62..4a5fb42 100644 --- a/lib/Target/SystemZ/SystemZISelLowering.cpp +++ b/lib/Target/SystemZ/SystemZISelLowering.cpp @@ -279,8 +279,13 @@ SystemZTargetLowering::SystemZTargetLowering(SystemZTargetMachine &tm) MaxStoresPerMemsetOptSize = 0; } -bool -SystemZTargetLowering::isFMAFasterThanFMulAndFAdd(EVT VT) const { +EVT SystemZTargetLowering::getSetCCResultType(LLVMContext &, EVT VT) const { + if (!VT.isVector()) + return MVT::i32; + return VT.changeVectorElementTypeToInteger(); +} + +bool SystemZTargetLowering::isFMAFasterThanFMulAndFAdd(EVT VT) const { VT = VT.getScalarType(); if (!VT.isSimple()) diff --git a/lib/Target/SystemZ/SystemZISelLowering.h b/lib/Target/SystemZ/SystemZISelLowering.h index 820b680..c6dcca6 100644 --- a/lib/Target/SystemZ/SystemZISelLowering.h +++ b/lib/Target/SystemZ/SystemZISelLowering.h @@ -198,9 +198,7 @@ public: virtual MVT getScalarShiftAmountTy(EVT LHSTy) const LLVM_OVERRIDE { return MVT::i32; } - virtual EVT getSetCCResultType(LLVMContext &, EVT) const LLVM_OVERRIDE { - return MVT::i32; - } + virtual EVT getSetCCResultType(LLVMContext &, EVT) const LLVM_OVERRIDE; virtual bool isFMAFasterThanFMulAndFAdd(EVT VT) const LLVM_OVERRIDE; virtual bool isFPImmLegal(const APFloat &Imm, EVT VT) const LLVM_OVERRIDE; virtual bool isLegalAddressingMode(const AddrMode &AM, Type *Ty) const |