| //===-- AMDGPUFeatures.td - AMDGPU Feature Definitions -----*- tablegen -*-===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is distributed under the University of Illinois Open Source | |
| // License. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| def FeatureFP64 : SubtargetFeature<"fp64", | |
| "FP64", | |
| "true", | |
| "Enable double precision operations" | |
| >; | |
| def FeatureFMA : SubtargetFeature<"fmaf", | |
| "FMA", | |
| "true", | |
| "Enable single precision FMA (not as fast as mul+add, but fused)" | |
| >; | |
| // Some instructions do not support denormals despite this flag. Using | |
| // fp32 denormals also causes instructions to run at the double | |
| // precision rate for the device. | |
| def FeatureFP32Denormals : SubtargetFeature<"fp32-denormals", | |
| "FP32Denormals", | |
| "true", | |
| "Enable single precision denormal handling" | |
| >; | |
| class SubtargetFeatureLocalMemorySize <int Value> : SubtargetFeature< | |
| "localmemorysize"#Value, | |
| "LocalMemorySize", | |
| !cast<string>(Value), | |
| "The size of local memory in bytes" | |
| >; | |
| def FeatureLocalMemorySize0 : SubtargetFeatureLocalMemorySize<0>; | |
| def FeatureLocalMemorySize32768 : SubtargetFeatureLocalMemorySize<32768>; | |
| def FeatureLocalMemorySize65536 : SubtargetFeatureLocalMemorySize<65536>; | |
| class SubtargetFeatureWavefrontSize <int Value> : SubtargetFeature< | |
| "wavefrontsize"#Value, | |
| "WavefrontSize", | |
| !cast<string>(Value), | |
| "The number of threads per wavefront" | |
| >; | |
| def FeatureWavefrontSize16 : SubtargetFeatureWavefrontSize<16>; | |
| def FeatureWavefrontSize32 : SubtargetFeatureWavefrontSize<32>; | |
| def FeatureWavefrontSize64 : SubtargetFeatureWavefrontSize<64>; | |
| class SubtargetFeatureGeneration <string Value, string Subtarget, | |
| list<SubtargetFeature> Implies> : | |
| SubtargetFeature <Value, "Gen", Subtarget#"::"#Value, | |
| Value#" GPU generation", Implies>; | |
| def FeatureDX10Clamp : SubtargetFeature<"dx10-clamp", | |
| "DX10Clamp", | |
| "true", | |
| "clamp modifier clamps NaNs to 0.0" | |
| >; | |
| def FeaturePromoteAlloca : SubtargetFeature <"promote-alloca", | |
| "EnablePromoteAlloca", | |
| "true", | |
| "Enable promote alloca pass" | |
| >; | |