// // Copyright (c) 2017 The Khronos Group Inc. // // 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 BASIC_TEST_CONVERSIONS_H #define BASIC_TEST_CONVERSIONS_H #include "harness/compat.h" #if !defined(_WIN32) #include #endif #include "harness/errorHelpers.h" #include "harness/rounding_mode.h" #include #if defined( __APPLE__ ) #include #else #include #endif #include "harness/mt19937.h" typedef void (*Convert)( void *dest, void *src, size_t ); #define kVectorSizeCount 6 #define kMaxVectorSize 16 typedef enum { kUnsaturated = 0, kSaturated, kSaturationModeCount }SaturationMode; extern Convert gConversions[kTypeCount][kTypeCount]; // [dest format][source format] extern Convert gSaturatedConversions[kTypeCount][kTypeCount]; // [dest format][source format] extern const char *gTypeNames[ kTypeCount ]; extern const char *gRoundingModeNames[ kRoundingModeCount ]; // { "", "_rte", "_rtp", "_rtn", "_rtz" } extern const char *gSaturationNames[ kSaturationModeCount ]; // { "", "_sat" } extern const char *gVectorSizeNames[kVectorSizeCount]; // { "", "2", "4", "8", "16" } extern size_t gTypeSizes[ kTypeCount ]; extern int gIsEmbedded; //Functions for clamping floating point numbers into the representable range for the type typedef float (*clampf)( float ); typedef double (*clampd)( double ); extern clampf gClampFloat[ kTypeCount ][kRoundingModeCount]; extern clampd gClampDouble[ kTypeCount ][kRoundingModeCount]; typedef void (*InitDataFunc)( void *dest, SaturationMode, RoundingMode, Type destType, uint64_t start, int count, MTdata d ); extern InitDataFunc gInitFunctions[ kTypeCount ]; typedef int (*CheckResults)( void *out1, void *out2, void *allowZ, uint32_t count, int vectorSize ); extern CheckResults gCheckResults[ kTypeCount ]; #endif /* BASIC_TEST_CONVERSIONS_H */