1 // Copyright Naoki Shibata and contributors 2010 - 2020. 2 // Distributed under the Boost Software License, Version 1.0. 3 // (See accompanying file LICENSE.txt or copy at 4 // http://www.boost.org/LICENSE_1_0.txt) 5 6 #define CONFIGMAX 4 7 #define CONFIG_STREAM 1 8 #define CONFIG_MT 2 9 10 #define MAXLOG2LEN 32 11 12 typedef struct SleefDFT { 13 uint32_t magic; 14 uint64_t mode, mode2, mode3; 15 int baseTypeID; 16 const void *in; 17 void *out; 18 19 union { 20 struct { 21 uint32_t log2len; 22 23 void **tbl[MAXBUTWIDTH+1]; 24 void *rtCoef0, *rtCoef1; 25 uint32_t **perm; 26 27 void **x0, **x1; 28 29 int isa; 30 int planMode; 31 32 int vecwidth, log2vecwidth; 33 int nThread; 34 35 uint64_t tm[CONFIGMAX][(MAXBUTWIDTH+1)*32]; 36 uint64_t bestTime; 37 int16_t bestPath[32], bestPathConfig[32], pathLen; 38 }; 39 40 struct { 41 int32_t hlen, vlen; 42 int32_t log2hlen, log2vlen; 43 uint64_t tmNoMT, tmMT; 44 struct SleefDFT *instH, *instV; 45 void *tBuf; 46 }; 47 }; 48 } SleefDFT; 49 50 #define SLEEF_MODE2_MT1D (1 << 0) 51 #define SLEEF_MODE3_MT2D (1 << 0) 52 53 #define PLANFILEID "SLEEFDFT0\n" 54 #define ENVVAR "SLEEFDFTPLAN" 55 56 #define SLEEF_MODE_MEASUREBITS (3 << 20) 57 58 void freeTables(SleefDFT *p); 59 uint32_t ilog2(uint32_t q); 60 61 //int PlanManager_loadMeasurementResultsB(SleefDFT *p); 62 //void PlanManager_saveMeasurementResultsB(SleefDFT *p, int butStat); 63 int PlanManager_loadMeasurementResultsT(SleefDFT *p); 64 void PlanManager_saveMeasurementResultsT(SleefDFT *p); 65 int PlanManager_loadMeasurementResultsP(SleefDFT *p, int pathCat); 66 void PlanManager_saveMeasurementResultsP(SleefDFT *p, int pathCat); 67 68 #define GETINT_VECWIDTH 100 69 #define GETINT_DFTPRIORITY 101 70