Index: lib/Target/AMDGPU/AMDGPU.td =================================================================== --- lib/Target/AMDGPU/AMDGPU.td +++ lib/Target/AMDGPU/AMDGPU.td @@ -267,15 +267,6 @@ // Subtarget Features (options and debugging) //===------------------------------------------------------------===// -// 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" ->; - // Denormal handling for fp64 and fp16 is controlled by the same // config register when fp16 supported. // TODO: Do we need a separate f16 setting when not legal? Index: lib/Target/AMDGPU/AMDGPUFeatures.td =================================================================== --- lib/Target/AMDGPU/AMDGPUFeatures.td +++ lib/Target/AMDGPU/AMDGPUFeatures.td @@ -19,6 +19,15 @@ "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 : SubtargetFeature< "localmemorysize"#Value, "LocalMemorySize", Index: test/CodeGen/AMDGPU/target-features.ll =================================================================== --- /dev/null +++ test/CodeGen/AMDGPU/target-features.ll @@ -0,0 +1,118 @@ +; RUN: llc -march=amdgcn -mattr=help 2>&1 | FileCheck %s --check-prefix=GCN +; RUN: llc -march=r600 -mattr=help 2>&1 | FileCheck %s --check-prefix=R600 + + +GCN: 16-bit-insts +GCN: DumpCode +GCN: GFX9 +GCN: SEA_ISLANDS +GCN: SOUTHERN_ISLANDS +GCN: VOLCANIC_ISLANDS +GCN: add-no-carry-insts +GCN: amdgpu-debugger-emit-prologue +GCN: amdgpu-debugger-insert-nops +GCN: aperture-regs +GCN: auto-waitcnt-before-barrier +GCN: ci-insts +GCN: code-object-v3 +GCN: d16-preserves-unused-bits +GCN: dl-insts +GCN: dpp +GCN: dumpcode +GCN: dx10-clamp +GCN: enable-ds128 +GCN: fast-fmaf +GCN: flat-address-space +GCN: flat-for-global +GCN: flat-global-insts +GCN: flat-inst-offsets +GCN: flat-scratch-insts +GCN: fma-mix-insts +GCN: fmaf +GCN: fp-exceptions +GCN: fp16-denormals +GCN: fp32-denormals +GCN: fp64 +GCN: fp64-denormals +GCN: fp64-fp16-denormals +GCN: gcn +GCN: gcn3-encoding +GCN: gfx9-insts +GCN: half-rate-64-ops +GCN: huge-private-buffer +GCN: int-clamp-insts +GCN: inv-2pi-inline-imm +GCN: isaver6.0.0 +GCN: isaver6.0.1 +GCN: isaver7.0.0 +GCN: isaver7.0.1 +GCN: isaver7.0.2 +GCN: isaver7.0.3 +GCN: isaver7.0.4 +GCN: isaver8.0.1 +GCN: isaver8.0.2 +GCN: isaver8.0.3 +GCN: isaver8.1.0 +GCN: isaver9.0.0 +GCN: isaver9.0.2 +GCN: isaver9.0.4 +GCN: isaver9.0.6 +GCN: ldsbankcount16 +GCN: ldsbankcount32 +GCN: load-store-opt +GCN: localmemorysize0 +GCN: localmemorysize32768 +GCN: localmemorysize65536 +GCN: mad-mix-insts +GCN: max-private-element-size-16 +GCN: max-private-element-size-4 +GCN: max-private-element-size-8 +GCN: mimg-r128 +GCN: movrel +GCN: promote-alloca +GCN: s-memrealtime +GCN: scalar-atomics +GCN: scalar-stores +GCN: sdwa +GCN: sdwa-mav +GCN: sdwa-omod +GCN: sdwa-out-mods-vopc +GCN: sdwa-scalar +GCN: sdwa-sdst +GCN: sgpr-init-bug +GCN: si-scheduler +GCN: trap-handler +GCN: unaligned-buffer-access +GCN: unaligned-scratch-access +GCN: unpacked-d16-vmem +GCN: unsafe-ds-offset-folding +GCN: vgpr-index-mode +GCN: vgpr-spilling +GCN: vop3p +GCN: wavefrontsize16 +GCN: wavefrontsize32 +GCN: wavefrontsize64 +GCN: xnack + + +R600: EVERGREEN +R600: HasVertexCache +R600: NORTHERN_ISLANDS +R600: R600 +R600: R600ALUInst +R600: R700 +R600: caymanISA +R600: cfalubug +R600: dx10-clamp +R600: fetch16 +R600: fetch8 +R600: fmaf +R600: fp32-denormals +R600: fp64 +R600: localmemorysize0 +R600: localmemorysize32768 +R600: localmemorysize65536 +R600: promote-alloca +R600: wavefrontsize16 +R600: wavefrontsize32 +R600: wavefrontsize64