X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTarget%2FX86%2FX86ISelLowering.h;h=9bf2b90f8fcd2d01f9ef342080a4651d7a4c2511;hb=f4ec8bfaecef4e38f713b9e05d89869b023e1ce8;hp=39380b66bd21b345a001f38874e4492a43a8011a;hpb=0e8eceffbfd76131117349ff26ce7fd0641614d5;p=oota-llvm.git diff --git a/lib/Target/X86/X86ISelLowering.h b/lib/Target/X86/X86ISelLowering.h index 39380b66bd2..9bf2b90f8fc 100644 --- a/lib/Target/X86/X86ISelLowering.h +++ b/lib/Target/X86/X86ISelLowering.h @@ -245,12 +245,9 @@ namespace llvm { /// the list of operands. TC_RETURN, - // VZEXT_MOVL - Vector move low and zero extend. + // VZEXT_MOVL - Vector move to low scalar and zero higher vector elements. VZEXT_MOVL, - // VSEXT_MOVL - Vector move low and sign extend. - VSEXT_MOVL, - // VZEXT - Vector integer zero-extend. VZEXT, @@ -343,7 +340,9 @@ namespace llvm { VBROADCAST, // masked broadcast VBROADCASTM, + // Insert/Extract vector element VINSERT, + VEXTRACT, // PMULUDQ - Vector multiply packed unsigned doubleword integers PMULUDQ, @@ -577,7 +576,8 @@ namespace llvm { /// allowsUnalignedMemoryAccesses - Returns true if the target allows /// unaligned memory accesses. of the specified type. Returns whether it /// is "fast" by reference in the second argument. - virtual bool allowsUnalignedMemoryAccesses(EVT VT, bool *Fast) const; + virtual bool allowsUnalignedMemoryAccesses(EVT VT, unsigned AS, + bool *Fast) const; /// LowerOperation - Provide custom lowering hooks for some operations. /// @@ -679,6 +679,9 @@ namespace llvm { /// the immediate into a register. virtual bool isLegalAddImmediate(int64_t Imm) const; + + virtual bool isVectorShiftByScalarCheap(Type *Ty) const; + /// isTruncateFree - Return true if it's free to truncate a value of /// type Ty1 to type Ty2. e.g. On x86 it's free to truncate a i32 value in /// register EAX to i16 by referencing its sub-register AX. @@ -781,7 +784,8 @@ namespace llvm { SDValue BuildFILD(SDValue Op, EVT SrcVT, SDValue Chain, SDValue StackSlot, SelectionDAG &DAG) const; - virtual bool isNoopAddrSpaceCast(unsigned SrcAS, unsigned DestAS) const LLVM_OVERRIDE; + virtual bool isNoopAddrSpaceCast(unsigned SrcAS, + unsigned DestAS) const override; /// \brief Reset the operation actions based on target options. virtual void resetOperationActions(); @@ -863,6 +867,7 @@ namespace llvm { SDValue LowerBUILD_VECTORvXi1(SDValue Op, SelectionDAG &DAG) const; SDValue LowerVECTOR_SHUFFLE(SDValue Op, SelectionDAG &DAG) const; SDValue LowerEXTRACT_VECTOR_ELT(SDValue Op, SelectionDAG &DAG) const; + SDValue ExtractBitFromMaskVector(SDValue Op, SelectionDAG &DAG) const; SDValue LowerINSERT_VECTOR_ELT(SDValue Op, SelectionDAG &DAG) const; SDValue LowerConstantPool(SDValue Op, SelectionDAG &DAG) const; SDValue LowerBlockAddress(SDValue Op, SelectionDAG &DAG) const;