//===-- SIModeRegisterDefaults.cpp ------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "SIModeRegisterDefaults.h" using namespace llvm; SIModeRegisterDefaults::SIModeRegisterDefaults(const Function &F) { *this = getDefaultForCallingConv(F.getCallingConv()); StringRef IEEEAttr = F.getFnAttribute("amdgpu-ieee").getValueAsString(); if (!IEEEAttr.empty()) IEEE = IEEEAttr == "true"; StringRef DX10ClampAttr = F.getFnAttribute("amdgpu-dx10-clamp").getValueAsString(); if (!DX10ClampAttr.empty()) DX10Clamp = DX10ClampAttr == "true"; StringRef DenormF32Attr = F.getFnAttribute("denormal-fp-math-f32").getValueAsString(); if (!DenormF32Attr.empty()) FP32Denormals = parseDenormalFPAttribute(DenormF32Attr); StringRef DenormAttr = F.getFnAttribute("denormal-fp-math").getValueAsString(); if (!DenormAttr.empty()) { DenormalMode DenormMode = parseDenormalFPAttribute(DenormAttr); if (DenormF32Attr.empty()) FP32Denormals = DenormMode; FP64FP16Denormals = DenormMode; } }