mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
NFC: The Cost Model specialization, by Andrey Tischenko
The current Cost Model implementation is very inaccurate and has to be updated, improved, re-implemented to be able to take into account the concrete CPU models and the concrete targets where this Cost Model is being used. For example, the Latency Cost Model should be differ from Code Size Cost Model, etc. This patch is the first step to launch the developing and implementation of a new Cost Model generation. Differential Revision: https://reviews.llvm.org/D25186 llvm-svn: 284012
This commit is contained in:
parent
72f99d6988
commit
e0af07de49
@ -13,6 +13,31 @@
|
||||
/// independent and default TTI implementations handle the rest.
|
||||
///
|
||||
//===----------------------------------------------------------------------===//
|
||||
/// About Cost Model numbers used below it's necessary to say the following:
|
||||
/// the numbers correspond to some "generic" X86 CPU instead of usage of
|
||||
/// concrete CPU model. Usually the numbers correspond to CPU where the feature
|
||||
/// apeared at the first time. For example, if we do Subtarget.hasSSE42() in
|
||||
/// the lookups below the cost is based on Nehalem as that was the first CPU
|
||||
/// to support that feature level and thus has most likely the worst case cost.
|
||||
/// Some examples of other technologies/CPUs:
|
||||
/// SSE 3 - Pentium4 / Athlon64
|
||||
/// SSE 4.1 - Penryn
|
||||
/// SSE 4.2 - Nehalem
|
||||
/// AVX - Sandy Bridge
|
||||
/// AVX2 - Haswell
|
||||
/// AVX-512 - Xeon Phi / Skylake
|
||||
/// And some examples of instruction target dependent costs (latency)
|
||||
/// divss sqrtss rsqrtss
|
||||
/// AMD K7 11-16 19 3
|
||||
/// Piledriver 9-24 13-15 5
|
||||
/// Jaguar 14 16 2
|
||||
/// Pentium II,III 18 30 2
|
||||
/// Nehalem 7-14 7-18 3
|
||||
/// Haswell 10-13 11 5
|
||||
/// TODO: Develop and implement the target dependent cost model and
|
||||
/// specialize cost numbers for different Cost Model Targets such as throughput,
|
||||
/// code size, latency and uop count.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "X86TargetTransformInfo.h"
|
||||
#include "llvm/Analysis/TargetTransformInfo.h"
|
||||
|
Loading…
Reference in New Issue
Block a user