1//===-- R600Processors.td - R600 Processor definitions --------------------===// 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 9class SubtargetFeatureFetchLimit <string Value> : 10 SubtargetFeature <"fetch"#Value, 11 "TexVTXClauseSize", 12 Value, 13 "Limit the maximum number of fetches in a clause to "#Value 14>; 15 16def FeatureR600ALUInst : SubtargetFeature<"R600ALUInst", 17 "R600ALUInst", 18 "false", 19 "Older version of ALU instructions encoding" 20>; 21 22def FeatureFetchLimit8 : SubtargetFeatureFetchLimit <"8">; 23def FeatureFetchLimit16 : SubtargetFeatureFetchLimit <"16">; 24 25def FeatureVertexCache : SubtargetFeature<"HasVertexCache", 26 "HasVertexCache", 27 "true", 28 "Specify use of dedicated vertex cache" 29>; 30 31def FeatureCaymanISA : SubtargetFeature<"caymanISA", 32 "CaymanISA", 33 "true", 34 "Use Cayman ISA" 35>; 36 37def FeatureCFALUBug : SubtargetFeature<"cfalubug", 38 "CFALUBug", 39 "true", 40 "GPU has CF_ALU bug" 41>; 42 43class R600SubtargetFeatureGeneration <string Value, string FeatureName, 44 list<SubtargetFeature> Implies> : 45 SubtargetFeatureGeneration <Value, FeatureName, "R600Subtarget", Implies>; 46 47def FeatureR600 : R600SubtargetFeatureGeneration<"R600", "r600", 48 [FeatureR600ALUInst, FeatureFetchLimit8] 49>; 50 51def FeatureR700 : R600SubtargetFeatureGeneration<"R700", "r700", 52 [FeatureFetchLimit16] 53>; 54 55def FeatureEvergreen : R600SubtargetFeatureGeneration<"EVERGREEN", "evergreen", 56 [FeatureFetchLimit16, FeatureLocalMemorySize32768] 57>; 58 59def FeatureNorthernIslands : R600SubtargetFeatureGeneration<"NORTHERN_ISLANDS", 60 "northern-islands", 61 [FeatureFetchLimit16, FeatureWavefrontSize64, 62 FeatureLocalMemorySize32768] 63>; 64 65 66//===----------------------------------------------------------------------===// 67// Radeon HD 2000/3000 Series (R600). 68//===----------------------------------------------------------------------===// 69 70def : Processor<"r600", R600_VLIW5_Itin, 71 [FeatureR600, FeatureWavefrontSize64, FeatureVertexCache] 72>; 73 74def : Processor<"r630", R600_VLIW5_Itin, 75 [FeatureR600, FeatureWavefrontSize32, FeatureVertexCache] 76>; 77 78def : Processor<"rs880", R600_VLIW5_Itin, 79 [FeatureR600, FeatureWavefrontSize16] 80>; 81 82def : Processor<"rv670", R600_VLIW5_Itin, 83 [FeatureR600, FeatureWavefrontSize64, FeatureVertexCache] 84>; 85 86//===----------------------------------------------------------------------===// 87// Radeon HD 4000 Series (R700). 88//===----------------------------------------------------------------------===// 89 90def : Processor<"rv710", R600_VLIW5_Itin, 91 [FeatureR700, FeatureWavefrontSize32, FeatureVertexCache] 92>; 93 94def : Processor<"rv730", R600_VLIW5_Itin, 95 [FeatureR700, FeatureWavefrontSize32, FeatureVertexCache] 96>; 97 98def : Processor<"rv770", R600_VLIW5_Itin, 99 [FeatureR700, FeatureWavefrontSize64, FeatureVertexCache] 100>; 101 102//===----------------------------------------------------------------------===// 103// Radeon HD 5000 Series (Evergreen). 104//===----------------------------------------------------------------------===// 105 106def : Processor<"cedar", R600_VLIW5_Itin, 107 [FeatureEvergreen, FeatureWavefrontSize32, FeatureVertexCache, 108 FeatureCFALUBug] 109>; 110 111def : Processor<"cypress", R600_VLIW5_Itin, 112 [FeatureEvergreen, FeatureWavefrontSize64, FeatureVertexCache, FeatureFMA] 113>; 114 115def : Processor<"juniper", R600_VLIW5_Itin, 116 [FeatureEvergreen, FeatureWavefrontSize64, FeatureVertexCache] 117>; 118 119def : Processor<"redwood", R600_VLIW5_Itin, 120 [FeatureEvergreen, FeatureWavefrontSize64, FeatureVertexCache, 121 FeatureCFALUBug] 122>; 123 124def : Processor<"sumo", R600_VLIW5_Itin, 125 [FeatureEvergreen, FeatureWavefrontSize64, FeatureCFALUBug] 126>; 127 128//===----------------------------------------------------------------------===// 129// Radeon HD 6000 Series (Northern Islands). 130//===----------------------------------------------------------------------===// 131 132def : Processor<"barts", R600_VLIW5_Itin, 133 [FeatureNorthernIslands, FeatureVertexCache, FeatureCFALUBug] 134>; 135 136def : Processor<"caicos", R600_VLIW5_Itin, 137 [FeatureNorthernIslands, FeatureCFALUBug] 138>; 139 140def : Processor<"cayman", R600_VLIW4_Itin, 141 [FeatureNorthernIslands, FeatureCaymanISA, FeatureFMA] 142>; 143 144def : Processor<"turks", R600_VLIW5_Itin, 145 [FeatureNorthernIslands, FeatureVertexCache, FeatureCFALUBug] 146>; 147