1//===-- AMDGPUFeatures.td - AMDGPU Feature Definitions -----*- tablegen -*-===// 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 9def FeatureFP64 : SubtargetFeature<"fp64", 10 "FP64", 11 "true", 12 "Enable double precision operations" 13>; 14 15def FeatureFMA : SubtargetFeature<"fmaf", 16 "FMA", 17 "true", 18 "Enable single precision FMA (not as fast as mul+add, but fused)" 19>; 20 21// Some instructions do not support denormals despite this flag. Using 22// fp32 denormals also causes instructions to run at the double 23// precision rate for the device. 24def FeatureFP32Denormals : SubtargetFeature<"fp32-denormals", 25 "FP32Denormals", 26 "true", 27 "Enable single precision denormal handling" 28>; 29 30class SubtargetFeatureLocalMemorySize <int Value> : SubtargetFeature< 31 "localmemorysize"#Value, 32 "LocalMemorySize", 33 !cast<string>(Value), 34 "The size of local memory in bytes" 35>; 36 37def FeatureLocalMemorySize0 : SubtargetFeatureLocalMemorySize<0>; 38def FeatureLocalMemorySize32768 : SubtargetFeatureLocalMemorySize<32768>; 39def FeatureLocalMemorySize65536 : SubtargetFeatureLocalMemorySize<65536>; 40 41class SubtargetFeatureWavefrontSize <int Value> : SubtargetFeature< 42 "wavefrontsize"#Value, 43 "WavefrontSize", 44 !cast<string>(Value), 45 "The number of threads per wavefront" 46>; 47 48def FeatureWavefrontSize16 : SubtargetFeatureWavefrontSize<16>; 49def FeatureWavefrontSize32 : SubtargetFeatureWavefrontSize<32>; 50def FeatureWavefrontSize64 : SubtargetFeatureWavefrontSize<64>; 51 52class SubtargetFeatureGeneration <string Value, string FeatureName, 53 string Subtarget, 54 list<SubtargetFeature> Implies> : 55 SubtargetFeature <FeatureName, "Gen", Subtarget#"::"#Value, 56 Value#" GPU generation", Implies>; 57 58def FeaturePromoteAlloca : SubtargetFeature <"promote-alloca", 59 "EnablePromoteAlloca", 60 "true", 61 "Enable promote alloca pass" 62>; 63 64