From dc26e32ec7a10a7dea536b5953c75ff8e06b7f15 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 20 Mar 2006 00:55:52 +0000 Subject: [PATCH] Add some helper methods git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26882 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Target/TargetLowering.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/include/llvm/Target/TargetLowering.h b/include/llvm/Target/TargetLowering.h index 2f950b01a29..5083e86046d 100644 --- a/include/llvm/Target/TargetLowering.h +++ b/include/llvm/Target/TargetLowering.h @@ -195,6 +195,15 @@ public: return getOperationAction(Op, VT) == Legal || getOperationAction(Op, VT) == Custom; } + + + /// isVectorShuffleLegal - Return true if a vector shuffle is legal with the + /// specified mask and type. Targets can specify exactly which masks they + /// support and the code generator is tasked with not creating illegal masks. + bool isShuffleLegal(MVT::ValueType VT, SDOperand Mask) const { + return isOperationLegal(ISD::VECTOR_SHUFFLE, VT) && + isShuffleMaskLegal(Mask); + } /// getTypeToPromoteTo - If the action for this operation is to promote, this /// method returns the ValueType to promote to. @@ -476,6 +485,14 @@ protected: TargetDAGCombineArray[NT >> 3] |= 1 << (NT&7); } + /// isShuffleMaskLegal - Targets can use this to indicate that they only + /// support *some* VECTOR_SHUFFLE operations, those with specific masks. + /// By default, if a target supports the VECTOR_SHUFFLE node, all mask values + /// are assumed to be legal. + virtual bool isShuffleMaskLegal(SDOperand Mask) const { + return true; + } + public: //===--------------------------------------------------------------------===// -- 2.34.1