1*6467f958SSadaf Ebrahimi // 2*6467f958SSadaf Ebrahimi // Copyright (c) 2017 The Khronos Group Inc. 3*6467f958SSadaf Ebrahimi // 4*6467f958SSadaf Ebrahimi // Licensed under the Apache License, Version 2.0 (the "License"); 5*6467f958SSadaf Ebrahimi // you may not use this file except in compliance with the License. 6*6467f958SSadaf Ebrahimi // You may obtain a copy of the License at 7*6467f958SSadaf Ebrahimi // 8*6467f958SSadaf Ebrahimi // http://www.apache.org/licenses/LICENSE-2.0 9*6467f958SSadaf Ebrahimi // 10*6467f958SSadaf Ebrahimi // Unless required by applicable law or agreed to in writing, software 11*6467f958SSadaf Ebrahimi // distributed under the License is distributed on an "AS IS" BASIS, 12*6467f958SSadaf Ebrahimi // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*6467f958SSadaf Ebrahimi // See the License for the specific language governing permissions and 14*6467f958SSadaf Ebrahimi // limitations under the License. 15*6467f958SSadaf Ebrahimi // 16*6467f958SSadaf Ebrahimi #ifndef __ROUNDING_MODE_H__ 17*6467f958SSadaf Ebrahimi #define __ROUNDING_MODE_H__ 18*6467f958SSadaf Ebrahimi 19*6467f958SSadaf Ebrahimi #include "compat.h" 20*6467f958SSadaf Ebrahimi 21*6467f958SSadaf Ebrahimi #if (defined(_WIN32) && defined(_MSC_VER)) 22*6467f958SSadaf Ebrahimi #include "errorHelpers.h" 23*6467f958SSadaf Ebrahimi #include "testHarness.h" 24*6467f958SSadaf Ebrahimi #endif 25*6467f958SSadaf Ebrahimi 26*6467f958SSadaf Ebrahimi typedef enum 27*6467f958SSadaf Ebrahimi { 28*6467f958SSadaf Ebrahimi kDefaultRoundingMode = 0, 29*6467f958SSadaf Ebrahimi kRoundToNearestEven, 30*6467f958SSadaf Ebrahimi kRoundUp, 31*6467f958SSadaf Ebrahimi kRoundDown, 32*6467f958SSadaf Ebrahimi kRoundTowardZero, 33*6467f958SSadaf Ebrahimi 34*6467f958SSadaf Ebrahimi kRoundingModeCount 35*6467f958SSadaf Ebrahimi } RoundingMode; 36*6467f958SSadaf Ebrahimi 37*6467f958SSadaf Ebrahimi typedef enum 38*6467f958SSadaf Ebrahimi { 39*6467f958SSadaf Ebrahimi kuchar = 0, 40*6467f958SSadaf Ebrahimi kchar = 1, 41*6467f958SSadaf Ebrahimi kushort = 2, 42*6467f958SSadaf Ebrahimi kshort = 3, 43*6467f958SSadaf Ebrahimi kuint = 4, 44*6467f958SSadaf Ebrahimi kint = 5, 45*6467f958SSadaf Ebrahimi kfloat = 6, 46*6467f958SSadaf Ebrahimi kdouble = 7, 47*6467f958SSadaf Ebrahimi kulong = 8, 48*6467f958SSadaf Ebrahimi klong = 9, 49*6467f958SSadaf Ebrahimi 50*6467f958SSadaf Ebrahimi // This goes last 51*6467f958SSadaf Ebrahimi kTypeCount 52*6467f958SSadaf Ebrahimi } Type; 53*6467f958SSadaf Ebrahimi 54*6467f958SSadaf Ebrahimi extern RoundingMode set_round(RoundingMode r, Type outType); 55*6467f958SSadaf Ebrahimi extern RoundingMode get_round(void); 56*6467f958SSadaf Ebrahimi extern void *FlushToZero(void); 57*6467f958SSadaf Ebrahimi extern void UnFlushToZero(void *p); 58*6467f958SSadaf Ebrahimi 59*6467f958SSadaf Ebrahimi 60*6467f958SSadaf Ebrahimi #endif /* __ROUNDING_MODE_H__ */ 61