diff options
-rw-r--r-- | src/corelib/global/global.pri | 2 | ||||
-rw-r--r-- | src/tools/qfloat16-tables/gen_qfloat16_tables.cpp | 96 | ||||
-rw-r--r-- | src/tools/qfloat16-tables/qfloat16-tables.pro | 2 |
3 files changed, 44 insertions, 56 deletions
diff --git a/src/corelib/global/global.pri b/src/corelib/global/global.pri index 10af46b41a..b4d9e40f95 100644 --- a/src/corelib/global/global.pri +++ b/src/corelib/global/global.pri @@ -129,7 +129,7 @@ QMAKE_QFLOAT16_TABLES_GENERATE = global/qfloat16.h qtPrepareTool(QMAKE_QFLOAT16_TABLES, qfloat16-tables) -qfloat16_tables.commands = $$QMAKE_QFLOAT16_TABLES ${QMAKE_FILE_OUT} +qfloat16_tables.commands = $$QMAKE_QFLOAT16_TABLES > ${QMAKE_FILE_OUT} qfloat16_tables.output = global/qfloat16tables.cpp qfloat16_tables.depends = $$QMAKE_QFLOAT16_TABLES_EXE qfloat16_tables.input = QMAKE_QFLOAT16_TABLES_GENERATE diff --git a/src/tools/qfloat16-tables/gen_qfloat16_tables.cpp b/src/tools/qfloat16-tables/gen_qfloat16_tables.cpp index 17fc978039..5aca0235e3 100644 --- a/src/tools/qfloat16-tables/gen_qfloat16_tables.cpp +++ b/src/tools/qfloat16-tables/gen_qfloat16_tables.cpp @@ -1,6 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2016 by Southwest Research Institute (R) +** Copyright (C) 2019 Intel Corporation. ** Contact: http://www.qt-project.org/legal ** ** This file is part of the QtCore module of the Qt Toolkit. @@ -37,13 +38,13 @@ ** ****************************************************************************/ -#include <qfile.h> -#include <qdebug.h> +#include <stdint.h> +#include <stdio.h> -quint32 convertmantissa(qint32 i) +uint32_t convertmantissa(int32_t i) { - quint32 m = i << 13; // Zero pad mantissa bits - quint32 e = 0; // Zero exponent + uint32_t m = i << 13; // Zero pad mantissa bits + uint32_t e = 0; // Zero exponent while (!(m & 0x00800000)) { // While not normalized e -= 0x00800000; // Decrement exponent (1<<23) @@ -56,60 +57,48 @@ quint32 convertmantissa(qint32 i) // we first build these tables up and then print them out as a separate step in order // to more closely map the implementation given in the paper. -quint32 basetable[512]; -quint32 shifttable[512]; +uint32_t basetable[512]; +uint32_t shifttable[512]; -#define PRINTHEX(a) "0x" + QByteArray::number(a,16).toUpper() + "U,\n" - -qint32 main(qint32 argc, char **argv) +int main() { - if (argc < 2) { - qWarning() << "Must provide output filename as argument."; - return -1; - } - - QFile fid(QFile::decodeName(argv[1])); - if (!fid.open(QIODevice::WriteOnly | QIODevice::Text)) { - qWarning() << "Abort: Failed to open/create file" << fid.fileName(); - return -1; - } - quint32 i; + uint32_t i; - fid.write("/* This file was generated by gen_qfloat16_tables.cpp */\n\n"); - fid.write("#include <QtCore/qfloat16.h>\n\n"); + printf("/* This file was generated by gen_qfloat16_tables.cpp */\n\n"); + printf("#include <QtCore/qfloat16.h>\n\n"); - fid.write("QT_BEGIN_NAMESPACE\n\n"); - fid.write("#if !defined(__F16C__) && !defined(__ARM_FP16_FORMAT_IEEE)\n\n"); + printf("QT_BEGIN_NAMESPACE\n\n"); + printf("#if !defined(__F16C__) && !defined(__ARM_FP16_FORMAT_IEEE)\n\n"); - fid.write("const quint32 qfloat16::mantissatable[2048] = {\n"); - fid.write("0,\n"); + printf("const quint32 qfloat16::mantissatable[2048] = {\n"); + printf("0,\n"); for (i = 1; i < 1024; i++) - fid.write(PRINTHEX(convertmantissa(i))); + printf("0x%XU,\n", convertmantissa(i)); for (i = 1024; i < 2048; i++) - fid.write(PRINTHEX(0x38000000U + ((i - 1024) << 13))); - fid.write("};\n\n"); + printf("0x%XU,\n", 0x38000000U + ((i - 1024) << 13)); + printf("};\n\n"); - fid.write("const quint32 qfloat16::exponenttable[64] = {\n"); - fid.write("0,\n"); + printf("const quint32 qfloat16::exponenttable[64] = {\n"); + printf("0,\n"); for (i = 1; i < 31; i++) - fid.write(PRINTHEX(i << 23)); - fid.write("0x47800000U,\n"); // 31 - fid.write("0x80000000U,\n"); // 32 + printf("0x%XU,\n", i << 23); + printf("0x47800000U,\n"); // 31 + printf("0x80000000U,\n"); // 32 for (i = 33; i < 63; i++) - fid.write(PRINTHEX(0x80000000U + ((i - 32) << 23))); - fid.write("0xC7800000U,\n"); // 63 - fid.write("};\n\n"); + printf("0x%XU,\n", 0x80000000U + ((i - 32) << 23)); + printf("0xC7800000U,\n"); // 63 + printf("};\n\n"); - fid.write("const quint32 qfloat16::offsettable[64] = {\n"); - fid.write("0,\n"); + printf("const quint32 qfloat16::offsettable[64] = {\n"); + printf("0,\n"); for (i = 1; i < 32; i++) - fid.write("1024U,\n"); - fid.write("0,\n"); + printf("1024U,\n"); + printf("0,\n"); for (i = 33; i < 64; i++) - fid.write("1024U,\n"); - fid.write("};\n\n"); + printf("1024U,\n"); + printf("};\n\n"); - qint32 e; + int32_t e; for (i = 0; i < 256; ++i) { e = i - 127; if (e < -24) { // Very small numbers map to zero @@ -144,20 +133,19 @@ qint32 main(qint32 argc, char **argv) } } - fid.write("const quint32 qfloat16::basetable[512] = {\n"); + printf("const quint32 qfloat16::basetable[512] = {\n"); for (i = 0; i < 512; i++) - fid.write(PRINTHEX(basetable[i])); + printf("0x%XU,\n", basetable[i]); - fid.write("};\n\n"); + printf("};\n\n"); - fid.write("const quint32 qfloat16::shifttable[512] = {\n"); + printf("const quint32 qfloat16::shifttable[512] = {\n"); for (i = 0; i < 512; i++) - fid.write(PRINTHEX(shifttable[i])); + printf("0x%XU,\n", shifttable[i]); - fid.write("};\n\n"); + printf("};\n\n"); - fid.write("#endif // !__F16C__ && !__ARM_FP16_FORMAT_IEEE\n\n"); - fid.write("QT_END_NAMESPACE\n"); - fid.close(); + printf("#endif // !__F16C__ && !__ARM_FP16_FORMAT_IEEE\n\n"); + printf("QT_END_NAMESPACE\n"); return 0; } diff --git a/src/tools/qfloat16-tables/qfloat16-tables.pro b/src/tools/qfloat16-tables/qfloat16-tables.pro index a7d10ac197..12878ce6c7 100644 --- a/src/tools/qfloat16-tables/qfloat16-tables.pro +++ b/src/tools/qfloat16-tables/qfloat16-tables.pro @@ -1,6 +1,6 @@ option(host_build) -CONFIG += force_bootstrap +CONFIG -= qt SOURCES += gen_qfloat16_tables.cpp load(qt_tool) |