Benjamin Kramer d04bfee679 [XLA:CPU] Remove the global/module-level fast math flags
These are deprecated in favor of instruction-level fast math, and most of
LLVM's backend code was updated to use those instead. Not having them gives us
more fine-grained control of fast math flags without loss of performance.

Disabling UnsafeFPMath has the side effect of requiring __truncdfhf2 for
double->half conversions, so provide that. Also always allow FMA formation,
while it's not IEEE754 compliant it never decreases accuracy.

PiperOrigin-RevId: 281801638
Change-Id: I2d96220fefebad4d11b1dab8f75b06ccb88a05bf
2019-11-21 12:02:44 -08:00

31 lines
1.1 KiB
C

/* Copyright 2018 The TensorFlow Authors. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
==============================================================================*/
#ifndef TENSORFLOW_COMPILER_XLA_SERVICE_CPU_RUNTIME_FP16_H_
#define TENSORFLOW_COMPILER_XLA_SERVICE_CPU_RUNTIME_FP16_H_
#include "tensorflow/core/platform/types.h"
// Converts an F32 value to a F16.
extern "C" tensorflow::uint16 __gnu_f2h_ieee(float);
// Converts an F16 value to a F32.
extern "C" float __gnu_h2f_ieee(tensorflow::uint16);
// Converts an F64 value to a F16.
extern "C" tensorflow::uint16 __truncdfhf2(double);
#endif // TENSORFLOW_COMPILER_XLA_SERVICE_CPU_RUNTIME_FP16_H_