| //===-- R600Processors.td - R600 Processor definitions --------------------===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| |
| class SubtargetFeatureFetchLimit <string Value> : |
| SubtargetFeature <"fetch"#Value, |
| "TexVTXClauseSize", |
| Value, |
| "Limit the maximum number of fetches in a clause to "#Value |
| >; |
| |
| def FeatureR600ALUInst : SubtargetFeature<"R600ALUInst", |
| "R600ALUInst", |
| "false", |
| "Older version of ALU instructions encoding" |
| >; |
| |
| def FeatureFetchLimit8 : SubtargetFeatureFetchLimit <"8">; |
| def FeatureFetchLimit16 : SubtargetFeatureFetchLimit <"16">; |
| |
| def FeatureVertexCache : SubtargetFeature<"HasVertexCache", |
| "HasVertexCache", |
| "true", |
| "Specify use of dedicated vertex cache" |
| >; |
| |
| def FeatureCaymanISA : SubtargetFeature<"caymanISA", |
| "CaymanISA", |
| "true", |
| "Use Cayman ISA" |
| >; |
| |
| def FeatureCFALUBug : SubtargetFeature<"cfalubug", |
| "CFALUBug", |
| "true", |
| "GPU has CF_ALU bug" |
| >; |
| |
| class R600SubtargetFeatureGeneration <string Value, string FeatureName, |
| list<SubtargetFeature> Implies> : |
| SubtargetFeatureGeneration <Value, FeatureName, "R600Subtarget", Implies>; |
| |
| def FeatureR600 : R600SubtargetFeatureGeneration<"R600", "r600", |
| [FeatureR600ALUInst, FeatureFetchLimit8] |
| >; |
| |
| def FeatureR700 : R600SubtargetFeatureGeneration<"R700", "r700", |
| [FeatureFetchLimit16] |
| >; |
| |
| def FeatureEvergreen : R600SubtargetFeatureGeneration<"EVERGREEN", "evergreen", |
| [FeatureFetchLimit16, FeatureLocalMemorySize32768] |
| >; |
| |
| def FeatureNorthernIslands : R600SubtargetFeatureGeneration<"NORTHERN_ISLANDS", |
| "northern-islands", |
| [FeatureFetchLimit16, FeatureWavefrontSize64, |
| FeatureLocalMemorySize32768] |
| >; |
| |
| |
| //===----------------------------------------------------------------------===// |
| // Radeon HD 2000/3000 Series (R600). |
| //===----------------------------------------------------------------------===// |
| |
| def : Processor<"r600", R600_VLIW5_Itin, |
| [FeatureR600, FeatureWavefrontSize64, FeatureVertexCache] |
| >; |
| |
| def : Processor<"r630", R600_VLIW5_Itin, |
| [FeatureR600, FeatureWavefrontSize32, FeatureVertexCache] |
| >; |
| |
| def : Processor<"rs880", R600_VLIW5_Itin, |
| [FeatureR600, FeatureWavefrontSize16] |
| >; |
| |
| def : Processor<"rv670", R600_VLIW5_Itin, |
| [FeatureR600, FeatureWavefrontSize64, FeatureVertexCache] |
| >; |
| |
| //===----------------------------------------------------------------------===// |
| // Radeon HD 4000 Series (R700). |
| //===----------------------------------------------------------------------===// |
| |
| def : Processor<"rv710", R600_VLIW5_Itin, |
| [FeatureR700, FeatureWavefrontSize32, FeatureVertexCache] |
| >; |
| |
| def : Processor<"rv730", R600_VLIW5_Itin, |
| [FeatureR700, FeatureWavefrontSize32, FeatureVertexCache] |
| >; |
| |
| def : Processor<"rv770", R600_VLIW5_Itin, |
| [FeatureR700, FeatureWavefrontSize64, FeatureVertexCache] |
| >; |
| |
| //===----------------------------------------------------------------------===// |
| // Radeon HD 5000 Series (Evergreen). |
| //===----------------------------------------------------------------------===// |
| |
| def : Processor<"cedar", R600_VLIW5_Itin, |
| [FeatureEvergreen, FeatureWavefrontSize32, FeatureVertexCache, |
| FeatureCFALUBug] |
| >; |
| |
| def : Processor<"cypress", R600_VLIW5_Itin, |
| [FeatureEvergreen, FeatureWavefrontSize64, FeatureVertexCache, FeatureFMA] |
| >; |
| |
| def : Processor<"juniper", R600_VLIW5_Itin, |
| [FeatureEvergreen, FeatureWavefrontSize64, FeatureVertexCache] |
| >; |
| |
| def : Processor<"redwood", R600_VLIW5_Itin, |
| [FeatureEvergreen, FeatureWavefrontSize64, FeatureVertexCache, |
| FeatureCFALUBug] |
| >; |
| |
| def : Processor<"sumo", R600_VLIW5_Itin, |
| [FeatureEvergreen, FeatureWavefrontSize64, FeatureCFALUBug] |
| >; |
| |
| //===----------------------------------------------------------------------===// |
| // Radeon HD 6000 Series (Northern Islands). |
| //===----------------------------------------------------------------------===// |
| |
| def : Processor<"barts", R600_VLIW5_Itin, |
| [FeatureNorthernIslands, FeatureVertexCache, FeatureCFALUBug] |
| >; |
| |
| def : Processor<"caicos", R600_VLIW5_Itin, |
| [FeatureNorthernIslands, FeatureCFALUBug] |
| >; |
| |
| def : Processor<"cayman", R600_VLIW4_Itin, |
| [FeatureNorthernIslands, FeatureCaymanISA, FeatureFMA] |
| >; |
| |
| def : Processor<"turks", R600_VLIW5_Itin, |
| [FeatureNorthernIslands, FeatureVertexCache, FeatureCFALUBug] |
| >; |