mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-04 07:32:13 +00:00
Enable SandyBridgeModel for all modern Intel P6 descendants.
All Intel CPUs since Yonah look a lot alike, at least at the granularity of the scheduling models. We can add more accurate models for processors that aren't Sandy Bridge if required. Haswell will probably need its own. The Atom processor and anything based on NetBurst is completely different. So are the non-Intel chips. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178080 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d072a166d6
commit
6b359ecd43
@ -145,9 +145,6 @@ def ProcIntelAtom : SubtargetFeature<"atom", "X86ProcFamily", "IntelAtom",
|
||||
class Proc<string Name, list<SubtargetFeature> Features>
|
||||
: ProcessorModel<Name, GenericModel, Features>;
|
||||
|
||||
class AtomProc<string Name, list<SubtargetFeature> Features>
|
||||
: ProcessorModel<Name, AtomModel, Features>;
|
||||
|
||||
def : Proc<"generic", []>;
|
||||
def : Proc<"i386", []>;
|
||||
def : Proc<"i486", []>;
|
||||
@ -164,46 +161,58 @@ def : Proc<"pentium4", [FeatureSSE2]>;
|
||||
def : Proc<"pentium4m", [FeatureSSE2, FeatureSlowBTMem]>;
|
||||
def : Proc<"x86-64", [FeatureSSE2, Feature64Bit, FeatureSlowBTMem,
|
||||
FeatureFastUAMem]>;
|
||||
def : Proc<"yonah", [FeatureSSE3, FeatureSlowBTMem]>;
|
||||
def : Proc<"prescott", [FeatureSSE3, FeatureSlowBTMem]>;
|
||||
def : Proc<"nocona", [FeatureSSE3, FeatureCMPXCHG16B,
|
||||
FeatureSlowBTMem]>;
|
||||
def : Proc<"core2", [FeatureSSSE3, FeatureCMPXCHG16B,
|
||||
FeatureSlowBTMem]>;
|
||||
def : Proc<"penryn", [FeatureSSE41, FeatureCMPXCHG16B,
|
||||
FeatureSlowBTMem]>;
|
||||
def : AtomProc<"atom", [ProcIntelAtom, FeatureSSSE3, FeatureCMPXCHG16B,
|
||||
FeatureMOVBE, FeatureSlowBTMem, FeatureLeaForSP,
|
||||
FeatureSlowDivide, FeaturePadShortFunctions]>;
|
||||
// Intel Core Duo.
|
||||
def : ProcessorModel<"yonah", SandyBridgeModel,
|
||||
[FeatureSSE3, FeatureSlowBTMem]>;
|
||||
|
||||
// NetBurst.
|
||||
def : Proc<"prescott", [FeatureSSE3, FeatureSlowBTMem]>;
|
||||
def : Proc<"nocona", [FeatureSSE3, FeatureCMPXCHG16B, FeatureSlowBTMem]>;
|
||||
|
||||
// Intel Core 2 Solo/Duo.
|
||||
def : ProcessorModel<"core2", SandyBridgeModel,
|
||||
[FeatureSSSE3, FeatureCMPXCHG16B, FeatureSlowBTMem]>;
|
||||
def : ProcessorModel<"penryn", SandyBridgeModel,
|
||||
[FeatureSSE41, FeatureCMPXCHG16B, FeatureSlowBTMem]>;
|
||||
|
||||
// Atom.
|
||||
def : ProcessorModel<"atom", AtomModel,
|
||||
[ProcIntelAtom, FeatureSSSE3, FeatureCMPXCHG16B,
|
||||
FeatureMOVBE, FeatureSlowBTMem, FeatureLeaForSP,
|
||||
FeatureSlowDivide, FeaturePadShortFunctions]>;
|
||||
|
||||
// "Arrandale" along with corei3 and corei5
|
||||
def : Proc<"corei7", [FeatureSSE42, FeatureCMPXCHG16B,
|
||||
FeatureSlowBTMem, FeatureFastUAMem,
|
||||
FeaturePOPCNT, FeatureAES]>;
|
||||
def : Proc<"nehalem", [FeatureSSE42, FeatureCMPXCHG16B,
|
||||
FeatureSlowBTMem, FeatureFastUAMem,
|
||||
FeaturePOPCNT]>;
|
||||
def : ProcessorModel<"corei7", SandyBridgeModel,
|
||||
[FeatureSSE42, FeatureCMPXCHG16B, FeatureSlowBTMem,
|
||||
FeatureFastUAMem, FeaturePOPCNT, FeatureAES]>;
|
||||
|
||||
def : ProcessorModel<"nehalem", SandyBridgeModel,
|
||||
[FeatureSSE42, FeatureCMPXCHG16B, FeatureSlowBTMem,
|
||||
FeatureFastUAMem, FeaturePOPCNT]>;
|
||||
// Westmere is a similar machine to nehalem with some additional features.
|
||||
// Westmere is the corei3/i5/i7 path from nehalem to sandybridge
|
||||
def : Proc<"westmere", [FeatureSSE42, FeatureCMPXCHG16B,
|
||||
FeatureSlowBTMem, FeatureFastUAMem,
|
||||
FeaturePOPCNT, FeatureAES, FeaturePCLMUL]>;
|
||||
def : ProcessorModel<"westmere", SandyBridgeModel,
|
||||
[FeatureSSE42, FeatureCMPXCHG16B, FeatureSlowBTMem,
|
||||
FeatureFastUAMem, FeaturePOPCNT, FeatureAES,
|
||||
FeaturePCLMUL]>;
|
||||
// Sandy Bridge
|
||||
// SSE is not listed here since llvm treats AVX as a reimplementation of SSE,
|
||||
// rather than a superset.
|
||||
def : Proc<"corei7-avx", [FeatureAVX, FeatureCMPXCHG16B, FeatureFastUAMem,
|
||||
FeaturePOPCNT, FeatureAES, FeaturePCLMUL]>;
|
||||
def : ProcessorModel<"corei7-avx", SandyBridgeModel,
|
||||
[FeatureAVX, FeatureCMPXCHG16B, FeatureFastUAMem,
|
||||
FeaturePOPCNT, FeatureAES, FeaturePCLMUL]>;
|
||||
// Ivy Bridge
|
||||
def : Proc<"core-avx-i", [FeatureAVX, FeatureCMPXCHG16B, FeatureFastUAMem,
|
||||
FeaturePOPCNT, FeatureAES, FeaturePCLMUL,
|
||||
FeatureRDRAND, FeatureF16C, FeatureFSGSBase]>;
|
||||
def : ProcessorModel<"core-avx-i", SandyBridgeModel,
|
||||
[FeatureAVX, FeatureCMPXCHG16B, FeatureFastUAMem,
|
||||
FeaturePOPCNT, FeatureAES, FeaturePCLMUL, FeatureRDRAND,
|
||||
FeatureF16C, FeatureFSGSBase]>;
|
||||
|
||||
// Haswell
|
||||
def : Proc<"core-avx2", [FeatureAVX2, FeatureCMPXCHG16B, FeatureFastUAMem,
|
||||
FeaturePOPCNT, FeatureAES, FeaturePCLMUL,
|
||||
FeatureRDRAND, FeatureF16C, FeatureFSGSBase,
|
||||
FeatureMOVBE, FeatureLZCNT, FeatureBMI,
|
||||
FeatureBMI2, FeatureFMA,
|
||||
FeatureRTM]>;
|
||||
def : ProcessorModel<"core-avx2", SandyBridgeModel,
|
||||
[FeatureAVX2, FeatureCMPXCHG16B, FeatureFastUAMem,
|
||||
FeaturePOPCNT, FeatureAES, FeaturePCLMUL, FeatureRDRAND,
|
||||
FeatureF16C, FeatureFSGSBase, FeatureMOVBE, FeatureLZCNT,
|
||||
FeatureBMI, FeatureBMI2, FeatureFMA, FeatureRTM]>;
|
||||
|
||||
def : Proc<"k6", [FeatureMMX]>;
|
||||
def : Proc<"k6-2", [Feature3DNow]>;
|
||||
|
@ -565,3 +565,4 @@ def GenericModel : SchedMachineModel {
|
||||
}
|
||||
|
||||
include "X86ScheduleAtom.td"
|
||||
include "X86SchedSandyBridge.td"
|
||||
|
@ -1,5 +1,5 @@
|
||||
; RUN: llc < %s -mtriple=x86_64-apple-macosx -mcpu=core2 -enable-misched -misched=ilpmax | FileCheck -check-prefix=MAX %s
|
||||
; RUN: llc < %s -mtriple=x86_64-apple-macosx -mcpu=core2 -enable-misched -misched=ilpmin | FileCheck -check-prefix=MIN %s
|
||||
; RUN: llc < %s -mtriple=x86_64-apple-macosx -mcpu=nocona -enable-misched -misched=ilpmax | FileCheck -check-prefix=MAX %s
|
||||
; RUN: llc < %s -mtriple=x86_64-apple-macosx -mcpu=nocona -enable-misched -misched=ilpmin | FileCheck -check-prefix=MIN %s
|
||||
;
|
||||
; Basic verification of the ScheduleDAGILP metric.
|
||||
;
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: llc < %s -march=x86-64 -asm-verbose=false -mtriple=x86_64-unknown-linux-gnu -mcpu=nehalem -post-RA-scheduler=true | FileCheck %s
|
||||
; RUN: llc < %s -march=x86-64 -asm-verbose=false -mtriple=x86_64-unknown-linux-gnu -mcpu=nehalem -post-RA-scheduler=true -schedmodel=false | FileCheck %s
|
||||
|
||||
; Currently, floating-point selects are lowered to CFG triangles.
|
||||
; This means that one side of the select is always unconditionally
|
||||
|
Loading…
x
Reference in New Issue
Block a user