Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(525)

Unified Diff: lib/Target/JSBackend/JSTargetTransformInfo.cpp

Issue 1151093004: Changes from 3.7 merge to files not in upstream (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-llvm.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: lib/Target/JSBackend/JSTargetTransformInfo.cpp
diff --git a/lib/Target/JSBackend/JSTargetTransformInfo.cpp b/lib/Target/JSBackend/JSTargetTransformInfo.cpp
index 82d448a56ffe5b56f683eac7b7d7d3ba1e1cbbef..def8550639a92a9bfec7aaee357caf340d23956d 100644
--- a/lib/Target/JSBackend/JSTargetTransformInfo.cpp
+++ b/lib/Target/JSBackend/JSTargetTransformInfo.cpp
@@ -1,4 +1,4 @@
-//===-- JSTargetTransformInfo.cpp - JS specific TTI pass ------------------===//
+//===-- JSTargetTransformInfo.cpp - JS specific TTI ------------*- C++ -*-===//
jvoung (off chromium) 2015/05/26 20:39:45 don't need the *- C++ -* in a .cpp file (just .h)
Derek Schuff 2015/05/26 22:01:32 Done.
//
// The LLVM Compiler Infrastructure
//
@@ -7,96 +7,33 @@
//
//===----------------------------------------------------------------------===//
/// \file
-/// This file implements a TargetTransformInfo analysis pass specific to the
-/// JS target machine. It uses the target's detailed information to provide
-/// more precise answers to certain TTI queries, while letting the target
-/// independent and default TTI implementations handle the rest.
+/// This file implements a TargetTransformInfo::Concept conforming object
+/// specific to the JS target machine. It uses the target's detailed information
+/// to provide more precise answers to certain TTI queries, while letting the
+/// target independent and default TTI implementations handle the rest.
///
//===----------------------------------------------------------------------===//
#define DEBUG_TYPE "jstti"
#include "JS.h"
#include "JSTargetMachine.h"
-#include "llvm/Analysis/TargetTransformInfo.h"
+#include "JSTargetTransformInfo.h"
#include "llvm/Support/Debug.h"
#include "llvm/Target/TargetLowering.h"
#include "llvm/Target/CostTable.h"
using namespace llvm;
-// Declare the pass initialization routine locally as target-specific passes
-// don't havve a target-wide initialization entry point, and so we rely on the
-// pass constructor initialization.
-namespace llvm {
-void initializeJSTTIPass(PassRegistry &);
-}
-
-namespace {
-
-class JSTTI : public ImmutablePass, public TargetTransformInfo {
-public:
- JSTTI() : ImmutablePass(ID) {
- llvm_unreachable("This pass cannot be directly constructed");
- }
-
- JSTTI(const JSTargetMachine *TM) : ImmutablePass(ID) {
- initializeJSTTIPass(*PassRegistry::getPassRegistry());
- }
-
- void initializePass() override { pushTTIStack(this); }
-
- void getAnalysisUsage(AnalysisUsage &AU) const override {
- TargetTransformInfo::getAnalysisUsage(AU);
- }
-
- /// Pass identification.
- static char ID;
-
- /// Provide necessary pointer adjustments for the two base classes.
- void *getAdjustedAnalysisPointer(const void *ID) override {
- if (ID == &TargetTransformInfo::ID)
- return (TargetTransformInfo *)this;
- return this;
- }
-
- PopcntSupportKind getPopcntSupport(unsigned IntTyWidthInBit) const override;
-
- unsigned getRegisterBitWidth(bool Vector) const override;
-
- unsigned getArithmeticInstrCost(
- unsigned Opcode, Type *Ty, OperandValueKind Opd1Info = OK_AnyValue,
- OperandValueKind Opd2Info = OK_AnyValue,
- OperandValueProperties Opd1PropInfo = OP_None,
- OperandValueProperties Opd2PropInfo = OP_None) const override;
-
- unsigned getVectorInstrCost(unsigned Opcode, Type *Val,
- unsigned Index = -1) const override;
-
- void getUnrollingPreferences(const Function *F, Loop *L,
- UnrollingPreferences &UP) const override;
-};
-
-} // end anonymous namespace
-
-INITIALIZE_AG_PASS(JSTTI, TargetTransformInfo, "jstti",
- "JS Target Transform Info", true, true, false)
-char JSTTI::ID = 0;
-
-ImmutablePass *
-llvm::createJSTargetTransformInfoPass(const JSTargetMachine *TM) {
- return new JSTTI(TM);
-}
-
-
//===----------------------------------------------------------------------===//
//
// JS cost model.
//
//===----------------------------------------------------------------------===//
-JSTTI::PopcntSupportKind JSTTI::getPopcntSupport(unsigned TyWidth) const {
+TargetTransformInfo::PopcntSupportKind JSTTI::getPopcntSupport(
+ unsigned TyWidth) {
assert(isPowerOf2_32(TyWidth) && "Ty width must be power of 2");
// Hopefully we'll get popcnt in ES7, but for now, we just have software.
- return PSK_Software;
+ return TargetTransformInfo::PSK_Software;
}
unsigned JSTTI::getRegisterBitWidth(bool Vector) const {
@@ -108,12 +45,12 @@ unsigned JSTTI::getRegisterBitWidth(bool Vector) const {
}
unsigned JSTTI::getArithmeticInstrCost(
- unsigned Opcode, Type *Ty, OperandValueKind Opd1Info,
- OperandValueKind Opd2Info, OperandValueProperties Opd1PropInfo,
- OperandValueProperties Opd2PropInfo) const {
+ unsigned Opcode, Type *Ty, TTI::OperandValueKind Opd1Info,
+ TTI::OperandValueKind Opd2Info, TTI::OperandValueProperties Opd1PropInfo,
+ TTI::OperandValueProperties Opd2PropInfo) {
const unsigned Nope = 65536;
- unsigned Cost = TargetTransformInfo::getArithmeticInstrCost(Opcode, Ty, Opd1Info, Opd2Info);
+ unsigned Cost = BasicTTIImplBase<JSTTI>::getArithmeticInstrCost(Opcode, Ty, Opd1Info, Opd2Info);
if (VectorType *VTy = dyn_cast<VectorType>(Ty)) {
switch (VTy->getNumElements()) {
@@ -136,7 +73,7 @@ unsigned JSTTI::getArithmeticInstrCost(
case Instruction::AShr:
case Instruction::Shl:
// SIMD.js' shifts are currently only ByScalar.
- if (Opd2Info != OK_UniformValue && Opd2Info != OK_UniformConstantValue)
+ if (Opd2Info != TTI::OK_UniformValue && Opd2Info != TTI::OK_UniformConstantValue)
Cost = Cost * VTy->getNumElements() + 100;
break;
}
@@ -145,8 +82,8 @@ unsigned JSTTI::getArithmeticInstrCost(
return Cost;
}
-unsigned JSTTI::getVectorInstrCost(unsigned Opcode, Type *Val, unsigned Index) const {
- unsigned Cost = TargetTransformInfo::getVectorInstrCost(Opcode, Val, Index);
+unsigned JSTTI::getVectorInstrCost(unsigned Opcode, Type *Val, unsigned Index) {
+ unsigned Cost = BasicTTIImplBase::getVectorInstrCost(Opcode, Val, Index);
// SIMD.js' insert/extract currently only take constant indices.
if (Index == -1u)
@@ -155,8 +92,8 @@ unsigned JSTTI::getVectorInstrCost(unsigned Opcode, Type *Val, unsigned Index) c
return Cost;
}
-void JSTTI::getUnrollingPreferences(const Function *F, Loop *L,
- UnrollingPreferences &UP) const {
+void JSTTI::getUnrollingPreferences(Loop *L,
+ TTI::UnrollingPreferences &UP) const {
// We generally don't want a lot of unrolling.
UP.Partial = false;
UP.Runtime = false;

Powered by Google App Engine
This is Rietveld 408576698