xref: /freebsd/contrib/llvm-project/llvm/lib/Target/Mips/MipsTargetTransformInfo.h (revision 2e3507c25e42292b45a5482e116d278f5515d04d)
1 //===-- MipsTargetTransformInfo.h - Mips specific TTI -----------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLVM_LIB_TARGET_MIPS_MIPSTARGETTRANSFORMINFO_H
10 #define LLVM_LIB_TARGET_MIPS_MIPSTARGETTRANSFORMINFO_H
11 
12 #include "MipsTargetMachine.h"
13 #include "llvm/Analysis/TargetTransformInfo.h"
14 #include "llvm/CodeGen/BasicTTIImpl.h"
15 
16 namespace llvm {
17 
18 class MipsTTIImpl : public BasicTTIImplBase<MipsTTIImpl> {
19   using BaseT = BasicTTIImplBase<MipsTTIImpl>;
20   using TTI = TargetTransformInfo;
21 
22   friend BaseT;
23 
24   const MipsSubtarget *ST;
25   const MipsTargetLowering *TLI;
26 
27   const MipsSubtarget *getST() const { return ST; }
28   const MipsTargetLowering *getTLI() const { return TLI; }
29 
30 public:
31   explicit MipsTTIImpl(const MipsTargetMachine *TM, const Function &F)
32       : BaseT(TM, F.getParent()->getDataLayout()), ST(TM->getSubtargetImpl(F)),
33         TLI(ST->getTargetLowering()) {}
34 
35   bool hasDivRemOp(Type *DataType, bool IsSigned);
36 };
37 
38 } // end namespace llvm
39 
40 #endif
41