blob: 59637883b12e4dd7d6f76c49e66356f1a2a57046 [file] [log] [blame]
Tom Stellardc5a154d2018-06-28 23:47:12 +00001//===-- AMDGPUFeatures.td - AMDGPU Feature Definitions -----*- tablegen -*-===//
2//
Chandler Carruth2946cd72019-01-19 08:50:56 +00003// 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
Tom Stellardc5a154d2018-06-28 23:47:12 +00006//
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
Jan Vesely5ba1b4b2018-08-01 15:04:36 +000021// 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
Tom Stellardc5a154d2018-06-28 23:47:12 +000030class 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 Subtarget,
53 list<SubtargetFeature> Implies> :
54 SubtargetFeature <Value, "Gen", Subtarget#"::"#Value,
55 Value#" GPU generation", Implies>;
56
57def FeatureDX10Clamp : SubtargetFeature<"dx10-clamp",
58 "DX10Clamp",
59 "true",
60 "clamp modifier clamps NaNs to 0.0"
61>;
62
63def FeaturePromoteAlloca : SubtargetFeature <"promote-alloca",
64 "EnablePromoteAlloca",
65 "true",
66 "Enable promote alloca pass"
67>;
68