diff options
| author | Craig Topper <craig.topper@intel.com> | 2018-03-05 00:13:35 +0000 | 
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2018-03-05 00:13:35 +0000 | 
| commit | f546b2c06f856cde0d5f3ee3736f8a9200cbea76 (patch) | |
| tree | 12e41b602d3712f6e47101574a6847a877b2dd6b | |
| parent | f2aae622287deacfdd0cfeba85ede24418cd472c (diff) | |
| download | bcm5719-llvm-f546b2c06f856cde0d5f3ee3736f8a9200cbea76.tar.gz bcm5719-llvm-f546b2c06f856cde0d5f3ee3736f8a9200cbea76.zip  | |
[X86] Replace usages of X86Subtarget::hasFp256 with hasAVX. Remove hasFP256.
Almost none of these usages were FP specific. And we had no clear guideliness on when to use hasAVX vs hasFP256.
I might also remove hasInt256 too since its an alias for hasAVX2.
llvm-svn: 326682
| -rw-r--r-- | llvm/lib/Target/X86/X86CallingConv.td | 6 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 14 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86Subtarget.h | 1 | 
3 files changed, 10 insertions, 11 deletions
diff --git a/llvm/lib/Target/X86/X86CallingConv.td b/llvm/lib/Target/X86/X86CallingConv.td index 5d806fe60b8..010462376be 100644 --- a/llvm/lib/Target/X86/X86CallingConv.td +++ b/llvm/lib/Target/X86/X86CallingConv.td @@ -535,7 +535,7 @@ def CC_X86_64_C : CallingConv<[    // fixed arguments to vararg functions are supposed to be passed in    // registers.  Actually modeling that would be a lot of work, though.    CCIfNotVarArg<CCIfType<[v32i8, v16i16, v8i32, v4i64, v8f32, v4f64], -                          CCIfSubtarget<"hasFp256()", +                          CCIfSubtarget<"hasAVX()",                            CCAssignToReg<[YMM0, YMM1, YMM2, YMM3,                                           YMM4, YMM5, YMM6, YMM7]>>>>, @@ -731,7 +731,7 @@ def CC_X86_32_Vector_Standard : CallingConv<[    // AVX 256-bit vector arguments are passed in YMM registers.    CCIfNotVarArg<CCIfType<[v32i8, v16i16, v8i32, v4i64, v8f32, v4f64], -                CCIfSubtarget<"hasFp256()", +                CCIfSubtarget<"hasAVX()",                  CCAssignToReg<[YMM0, YMM1, YMM2]>>>>,    // AVX 512-bit vector arguments are passed in ZMM registers. @@ -750,7 +750,7 @@ def CC_X86_32_Vector_Darwin : CallingConv<[    // AVX 256-bit vector arguments are passed in YMM registers.    CCIfNotVarArg<CCIfType<[v32i8, v16i16, v8i32, v4i64, v8f32, v4f64], -                CCIfSubtarget<"hasFp256()", +                CCIfSubtarget<"hasAVX()",                  CCAssignToReg<[YMM0, YMM1, YMM2, YMM3]>>>>,    // AVX 512-bit vector arguments are passed in ZMM registers. diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index ecda6f536bf..8d8817b9ff0 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -978,7 +978,7 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,        setOperationAction(ISD::BITREVERSE, VT, Custom);    } -  if (!Subtarget.useSoftFloat() && Subtarget.hasFp256()) { +  if (!Subtarget.useSoftFloat() && Subtarget.hasAVX()) {      bool HasInt256 = Subtarget.hasInt256();      addRegisterClass(MVT::v32i8,  Subtarget.hasVLX() ? &X86::VR256XRegClass @@ -16614,7 +16614,7 @@ static SDValue LowerZERO_EXTEND(SDValue Op, const X86Subtarget &Subtarget,    if (SVT.getVectorElementType() == MVT::i1)      return LowerZERO_EXTEND_Mask(Op, Subtarget, DAG); -  assert(Subtarget.hasFp256() && "Expected AVX support"); +  assert(Subtarget.hasAVX() && "Expected AVX support");    return LowerAVXExtend(Op, DAG, Subtarget);  } @@ -16917,7 +16917,7 @@ SDValue X86TargetLowering::LowerTRUNCATE(SDValue Op, SelectionDAG &DAG) const {    // Handle truncation of V256 to V128 using shuffles.    assert(VT.is128BitVector() && InVT.is256BitVector() && "Unexpected types!"); -  assert(Subtarget.hasFp256() && "256-bit vector without AVX!"); +  assert(Subtarget.hasAVX() && "256-bit vector without AVX!");    unsigned NumElems = VT.getVectorNumElements();    MVT NVT = MVT::getVectorVT(VT.getVectorElementType(), NumElems * 2); @@ -18847,7 +18847,7 @@ static SDValue LowerANY_EXTEND(SDValue Op, const X86Subtarget &Subtarget,    if (InVT.getVectorElementType() == MVT::i1)      return LowerSIGN_EXTEND_Mask(Op, Subtarget, DAG); -  assert(Subtarget.hasFp256() && "Expected AVX support"); +  assert(Subtarget.hasAVX() && "Expected AVX support");    return LowerAVXExtend(Op, DAG, Subtarget);  } @@ -26476,7 +26476,7 @@ MachineBasicBlock *X86TargetLowering::EmitVAStartSaveXMMRegsWithCustomInserter(            !MI.getOperand(MI.getNumOperands() - 1).isReg() ||            MI.getOperand(MI.getNumOperands() - 1).getReg() == X86::EFLAGS) &&           "Expected last argument to be EFLAGS"); -  unsigned MOVOpc = Subtarget.hasFp256() ? X86::VMOVAPSmr : X86::MOVAPSmr; +  unsigned MOVOpc = Subtarget.hasAVX() ? X86::VMOVAPSmr : X86::MOVAPSmr;    // In the XMM save block, save all the XMM argument registers.    for (int i = 3, e = MI.getNumOperands() - 1; i != e; ++i) {      int64_t Offset = (i - 3) * 16 + VarArgsFPOffset; @@ -35447,7 +35447,7 @@ static SDValue combineFaddFsub(SDNode *N, SelectionDAG &DAG,    // Try to synthesize horizontal add/sub from adds/subs of shuffles.    if (((Subtarget.hasSSE3() && (VT == MVT::v4f32 || VT == MVT::v2f64)) || -       (Subtarget.hasFp256() && (VT == MVT::v8f32 || VT == MVT::v4f64))) && +       (Subtarget.hasAVX() && (VT == MVT::v8f32 || VT == MVT::v4f64))) &&        isHorizontalBinOp(LHS, RHS, IsFadd)) {      auto NewOpcode = IsFadd ? X86ISD::FHADD : X86ISD::FHSUB;      return DAG.getNode(NewOpcode, SDLoc(N), VT, LHS, RHS); @@ -38786,7 +38786,7 @@ TargetLowering::ConstraintWeight      LLVM_FALLTHROUGH;    case 'x':      if (((type->getPrimitiveSizeInBits() == 128) && Subtarget.hasSSE1()) || -        ((type->getPrimitiveSizeInBits() == 256) && Subtarget.hasFp256())) +        ((type->getPrimitiveSizeInBits() == 256) && Subtarget.hasAVX()))        weight = CW_Register;      break;    case 'k': diff --git a/llvm/lib/Target/X86/X86Subtarget.h b/llvm/lib/Target/X86/X86Subtarget.h index 4a23f4b1a2f..c61977e8eca 100644 --- a/llvm/lib/Target/X86/X86Subtarget.h +++ b/llvm/lib/Target/X86/X86Subtarget.h @@ -524,7 +524,6 @@ public:    bool hasAVX() const { return X86SSELevel >= AVX; }    bool hasAVX2() const { return X86SSELevel >= AVX2; }    bool hasAVX512() const { return X86SSELevel >= AVX512F; } -  bool hasFp256() const { return hasAVX(); }    bool hasInt256() const { return hasAVX2(); }    bool hasSSE4A() const { return HasSSE4A; }    bool hasMMX() const { return X863DNowLevel >= MMX; }  | 

