From 5e40d3d982d014cd01db4dbe6aecc6ea6baf840a Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 31 May 2019 13:35:04 -0700 Subject: qfloat16: Check in the tables to Git It's a 38k source file, which makes it MUCH smaller than other generated files like qlocale_data_p.h (982k) and qunicodetables.cpp (718k). The constants are platform-independent, since they are defined by IEEE 754, so they will never change. The generator tool is moved to util/ and removed from the build. That's one fewer bootstrapped tool to have to worry about. The output file is committed as .cpp so it won't get installed. Fixes: QTBUG-76165 Change-Id: I2b1955a995ad40f3b89afffd15a3ded58dc3e35f Reviewed-by: Allan Sandfeld Jensen --- .gitignore | 2 - src/corelib/global/global.pri | 15 +- src/corelib/global/qfloat16.cpp | 1 + src/corelib/global/qfloat16tables.cpp | 3266 +++++++++++++++++++++ src/src.pro | 10 +- src/tools/qfloat16-tables/gen_qfloat16_tables.cpp | 151 - src/tools/qfloat16-tables/qfloat16-tables.pro | 9 - util/qfloat16-tables/gen_qfloat16_tables.cpp | 151 + util/qfloat16-tables/qfloat16-tables.pro | 2 + 9 files changed, 3427 insertions(+), 180 deletions(-) create mode 100644 src/corelib/global/qfloat16tables.cpp delete mode 100644 src/tools/qfloat16-tables/gen_qfloat16_tables.cpp delete mode 100644 src/tools/qfloat16-tables/qfloat16-tables.pro create mode 100644 util/qfloat16-tables/gen_qfloat16_tables.cpp create mode 100644 util/qfloat16-tables/qfloat16-tables.pro diff --git a/.gitignore b/.gitignore index b9188d84f7..e4079c6b4d 100644 --- a/.gitignore +++ b/.gitignore @@ -56,8 +56,6 @@ qt*-config.pri /src/angle/src/QtANGLE/libANGLE/ /src/angle/src/libGLESv2/libANGLE/ -/src/corelib/global/qfloat16tables.cpp - /examples/*/*/* !/examples/*/*/*[.]* !/examples/*/*/README diff --git a/src/corelib/global/global.pri b/src/corelib/global/global.pri index b4d9e40f95..1da69aba9b 100644 --- a/src/corelib/global/global.pri +++ b/src/corelib/global/global.pri @@ -40,6 +40,10 @@ SOURCES += \ global/qrandom.cpp \ global/qhooks.cpp +# To get listed in IDEs +false: SOURCES += \ + global/qfloat16tables.cpp + # Only add global/qfloat16_f16c.c if qfloat16.cpp can't #include it. # Any compiler: if it is already generating F16C code, let qfloat16.cpp do it # Clang: ICE if not generating F16C code, so use qfloat16_f16c.c @@ -124,14 +128,3 @@ gcc:ltcg { } else { SOURCES += $$VERSIONTAGGING_SOURCES } - -QMAKE_QFLOAT16_TABLES_GENERATE = global/qfloat16.h - -qtPrepareTool(QMAKE_QFLOAT16_TABLES, qfloat16-tables) - -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 -qfloat16_tables.variable_out = SOURCES -QMAKE_EXTRA_COMPILERS += qfloat16_tables diff --git a/src/corelib/global/qfloat16.cpp b/src/corelib/global/qfloat16.cpp index 68763c0606..ff2997b73a 100644 --- a/src/corelib/global/qfloat16.cpp +++ b/src/corelib/global/qfloat16.cpp @@ -239,6 +239,7 @@ Q_CORE_EXPORT void qFloatFromFloat16(float *out, const qfloat16 *in, qsizetype l QT_END_NAMESPACE +#include "qfloat16tables.cpp" #ifdef QFLOAT16_INCLUDE_FAST # include "qfloat16_f16c.c" #endif diff --git a/src/corelib/global/qfloat16tables.cpp b/src/corelib/global/qfloat16tables.cpp new file mode 100644 index 0000000000..3d764937d7 --- /dev/null +++ b/src/corelib/global/qfloat16tables.cpp @@ -0,0 +1,3266 @@ +/**************************************************************************** +** +** 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. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/* This file was generated by gen_qfloat16_tables.cpp */ + +#include + +QT_BEGIN_NAMESPACE + +#if !defined(__F16C__) && !defined(__ARM_FP16_FORMAT_IEEE) + +const quint32 qfloat16::mantissatable[2048] = { +0, +0x33800000U, +0x34000000U, +0x34400000U, +0x34800000U, +0x34A00000U, +0x34C00000U, +0x34E00000U, +0x35000000U, +0x35100000U, +0x35200000U, +0x35300000U, +0x35400000U, +0x35500000U, +0x35600000U, +0x35700000U, +0x35800000U, +0x35880000U, +0x35900000U, +0x35980000U, +0x35A00000U, +0x35A80000U, +0x35B00000U, +0x35B80000U, +0x35C00000U, +0x35C80000U, +0x35D00000U, +0x35D80000U, +0x35E00000U, +0x35E80000U, +0x35F00000U, +0x35F80000U, +0x36000000U, +0x36040000U, +0x36080000U, +0x360C0000U, +0x36100000U, +0x36140000U, +0x36180000U, +0x361C0000U, +0x36200000U, +0x36240000U, +0x36280000U, +0x362C0000U, +0x36300000U, +0x36340000U, +0x36380000U, +0x363C0000U, +0x36400000U, +0x36440000U, +0x36480000U, +0x364C0000U, +0x36500000U, +0x36540000U, +0x36580000U, +0x365C0000U, +0x36600000U, +0x36640000U, +0x36680000U, +0x366C0000U, +0x36700000U, +0x36740000U, +0x36780000U, +0x367C0000U, +0x36800000U, +0x36820000U, +0x36840000U, +0x36860000U, +0x36880000U, +0x368A0000U, +0x368C0000U, +0x368E0000U, +0x36900000U, +0x36920000U, +0x36940000U, +0x36960000U, +0x36980000U, +0x369A0000U, +0x369C0000U, +0x369E0000U, +0x36A00000U, +0x36A20000U, +0x36A40000U, +0x36A60000U, +0x36A80000U, +0x36AA0000U, +0x36AC0000U, +0x36AE0000U, +0x36B00000U, +0x36B20000U, +0x36B40000U, +0x36B60000U, +0x36B80000U, +0x36BA0000U, +0x36BC0000U, +0x36BE0000U, +0x36C00000U, +0x36C20000U, +0x36C40000U, +0x36C60000U, +0x36C80000U, +0x36CA0000U, +0x36CC0000U, +0x36CE0000U, +0x36D00000U, +0x36D20000U, +0x36D40000U, +0x36D60000U, +0x36D80000U, +0x36DA0000U, +0x36DC0000U, +0x36DE0000U, +0x36E00000U, +0x36E20000U, +0x36E40000U, +0x36E60000U, +0x36E80000U, +0x36EA0000U, +0x36EC0000U, +0x36EE0000U, +0x36F00000U, +0x36F20000U, +0x36F40000U, +0x36F60000U, +0x36F80000U, +0x36FA0000U, +0x36FC0000U, +0x36FE0000U, +0x37000000U, +0x37010000U, +0x37020000U, +0x37030000U, +0x37040000U, +0x37050000U, +0x37060000U, +0x37070000U, +0x37080000U, +0x37090000U, +0x370A0000U, +0x370B0000U, +0x370C0000U, +0x370D0000U, +0x370E0000U, +0x370F0000U, +0x37100000U, +0x37110000U, +0x37120000U, +0x37130000U, +0x37140000U, +0x37150000U, +0x37160000U, +0x37170000U, +0x37180000U, +0x37190000U, +0x371A0000U, +0x371B0000U, +0x371C0000U, +0x371D0000U, +0x371E0000U, +0x371F0000U, +0x37200000U, +0x37210000U, +0x37220000U, +0x37230000U, +0x37240000U, +0x37250000U, +0x37260000U, +0x37270000U, +0x37280000U, +0x37290000U, +0x372A0000U, +0x372B0000U, +0x372C0000U, +0x372D0000U, +0x372E0000U, +0x372F0000U, +0x37300000U, +0x37310000U, +0x37320000U, +0x37330000U, +0x37340000U, +0x37350000U, +0x37360000U, +0x37370000U, +0x37380000U, +0x37390000U, +0x373A0000U, +0x373B0000U, +0x373C0000U, +0x373D0000U, +0x373E0000U, +0x373F0000U, +0x37400000U, +0x37410000U, +0x37420000U, +0x37430000U, +0x37440000U, +0x37450000U, +0x37460000U, +0x37470000U, +0x37480000U, +0x37490000U, +0x374A0000U, +0x374B0000U, +0x374C0000U, +0x374D0000U, +0x374E0000U, +0x374F0000U, +0x37500000U, +0x37510000U, +0x37520000U, +0x37530000U, +0x37540000U, +0x37550000U, +0x37560000U, +0x37570000U, +0x37580000U, +0x37590000U, +0x375A0000U, +0x375B0000U, +0x375C0000U, +0x375D0000U, +0x375E0000U, +0x375F0000U, +0x37600000U, +0x37610000U, +0x37620000U, +0x37630000U, +0x37640000U, +0x37650000U, +0x37660000U, +0x37670000U, +0x37680000U, +0x37690000U, +0x376A0000U, +0x376B0000U, +0x376C0000U, +0x376D0000U, +0x376E0000U, +0x376F0000U, +0x37700000U, +0x37710000U, +0x37720000U, +0x37730000U, +0x37740000U, +0x37750000U, +0x37760000U, +0x37770000U, +0x37780000U, +0x37790000U, +0x377A0000U, +0x377B0000U, +0x377C0000U, +0x377D0000U, +0x377E0000U, +0x377F0000U, +0x37800000U, +0x37808000U, +0x37810000U, +0x37818000U, +0x37820000U, +0x37828000U, +0x37830000U, +0x37838000U, +0x37840000U, +0x37848000U, +0x37850000U, +0x37858000U, +0x37860000U, +0x37868000U, +0x37870000U, +0x37878000U, +0x37880000U, +0x37888000U, +0x37890000U, +0x37898000U, +0x378A0000U, +0x378A8000U, +0x378B0000U, +0x378B8000U, +0x378C0000U, +0x378C8000U, +0x378D0000U, +0x378D8000U, +0x378E0000U, +0x378E8000U, +0x378F0000U, +0x378F8000U, +0x37900000U, +0x37908000U, +0x37910000U, +0x37918000U, +0x37920000U, +0x37928000U, +0x37930000U, +0x37938000U, +0x37940000U, +0x37948000U, +0x37950000U, +0x37958000U, +0x37960000U, +0x37968000U, +0x37970000U, +0x37978000U, +0x37980000U, +0x37988000U, +0x37990000U, +0x37998000U, +0x379A0000U, +0x379A8000U, +0x379B0000U, +0x379B8000U, +0x379C0000U, +0x379C8000U, +0x379D0000U, +0x379D8000U, +0x379E0000U, +0x379E8000U, +0x379F0000U, +0x379F8000U, +0x37A00000U, +0x37A08000U, +0x37A10000U, +0x37A18000U, +0x37A20000U, +0x37A28000U, +0x37A30000U, +0x37A38000U, +0x37A40000U, +0x37A48000U, +0x37A50000U, +0x37A58000U, +0x37A60000U, +0x37A68000U, +0x37A70000U, +0x37A78000U, +0x37A80000U, +0x37A88000U, +0x37A90000U, +0x37A98000U, +0x37AA0000U, +0x37AA8000U, +0x37AB0000U, +0x37AB8000U, +0x37AC0000U, +0x37AC8000U, +0x37AD0000U, +0x37AD8000U, +0x37AE0000U, +0x37AE8000U, +0x37AF0000U, +0x37AF8000U, +0x37B00000U, +0x37B08000U, +0x37B10000U, +0x37B18000U, +0x37B20000U, +0x37B28000U, +0x37B30000U, +0x37B38000U, +0x37B40000U, +0x37B48000U, +0x37B50000U, +0x37B58000U, +0x37B60000U, +0x37B68000U, +0x37B70000U, +0x37B78000U, +0x37B80000U, +0x37B88000U, +0x37B90000U, +0x37B98000U, +0x37BA0000U, +0x37BA8000U, +0x37BB0000U, +0x37BB8000U, +0x37BC0000U, +0x37BC8000U, +0x37BD0000U, +0x37BD8000U, +0x37BE0000U, +0x37BE8000U, +0x37BF0000U, +0x37BF8000U, +0x37C00000U, +0x37C08000U, +0x37C10000U, +0x37C18000U, +0x37C20000U, +0x37C28000U, +0x37C30000U, +0x37C38000U, +0x37C40000U, +0x37C48000U, +0x37C50000U, +0x37C58000U, +0x37C60000U, +0x37C68000U, +0x37C70000U, +0x37C78000U, +0x37C80000U, +0x37C88000U, +0x37C90000U, +0x37C98000U, +0x37CA0000U, +0x37CA8000U, +0x37CB0000U, +0x37CB8000U, +0x37CC0000U, +0x37CC8000U, +0x37CD0000U, +0x37CD8000U, +0x37CE0000U, +0x37CE8000U, +0x37CF0000U, +0x37CF8000U, +0x37D00000U, +0x37D08000U, +0x37D10000U, +0x37D18000U, +0x37D20000U, +0x37D28000U, +0x37D30000U, +0x37D38000U, +0x37D40000U, +0x37D48000U, +0x37D50000U, +0x37D58000U, +0x37D60000U, +0x37D68000U, +0x37D70000U, +0x37D78000U, +0x37D80000U, +0x37D88000U, +0x37D90000U, +0x37D98000U, +0x37DA0000U, +0x37DA8000U, +0x37DB0000U, +0x37DB8000U, +0x37DC0000U, +0x37DC8000U, +0x37DD0000U, +0x37DD8000U, +0x37DE0000U, +0x37DE8000U, +0x37DF0000U, +0x37DF8000U, +0x37E00000U, +0x37E08000U, +0x37E10000U, +0x37E18000U, +0x37E20000U, +0x37E28000U, +0x37E30000U, +0x37E38000U, +0x37E40000U, +0x37E48000U, +0x37E50000U, +0x37E58000U, +0x37E60000U, +0x37E68000U, +0x37E70000U, +0x37E78000U, +0x37E80000U, +0x37E88000U, +0x37E90000U, +0x37E98000U, +0x37EA0000U, +0x37EA8000U, +0x37EB0000U, +0x37EB8000U, +0x37EC0000U, +0x37EC8000U, +0x37ED0000U, +0x37ED8000U, +0x37EE0000U, +0x37EE8000U, +0x37EF0000U, +0x37EF8000U, +0x37F00000U, +0x37F08000U, +0x37F10000U, +0x37F18000U, +0x37F20000U, +0x37F28000U, +0x37F30000U, +0x37F38000U, +0x37F40000U, +0x37F48000U, +0x37F50000U, +0x37F58000U, +0x37F60000U, +0x37F68000U, +0x37F70000U, +0x37F78000U, +0x37F80000U, +0x37F88000U, +0x37F90000U, +0x37F98000U, +0x37FA0000U, +0x37FA8000U, +0x37FB0000U, +0x37FB8000U, +0x37FC0000U, +0x37FC8000U, +0x37FD0000U, +0x37FD8000U, +0x37FE0000U, +0x37FE8000U, +0x37FF0000U, +0x37FF8000U, +0x38000000U, +0x38004000U, +0x38008000U, +0x3800C000U, +0x38010000U, +0x38014000U, +0x38018000U, +0x3801C000U, +0x38020000U, +0x38024000U, +0x38028000U, +0x3802C000U, +0x38030000U, +0x38034000U, +0x38038000U, +0x3803C000U, +0x38040000U, +0x38044000U, +0x38048000U, +0x3804C000U, +0x38050000U, +0x38054000U, +0x38058000U, +0x3805C000U, +0x38060000U, +0x38064000U, +0x38068000U, +0x3806C000U, +0x38070000U, +0x38074000U, +0x38078000U, +0x3807C000U, +0x38080000U, +0x38084000U, +0x38088000U, +0x3808C000U, +0x38090000U, +0x38094000U, +0x38098000U, +0x3809C000U, +0x380A0000U, +0x380A4000U, +0x380A8000U, +0x380AC000U, +0x380B0000U, +0x380B4000U, +0x380B8000U, +0x380BC000U, +0x380C0000U, +0x380C4000U, +0x380C8000U, +0x380CC000U, +0x380D0000U, +0x380D4000U, +0x380D8000U, +0x380DC000U, +0x380E0000U, +0x380E4000U, +0x380E8000U, +0x380EC000U, +0x380F0000U, +0x380F4000U, +0x380F8000U, +0x380FC000U, +0x38100000U, +0x38104000U, +0x38108000U, +0x3810C000U, +0x38110000U, +0x38114000U, +0x38118000U, +0x3811C000U, +0x38120000U, +0x38124000U, +0x38128000U, +0x3812C000U, +0x38130000U, +0x38134000U, +0x38138000U, +0x3813C000U, +0x38140000U, +0x38144000U, +0x38148000U, +0x3814C000U, +0x38150000U, +0x38154000U, +0x38158000U, +0x3815C000U, +0x38160000U, +0x38164000U, +0x38168000U, +0x3816C000U, +0x38170000U, +0x38174000U, +0x38178000U, +0x3817C000U, +0x38180000U, +0x38184000U, +0x38188000U, +0x3818C000U, +0x38190000U, +0x38194000U, +0x38198000U, +0x3819C000U, +0x381A0000U, +0x381A4000U, +0x381A8000U, +0x381AC000U, +0x381B0000U, +0x381B4000U, +0x381B8000U, +0x381BC000U, +0x381C0000U, +0x381C4000U, +0x381C8000U, +0x381CC000U, +0x381D0000U, +0x381D4000U, +0x381D8000U, +0x381DC000U, +0x381E0000U, +0x381E4000U, +0x381E8000U, +0x381EC000U, +0x381F0000U, +0x381F4000U, +0x381F8000U, +0x381FC000U, +0x38200000U, +0x38204000U, +0x38208000U, +0x3820C000U, +0x38210000U, +0x38214000U, +0x38218000U, +0x3821C000U, +0x38220000U, +0x38224000U, +0x38228000U, +0x3822C000U, +0x38230000U, +0x38234000U, +0x38238000U, +0x3823C000U, +0x38240000U, +0x38244000U, +0x38248000U, +0x3824C000U, +0x38250000U, +0x38254000U, +0x38258000U, +0x3825C000U, +0x38260000U, +0x38264000U, +0x38268000U, +0x3826C000U, +0x38270000U, +0x38274000U, +0x38278000U, +0x3827C000U, +0x38280000U, +0x38284000U, +0x38288000U, +0x3828C000U, +0x38290000U, +0x38294000U, +0x38298000U, +0x3829C000U, +0x382A0000U, +0x382A4000U, +0x382A8000U, +0x382AC000U, +0x382B0000U, +0x382B4000U, +0x382B8000U, +0x382BC000U, +0x382C0000U, +0x382C4000U, +0x382C8000U, +0x382CC000U, +0x382D0000U, +0x382D4000U, +0x382D8000U, +0x382DC000U, +0x382E0000U, +0x382E4000U, +0x382E8000U, +0x382EC000U, +0x382F0000U, +0x382F4000U, +0x382F8000U, +0x382FC000U, +0x38300000U, +0x38304000U, +0x38308000U, +0x3830C000U, +0x38310000U, +0x38314000U, +0x38318000U, +0x3831C000U, +0x38320000U, +0x38324000U, +0x38328000U, +0x3832C000U, +0x38330000U, +0x38334000U, +0x38338000U, +0x3833C000U, +0x38340000U, +0x38344000U, +0x38348000U, +0x3834C000U, +0x38350000U, +0x38354000U, +0x38358000U, +0x3835C000U, +0x38360000U, +0x38364000U, +0x38368000U, +0x3836C000U, +0x38370000U, +0x38374000U, +0x38378000U, +0x3837C000U, +0x38380000U, +0x38384000U, +0x38388000U, +0x3838C000U, +0x38390000U, +0x38394000U, +0x38398000U, +0x3839C000U, +0x383A0000U, +0x383A4000U, +0x383A8000U, +0x383AC000U, +0x383B0000U, +0x383B4000U, +0x383B8000U, +0x383BC000U, +0x383C0000U, +0x383C4000U, +0x383C8000U, +0x383CC000U, +0x383D0000U, +0x383D4000U, +0x383D8000U, +0x383DC000U, +0x383E0000U, +0x383E4000U, +0x383E8000U, +0x383EC000U, +0x383F0000U, +0x383F4000U, +0x383F8000U, +0x383FC000U, +0x38400000U, +0x38404000U, +0x38408000U, +0x3840C000U, +0x38410000U, +0x38414000U, +0x38418000U, +0x3841C000U, +0x38420000U, +0x38424000U, +0x38428000U, +0x3842C000U, +0x38430000U, +0x38434000U, +0x38438000U, +0x3843C000U, +0x38440000U, +0x38444000U, +0x38448000U, +0x3844C000U, +0x38450000U, +0x38454000U, +0x38458000U, +0x3845C000U, +0x38460000U, +0x38464000U, +0x38468000U, +0x3846C000U, +0x38470000U, +0x38474000U, +0x38478000U, +0x3847C000U, +0x38480000U, +0x38484000U, +0x38488000U, +0x3848C000U, +0x38490000U, +0x38494000U, +0x38498000U, +0x3849C000U, +0x384A0000U, +0x384A4000U, +0x384A8000U, +0x384AC000U, +0x384B0000U, +0x384B4000U, +0x384B8000U, +0x384BC000U, +0x384C0000U, +0x384C4000U, +0x384C8000U, +0x384CC000U, +0x384D0000U, +0x384D4000U, +0x384D8000U, +0x384DC000U, +0x384E0000U, +0x384E4000U, +0x384E8000U, +0x384EC000U, +0x384F0000U, +0x384F4000U, +0x384F8000U, +0x384FC000U, +0x38500000U, +0x38504000U, +0x38508000U, +0x3850C000U, +0x38510000U, +0x38514000U, +0x38518000U, +0x3851C000U, +0x38520000U, +0x38524000U, +0x38528000U, +0x3852C000U, +0x38530000U, +0x38534000U, +0x38538000U, +0x3853C000U, +0x38540000U, +0x38544000U, +0x38548000U, +0x3854C000U, +0x38550000U, +0x38554000U, +0x38558000U, +0x3855C000U, +0x38560000U, +0x38564000U, +0x38568000U, +0x3856C000U, +0x38570000U, +0x38574000U, +0x38578000U, +0x3857C000U, +0x38580000U, +0x38584000U, +0x38588000U, +0x3858C000U, +0x38590000U, +0x38594000U, +0x38598000U, +0x3859C000U, +0x385A0000U, +0x385A4000U, +0x385A8000U, +0x385AC000U, +0x385B0000U, +0x385B4000U, +0x385B8000U, +0x385BC000U, +0x385C0000U, +0x385C4000U, +0x385C8000U, +0x385CC000U, +0x385D0000U, +0x385D4000U, +0x385D8000U, +0x385DC000U, +0x385E0000U, +0x385E4000U, +0x385E8000U, +0x385EC000U, +0x385F0000U, +0x385F4000U, +0x385F8000U, +0x385FC000U, +0x38600000U, +0x38604000U, +0x38608000U, +0x3860C000U, +0x38610000U, +0x38614000U, +0x38618000U, +0x3861C000U, +0x38620000U, +0x38624000U, +0x38628000U, +0x3862C000U, +0x38630000U, +0x38634000U, +0x38638000U, +0x3863C000U, +0x38640000U, +0x38644000U, +0x38648000U, +0x3864C000U, +0x38650000U, +0x38654000U, +0x38658000U, +0x3865C000U, +0x38660000U, +0x38664000U, +0x38668000U, +0x3866C000U, +0x38670000U, +0x38674000U, +0x38678000U, +0x3867C000U, +0x38680000U, +0x38684000U, +0x38688000U, +0x3868C000U, +0x38690000U, +0x38694000U, +0x38698000U, +0x3869C000U, +0x386A0000U, +0x386A4000U, +0x386A8000U, +0x386AC000U, +0x386B0000U, +0x386B4000U, +0x386B8000U, +0x386BC000U, +0x386C0000U, +0x386C4000U, +0x386C8000U, +0x386CC000U, +0x386D0000U, +0x386D4000U, +0x386D8000U, +0x386DC000U, +0x386E0000U, +0x386E4000U, +0x386E8000U, +0x386EC000U, +0x386F0000U, +0x386F4000U, +0x386F8000U, +0x386FC000U, +0x38700000U, +0x38704000U, +0x38708000U, +0x3870C000U, +0x38710000U, +0x38714000U, +0x38718000U, +0x3871C000U, +0x38720000U, +0x38724000U, +0x38728000U, +0x3872C000U, +0x38730000U, +0x38734000U, +0x38738000U, +0x3873C000U, +0x38740000U, +0x38744000U, +0x38748000U, +0x3874C000U, +0x38750000U, +0x38754000U, +0x38758000U, +0x3875C000U, +0x38760000U, +0x38764000U, +0x38768000U, +0x3876C000U, +0x38770000U, +0x38774000U, +0x38778000U, +0x3877C000U, +0x38780000U, +0x38784000U, +0x38788000U, +0x3878C000U, +0x38790000U, +0x38794000U, +0x38798000U, +0x3879C000U, +0x387A0000U, +0x387A4000U, +0x387A8000U, +0x387AC000U, +0x387B0000U, +0x387B4000U, +0x387B8000U, +0x387BC000U, +0x387C0000U, +0x387C4000U, +0x387C8000U, +0x387CC000U, +0x387D0000U, +0x387D4000U, +0x387D8000U, +0x387DC000U, +0x387E0000U, +0x387E4000U, +0x387E8000U, +0x387EC000U, +0x387F0000U, +0x387F4000U, +0x387F8000U, +0x387FC000U, +0x38000000U, +0x38002000U, +0x38004000U, +0x38006000U, +0x38008000U, +0x3800A000U, +0x3800C000U, +0x3800E000U, +0x38010000U, +0x38012000U, +0x38014000U, +0x38016000U, +0x38018000U, +0x3801A000U, +0x3801C000U, +0x3801E000U, +0x38020000U, +0x38022000U, +0x38024000U, +0x38026000U, +0x38028000U, +0x3802A000U, +0x3802C000U, +0x3802E000U, +0x38030000U, +0x38032000U, +0x38034000U, +0x38036000U, +0x38038000U, +0x3803A000U, +0x3803C000U, +0x3803E000U, +0x38040000U, +0x38042000U, +0x38044000U, +0x38046000U, +0x38048000U, +0x3804A000U, +0x3804C000U, +0x3804E000U, +0x38050000U, +0x38052000U, +0x38054000U, +0x38056000U, +0x38058000U, +0x3805A000U, +0x3805C000U, +0x3805E000U, +0x38060000U, +0x38062000U, +0x38064000U, +0x38066000U, +0x38068000U, +0x3806A000U, +0x3806C000U, +0x3806E000U, +0x38070000U, +0x38072000U, +0x38074000U, +0x38076000U, +0x38078000U, +0x3807A000U, +0x3807C000U, +0x3807E000U, +0x38080000U, +0x38082000U, +0x38084000U, +0x38086000U, +0x38088000U, +0x3808A000U, +0x3808C000U, +0x3808E000U, +0x38090000U, +0x38092000U, +0x38094000U, +0x38096000U, +0x38098000U, +0x3809A000U, +0x3809C000U, +0x3809E000U, +0x380A0000U, +0x380A2000U, +0x380A4000U, +0x380A6000U, +0x380A8000U, +0x380AA000U, +0x380AC000U, +0x380AE000U, +0x380B0000U, +0x380B2000U, +0x380B4000U, +0x380B6000U, +0x380B8000U, +0x380BA000U, +0x380BC000U, +0x380BE000U, +0x380C0000U, +0x380C2000U, +0x380C4000U, +0x380C6000U, +0x380C8000U, +0x380CA000U, +0x380CC000U, +0x380CE000U, +0x380D0000U, +0x380D2000U, +0x380D4000U, +0x380D6000U, +0x380D8000U, +0x380DA000U, +0x380DC000U, +0x380DE000U, +0x380E0000U, +0x380E2000U, +0x380E4000U, +0x380E6000U, +0x380E8000U, +0x380EA000U, +0x380EC000U, +0x380EE000U, +0x380F0000U, +0x380F2000U, +0x380F4000U, +0x380F6000U, +0x380F8000U, +0x380FA000U, +0x380FC000U, +0x380FE000U, +0x38100000U, +0x38102000U, +0x38104000U, +0x38106000U, +0x38108000U, +0x3810A000U, +0x3810C000U, +0x3810E000U, +0x38110000U, +0x38112000U, +0x38114000U, +0x38116000U, +0x38118000U, +0x3811A000U, +0x3811C000U, +0x3811E000U, +0x38120000U, +0x38122000U, +0x38124000U, +0x38126000U, +0x38128000U, +0x3812A000U, +0x3812C000U, +0x3812E000U, +0x38130000U, +0x38132000U, +0x38134000U, +0x38136000U, +0x38138000U, +0x3813A000U, +0x3813C000U, +0x3813E000U, +0x38140000U, +0x38142000U, +0x38144000U, +0x38146000U, +0x38148000U, +0x3814A000U, +0x3814C000U, +0x3814E000U, +0x38150000U, +0x38152000U, +0x38154000U, +0x38156000U, +0x38158000U, +0x3815A000U, +0x3815C000U, +0x3815E000U, +0x38160000U, +0x38162000U, +0x38164000U, +0x38166000U, +0x38168000U, +0x3816A000U, +0x3816C000U, +0x3816E000U, +0x38170000U, +0x38172000U, +0x38174000U, +0x38176000U, +0x38178000U, +0x3817A000U, +0x3817C000U, +0x3817E000U, +0x38180000U, +0x38182000U, +0x38184000U, +0x38186000U, +0x38188000U, +0x3818A000U, +0x3818C000U, +0x3818E000U, +0x38190000U, +0x38192000U, +0x38194000U, +0x38196000U, +0x38198000U, +0x3819A000U, +0x3819C000U, +0x3819E000U, +0x381A0000U, +0x381A2000U, +0x381A4000U, +0x381A6000U, +0x381A8000U, +0x381AA000U, +0x381AC000U, +0x381AE000U, +0x381B0000U, +0x381B2000U, +0x381B4000U, +0x381B6000U, +0x381B8000U, +0x381BA000U, +0x381BC000U, +0x381BE000U, +0x381C0000U, +0x381C2000U, +0x381C4000U, +0x381C6000U, +0x381C8000U, +0x381CA000U, +0x381CC000U, +0x381CE000U, +0x381D0000U, +0x381D2000U, +0x381D4000U, +0x381D6000U, +0x381D8000U, +0x381DA000U, +0x381DC000U, +0x381DE000U, +0x381E0000U, +0x381E2000U, +0x381E4000U, +0x381E6000U, +0x381E8000U, +0x381EA000U, +0x381EC000U, +0x381EE000U, +0x381F0000U, +0x381F2000U, +0x381F4000U, +0x381F6000U, +0x381F8000U, +0x381FA000U, +0x381FC000U, +0x381FE000U, +0x38200000U, +0x38202000U, +0x38204000U, +0x38206000U, +0x38208000U, +0x3820A000U, +0x3820C000U, +0x3820E000U, +0x38210000U, +0x38212000U, +0x38214000U, +0x38216000U, +0x38218000U, +0x3821A000U, +0x3821C000U, +0x3821E000U, +0x38220000U, +0x38222000U, +0x38224000U, +0x38226000U, +0x38228000U, +0x3822A000U, +0x3822C000U, +0x3822E000U, +0x38230000U, +0x38232000U, +0x38234000U, +0x38236000U, +0x38238000U, +0x3823A000U, +0x3823C000U, +0x3823E000U, +0x38240000U, +0x38242000U, +0x38244000U, +0x38246000U, +0x38248000U, +0x3824A000U, +0x3824C000U, +0x3824E000U, +0x38250000U, +0x38252000U, +0x38254000U, +0x38256000U, +0x38258000U, +0x3825A000U, +0x3825C000U, +0x3825E000U, +0x38260000U, +0x38262000U, +0x38264000U, +0x38266000U, +0x38268000U, +0x3826A000U, +0x3826C000U, +0x3826E000U, +0x38270000U, +0x38272000U, +0x38274000U, +0x38276000U, +0x38278000U, +0x3827A000U, +0x3827C000U, +0x3827E000U, +0x38280000U, +0x38282000U, +0x38284000U, +0x38286000U, +0x38288000U, +0x3828A000U, +0x3828C000U, +0x3828E000U, +0x38290000U, +0x38292000U, +0x38294000U, +0x38296000U, +0x38298000U, +0x3829A000U, +0x3829C000U, +0x3829E000U, +0x382A0000U, +0x382A2000U, +0x382A4000U, +0x382A6000U, +0x382A8000U, +0x382AA000U, +0x382AC000U, +0x382AE000U, +0x382B0000U, +0x382B2000U, +0x382B4000U, +0x382B6000U, +0x382B8000U, +0x382BA000U, +0x382BC000U, +0x382BE000U, +0x382C0000U, +0x382C2000U, +0x382C4000U, +0x382C6000U, +0x382C8000U, +0x382CA000U, +0x382CC000U, +0x382CE000U, +0x382D0000U, +0x382D2000U, +0x382D4000U, +0x382D6000U, +0x382D8000U, +0x382DA000U, +0x382DC000U, +0x382DE000U, +0x382E0000U, +0x382E2000U, +0x382E4000U, +0x382E6000U, +0x382E8000U, +0x382EA000U, +0x382EC000U, +0x382EE000U, +0x382F0000U, +0x382F2000U, +0x382F4000U, +0x382F6000U, +0x382F8000U, +0x382FA000U, +0x382FC000U, +0x382FE000U, +0x38300000U, +0x38302000U, +0x38304000U, +0x38306000U, +0x38308000U, +0x3830A000U, +0x3830C000U, +0x3830E000U, +0x38310000U, +0x38312000U, +0x38314000U, +0x38316000U, +0x38318000U, +0x3831A000U, +0x3831C000U, +0x3831E000U, +0x38320000U, +0x38322000U, +0x38324000U, +0x38326000U, +0x38328000U, +0x3832A000U, +0x3832C000U, +0x3832E000U, +0x38330000U, +0x38332000U, +0x38334000U, +0x38336000U, +0x38338000U, +0x3833A000U, +0x3833C000U, +0x3833E000U, +0x38340000U, +0x38342000U, +0x38344000U, +0x38346000U, +0x38348000U, +0x3834A000U, +0x3834C000U, +0x3834E000U, +0x38350000U, +0x38352000U, +0x38354000U, +0x38356000U, +0x38358000U, +0x3835A000U, +0x3835C000U, +0x3835E000U, +0x38360000U, +0x38362000U, +0x38364000U, +0x38366000U, +0x38368000U, +0x3836A000U, +0x3836C000U, +0x3836E000U, +0x38370000U, +0x38372000U, +0x38374000U, +0x38376000U, +0x38378000U, +0x3837A000U, +0x3837C000U, +0x3837E000U, +0x38380000U, +0x38382000U, +0x38384000U, +0x38386000U, +0x38388000U, +0x3838A000U, +0x3838C000U, +0x3838E000U, +0x38390000U, +0x38392000U, +0x38394000U, +0x38396000U, +0x38398000U, +0x3839A000U, +0x3839C000U, +0x3839E000U, +0x383A0000U, +0x383A2000U, +0x383A4000U, +0x383A6000U, +0x383A8000U, +0x383AA000U, +0x383AC000U, +0x383AE000U, +0x383B0000U, +0x383B2000U, +0x383B4000U, +0x383B6000U, +0x383B8000U, +0x383BA000U, +0x383BC000U, +0x383BE000U, +0x383C0000U, +0x383C2000U, +0x383C4000U, +0x383C6000U, +0x383C8000U, +0x383CA000U, +0x383CC000U, +0x383CE000U, +0x383D0000U, +0x383D2000U, +0x383D4000U, +0x383D6000U, +0x383D8000U, +0x383DA000U, +0x383DC000U, +0x383DE000U, +0x383E0000U, +0x383E2000U, +0x383E4000U, +0x383E6000U, +0x383E8000U, +0x383EA000U, +0x383EC000U, +0x383EE000U, +0x383F0000U, +0x383F2000U, +0x383F4000U, +0x383F6000U, +0x383F8000U, +0x383FA000U, +0x383FC000U, +0x383FE000U, +0x38400000U, +0x38402000U, +0x38404000U, +0x38406000U, +0x38408000U, +0x3840A000U, +0x3840C000U, +0x3840E000U, +0x38410000U, +0x38412000U, +0x38414000U, +0x38416000U, +0x38418000U, +0x3841A000U, +0x3841C000U, +0x3841E000U, +0x38420000U, +0x38422000U, +0x38424000U, +0x38426000U, +0x38428000U, +0x3842A000U, +0x3842C000U, +0x3842E000U, +0x38430000U, +0x38432000U, +0x38434000U, +0x38436000U, +0x38438000U, +0x3843A000U, +0x3843C000U, +0x3843E000U, +0x38440000U, +0x38442000U, +0x38444000U, +0x38446000U, +0x38448000U, +0x3844A000U, +0x3844C000U, +0x3844E000U, +0x38450000U, +0x38452000U, +0x38454000U, +0x38456000U, +0x38458000U, +0x3845A000U, +0x3845C000U, +0x3845E000U, +0x38460000U, +0x38462000U, +0x38464000U, +0x38466000U, +0x38468000U, +0x3846A000U, +0x3846C000U, +0x3846E000U, +0x38470000U, +0x38472000U, +0x38474000U, +0x38476000U, +0x38478000U, +0x3847A000U, +0x3847C000U, +0x3847E000U, +0x38480000U, +0x38482000U, +0x38484000U, +0x38486000U, +0x38488000U, +0x3848A000U, +0x3848C000U, +0x3848E000U, +0x38490000U, +0x38492000U, +0x38494000U, +0x38496000U, +0x38498000U, +0x3849A000U, +0x3849C000U, +0x3849E000U, +0x384A0000U, +0x384A2000U, +0x384A4000U, +0x384A6000U, +0x384A8000U, +0x384AA000U, +0x384AC000U, +0x384AE000U, +0x384B0000U, +0x384B2000U, +0x384B4000U, +0x384B6000U, +0x384B8000U, +0x384BA000U, +0x384BC000U, +0x384BE000U, +0x384C0000U, +0x384C2000U, +0x384C4000U, +0x384C6000U, +0x384C8000U, +0x384CA000U, +0x384CC000U, +0x384CE000U, +0x384D0000U, +0x384D2000U, +0x384D4000U, +0x384D6000U, +0x384D8000U, +0x384DA000U, +0x384DC000U, +0x384DE000U, +0x384E0000U, +0x384E2000U, +0x384E4000U, +0x384E6000U, +0x384E8000U, +0x384EA000U, +0x384EC000U, +0x384EE000U, +0x384F0000U, +0x384F2000U, +0x384F4000U, +0x384F6000U, +0x384F8000U, +0x384FA000U, +0x384FC000U, +0x384FE000U, +0x38500000U, +0x38502000U, +0x38504000U, +0x38506000U, +0x38508000U, +0x3850A000U, +0x3850C000U, +0x3850E000U, +0x38510000U, +0x38512000U, +0x38514000U, +0x38516000U, +0x38518000U, +0x3851A000U, +0x3851C000U, +0x3851E000U, +0x38520000U, +0x38522000U, +0x38524000U, +0x38526000U, +0x38528000U, +0x3852A000U, +0x3852C000U, +0x3852E000U, +0x38530000U, +0x38532000U, +0x38534000U, +0x38536000U, +0x38538000U, +0x3853A000U, +0x3853C000U, +0x3853E000U, +0x38540000U, +0x38542000U, +0x38544000U, +0x38546000U, +0x38548000U, +0x3854A000U, +0x3854C000U, +0x3854E000U, +0x38550000U, +0x38552000U, +0x38554000U, +0x38556000U, +0x38558000U, +0x3855A000U, +0x3855C000U, +0x3855E000U, +0x38560000U, +0x38562000U, +0x38564000U, +0x38566000U, +0x38568000U, +0x3856A000U, +0x3856C000U, +0x3856E000U, +0x38570000U, +0x38572000U, +0x38574000U, +0x38576000U, +0x38578000U, +0x3857A000U, +0x3857C000U, +0x3857E000U, +0x38580000U, +0x38582000U, +0x38584000U, +0x38586000U, +0x38588000U, +0x3858A000U, +0x3858C000U, +0x3858E000U, +0x38590000U, +0x38592000U, +0x38594000U, +0x38596000U, +0x38598000U, +0x3859A000U, +0x3859C000U, +0x3859E000U, +0x385A0000U, +0x385A2000U, +0x385A4000U, +0x385A6000U, +0x385A8000U, +0x385AA000U, +0x385AC000U, +0x385AE000U, +0x385B0000U, +0x385B2000U, +0x385B4000U, +0x385B6000U, +0x385B8000U, +0x385BA000U, +0x385BC000U, +0x385BE000U, +0x385C0000U, +0x385C2000U, +0x385C4000U, +0x385C6000U, +0x385C8000U, +0x385CA000U, +0x385CC000U, +0x385CE000U, +0x385D0000U, +0x385D2000U, +0x385D4000U, +0x385D6000U, +0x385D8000U, +0x385DA000U, +0x385DC000U, +0x385DE000U, +0x385E0000U, +0x385E2000U, +0x385E4000U, +0x385E6000U, +0x385E8000U, +0x385EA000U, +0x385EC000U, +0x385EE000U, +0x385F0000U, +0x385F2000U, +0x385F4000U, +0x385F6000U, +0x385F8000U, +0x385FA000U, +0x385FC000U, +0x385FE000U, +0x38600000U, +0x38602000U, +0x38604000U, +0x38606000U, +0x38608000U, +0x3860A000U, +0x3860C000U, +0x3860E000U, +0x38610000U, +0x38612000U, +0x38614000U, +0x38616000U, +0x38618000U, +0x3861A000U, +0x3861C000U, +0x3861E000U, +0x38620000U, +0x38622000U, +0x38624000U, +0x38626000U, +0x38628000U, +0x3862A000U, +0x3862C000U, +0x3862E000U, +0x38630000U, +0x38632000U, +0x38634000U, +0x38636000U, +0x38638000U, +0x3863A000U, +0x3863C000U, +0x3863E000U, +0x38640000U, +0x38642000U, +0x38644000U, +0x38646000U, +0x38648000U, +0x3864A000U, +0x3864C000U, +0x3864E000U, +0x38650000U, +0x38652000U, +0x38654000U, +0x38656000U, +0x38658000U, +0x3865A000U, +0x3865C000U, +0x3865E000U, +0x38660000U, +0x38662000U, +0x38664000U, +0x38666000U, +0x38668000U, +0x3866A000U, +0x3866C000U, +0x3866E000U, +0x38670000U, +0x38672000U, +0x38674000U, +0x38676000U, +0x38678000U, +0x3867A000U, +0x3867C000U, +0x3867E000U, +0x38680000U, +0x38682000U, +0x38684000U, +0x38686000U, +0x38688000U, +0x3868A000U, +0x3868C000U, +0x3868E000U, +0x38690000U, +0x38692000U, +0x38694000U, +0x38696000U, +0x38698000U, +0x3869A000U, +0x3869C000U, +0x3869E000U, +0x386A0000U, +0x386A2000U, +0x386A4000U, +0x386A6000U, +0x386A8000U, +0x386AA000U, +0x386AC000U, +0x386AE000U, +0x386B0000U, +0x386B2000U, +0x386B4000U, +0x386B6000U, +0x386B8000U, +0x386BA000U, +0x386BC000U, +0x386BE000U, +0x386C0000U, +0x386C2000U, +0x386C4000U, +0x386C6000U, +0x386C8000U, +0x386CA000U, +0x386CC000U, +0x386CE000U, +0x386D0000U, +0x386D2000U, +0x386D4000U, +0x386D6000U, +0x386D8000U, +0x386DA000U, +0x386DC000U, +0x386DE000U, +0x386E0000U, +0x386E2000U, +0x386E4000U, +0x386E6000U, +0x386E8000U, +0x386EA000U, +0x386EC000U, +0x386EE000U, +0x386F0000U, +0x386F2000U, +0x386F4000U, +0x386F6000U, +0x386F8000U, +0x386FA000U, +0x386FC000U, +0x386FE000U, +0x38700000U, +0x38702000U, +0x38704000U, +0x38706000U, +0x38708000U, +0x3870A000U, +0x3870C000U, +0x3870E000U, +0x38710000U, +0x38712000U, +0x38714000U, +0x38716000U, +0x38718000U, +0x3871A000U, +0x3871C000U, +0x3871E000U, +0x38720000U, +0x38722000U, +0x38724000U, +0x38726000U, +0x38728000U, +0x3872A000U, +0x3872C000U, +0x3872E000U, +0x38730000U, +0x38732000U, +0x38734000U, +0x38736000U, +0x38738000U, +0x3873A000U, +0x3873C000U, +0x3873E000U, +0x38740000U, +0x38742000U, +0x38744000U, +0x38746000U, +0x38748000U, +0x3874A000U, +0x3874C000U, +0x3874E000U, +0x38750000U, +0x38752000U, +0x38754000U, +0x38756000U, +0x38758000U, +0x3875A000U, +0x3875C000U, +0x3875E000U, +0x38760000U, +0x38762000U, +0x38764000U, +0x38766000U, +0x38768000U, +0x3876A000U, +0x3876C000U, +0x3876E000U, +0x38770000U, +0x38772000U, +0x38774000U, +0x38776000U, +0x38778000U, +0x3877A000U, +0x3877C000U, +0x3877E000U, +0x38780000U, +0x38782000U, +0x38784000U, +0x38786000U, +0x38788000U, +0x3878A000U, +0x3878C000U, +0x3878E000U, +0x38790000U, +0x38792000U, +0x38794000U, +0x38796000U, +0x38798000U, +0x3879A000U, +0x3879C000U, +0x3879E000U, +0x387A0000U, +0x387A2000U, +0x387A4000U, +0x387A6000U, +0x387A8000U, +0x387AA000U, +0x387AC000U, +0x387AE000U, +0x387B0000U, +0x387B2000U, +0x387B4000U, +0x387B6000U, +0x387B8000U, +0x387BA000U, +0x387BC000U, +0x387BE000U, +0x387C0000U, +0x387C2000U, +0x387C4000U, +0x387C6000U, +0x387C8000U, +0x387CA000U, +0x387CC000U, +0x387CE000U, +0x387D0000U, +0x387D2000U, +0x387D4000U, +0x387D6000U, +0x387D8000U, +0x387DA000U, +0x387DC000U, +0x387DE000U, +0x387E0000U, +0x387E2000U, +0x387E4000U, +0x387E6000U, +0x387E8000U, +0x387EA000U, +0x387EC000U, +0x387EE000U, +0x387F0000U, +0x387F2000U, +0x387F4000U, +0x387F6000U, +0x387F8000U, +0x387FA000U, +0x387FC000U, +0x387FE000U, +}; + +const quint32 qfloat16::exponenttable[64] = { +0, +0x800000U, +0x1000000U, +0x1800000U, +0x2000000U, +0x2800000U, +0x3000000U, +0x3800000U, +0x4000000U, +0x4800000U, +0x5000000U, +0x5800000U, +0x6000000U, +0x6800000U, +0x7000000U, +0x7800000U, +0x8000000U, +0x8800000U, +0x9000000U, +0x9800000U, +0xA000000U, +0xA800000U, +0xB000000U, +0xB800000U, +0xC000000U, +0xC800000U, +0xD000000U, +0xD800000U, +0xE000000U, +0xE800000U, +0xF000000U, +0x47800000U, +0x80000000U, +0x80800000U, +0x81000000U, +0x81800000U, +0x82000000U, +0x82800000U, +0x83000000U, +0x83800000U, +0x84000000U, +0x84800000U, +0x85000000U, +0x85800000U, +0x86000000U, +0x86800000U, +0x87000000U, +0x87800000U, +0x88000000U, +0x88800000U, +0x89000000U, +0x89800000U, +0x8A000000U, +0x8A800000U, +0x8B000000U, +0x8B800000U, +0x8C000000U, +0x8C800000U, +0x8D000000U, +0x8D800000U, +0x8E000000U, +0x8E800000U, +0x8F000000U, +0xC7800000U, +}; + +const quint32 qfloat16::offsettable[64] = { +0, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +0, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +1024U, +}; + +const quint32 qfloat16::basetable[512] = { +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x0U, +0x1U, +0x2U, +0x4U, +0x8U, +0x10U, +0x20U, +0x40U, +0x80U, +0x100U, +0x200U, +0x400U, +0x800U, +0xC00U, +0x1000U, +0x1400U, +0x1800U, +0x1C00U, +0x2000U, +0x2400U, +0x2800U, +0x2C00U, +0x3000U, +0x3400U, +0x3800U, +0x3C00U, +0x4000U, +0x4400U, +0x4800U, +0x4C00U, +0x5000U, +0x5400U, +0x5800U, +0x5C00U, +0x6000U, +0x6400U, +0x6800U, +0x6C00U, +0x7000U, +0x7400U, +0x7800U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x7C00U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8000U, +0x8001U, +0x8002U, +0x8004U, +0x8008U, +0x8010U, +0x8020U, +0x8040U, +0x8080U, +0x8100U, +0x8200U, +0x8400U, +0x8800U, +0x8C00U, +0x9000U, +0x9400U, +0x9800U, +0x9C00U, +0xA000U, +0xA400U, +0xA800U, +0xAC00U, +0xB000U, +0xB400U, +0xB800U, +0xBC00U, +0xC000U, +0xC400U, +0xC800U, +0xCC00U, +0xD000U, +0xD400U, +0xD800U, +0xDC00U, +0xE000U, +0xE400U, +0xE800U, +0xEC00U, +0xF000U, +0xF400U, +0xF800U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +0xFC00U, +}; + +const quint32 qfloat16::shifttable[512] = { +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x17U, +0x16U, +0x15U, +0x14U, +0x13U, +0x12U, +0x11U, +0x10U, +0xFU, +0xEU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0xDU, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x17U, +0x16U, +0x15U, +0x14U, +0x13U, +0x12U, +0x11U, +0x10U, +0xFU, +0xEU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0xDU, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0x18U, +0xDU, +}; + +#endif // !__F16C__ && !__ARM_FP16_FORMAT_IEEE + +QT_END_NAMESPACE diff --git a/src/src.pro b/src/src.pro index a39b718e10..b1afdd27a5 100644 --- a/src/src.pro +++ b/src/src.pro @@ -21,10 +21,6 @@ src_tools_rcc.subdir = tools/rcc src_tools_rcc.target = sub-rcc src_tools_rcc.depends = src_tools_bootstrap -src_tools_qfloat16_tables.subdir = tools/qfloat16-tables -src_tools_qfloat16_tables.target = sub-qfloat16-tables -src_tools_qfloat16_tables.depends = src_tools_bootstrap - src_tools_qlalr.subdir = tools/qlalr src_tools_qlalr.target = sub-qlalr force_bootstrap: src_tools_qlalr.depends = src_tools_bootstrap @@ -72,7 +68,7 @@ src_winmain.depends = sub-corelib # just for the module .pri file src_corelib.subdir = $$PWD/corelib src_corelib.target = sub-corelib -src_corelib.depends = src_tools_moc src_tools_rcc src_tools_qfloat16_tables +src_corelib.depends = src_tools_moc src_tools_rcc src_xml.subdir = $$PWD/xml src_xml.target = sub-xml @@ -159,12 +155,12 @@ src_android.subdir = $$PWD/android src_3rdparty_freetype.depends += src_corelib } } -SUBDIRS += src_tools_bootstrap src_tools_moc src_tools_rcc src_tools_qfloat16_tables +SUBDIRS += src_tools_bootstrap src_tools_moc src_tools_rcc qtConfig(regularexpression):pcre2 { SUBDIRS += src_3rdparty_pcre2 src_corelib.depends += src_3rdparty_pcre2 } -TOOLS = src_tools_moc src_tools_rcc src_tools_qlalr src_tools_qfloat16_tables +TOOLS = src_tools_moc src_tools_rcc src_tools_qlalr !force_bootstrap:if(qtConfig(lttng)|qtConfig(etw)) { SUBDIRS += src_tools_tracegen src_corelib.depends += src_tools_tracegen diff --git a/src/tools/qfloat16-tables/gen_qfloat16_tables.cpp b/src/tools/qfloat16-tables/gen_qfloat16_tables.cpp deleted file mode 100644 index 5aca0235e3..0000000000 --- a/src/tools/qfloat16-tables/gen_qfloat16_tables.cpp +++ /dev/null @@ -1,151 +0,0 @@ -/**************************************************************************** -** -** 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. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include - -uint32_t convertmantissa(int32_t i) -{ - 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) - m <<= 1; // Shift mantissa - } - m &= ~0x00800000; // Clear leading 1 bit - e += 0x38800000; // Adjust bias ((127-14)<<23) - return m | e; // Return combined number -} - -// 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. -uint32_t basetable[512]; -uint32_t shifttable[512]; - -int main() -{ - uint32_t i; - - printf("/* This file was generated by gen_qfloat16_tables.cpp */\n\n"); - printf("#include \n\n"); - - printf("QT_BEGIN_NAMESPACE\n\n"); - printf("#if !defined(__F16C__) && !defined(__ARM_FP16_FORMAT_IEEE)\n\n"); - - printf("const quint32 qfloat16::mantissatable[2048] = {\n"); - printf("0,\n"); - for (i = 1; i < 1024; i++) - printf("0x%XU,\n", convertmantissa(i)); - for (i = 1024; i < 2048; i++) - printf("0x%XU,\n", 0x38000000U + ((i - 1024) << 13)); - printf("};\n\n"); - - printf("const quint32 qfloat16::exponenttable[64] = {\n"); - printf("0,\n"); - for (i = 1; i < 31; i++) - printf("0x%XU,\n", i << 23); - printf("0x47800000U,\n"); // 31 - printf("0x80000000U,\n"); // 32 - for (i = 33; i < 63; i++) - printf("0x%XU,\n", 0x80000000U + ((i - 32) << 23)); - printf("0xC7800000U,\n"); // 63 - printf("};\n\n"); - - printf("const quint32 qfloat16::offsettable[64] = {\n"); - printf("0,\n"); - for (i = 1; i < 32; i++) - printf("1024U,\n"); - printf("0,\n"); - for (i = 33; i < 64; i++) - printf("1024U,\n"); - printf("};\n\n"); - - int32_t e; - for (i = 0; i < 256; ++i) { - e = i - 127; - if (e < -24) { // Very small numbers map to zero - basetable[i | 0x000] = 0x0000; - basetable[i | 0x100] = 0x8000; - shifttable[i | 0x000] = 24; - shifttable[i | 0x100] = 24; - - } else if (e < -14) { // Small numbers map to denorms - basetable[i | 0x000] = (0x0400 >> (-e - 14)); - basetable[i | 0x100] = (0x0400 >> (-e - 14)) | 0x8000; - shifttable[i | 0x000] = -e - 1; - shifttable[i | 0x100] = -e - 1; - - } else if (e <= 15) { // Normal numbers just lose precision - basetable[i | 0x000] = ((e + 15) << 10); - basetable[i | 0x100] = ((e + 15) << 10) | 0x8000; - shifttable[i | 0x000] = 13; - shifttable[i | 0x100] = 13; - - } else if (e < 128) { // Large numbers map to Infinity - basetable[i | 0x000] = 0x7C00; - basetable[i | 0x100] = 0xFC00; - shifttable[i | 0x000] = 24; - shifttable[i | 0x100] = 24; - - } else { // Infinity and NaN's stay Infinity and NaN's - basetable[i | 0x000] = 0x7C00; - basetable[i | 0x100] = 0xFC00; - shifttable[i | 0x000] = 13; - shifttable[i | 0x100] = 13; - } - } - - printf("const quint32 qfloat16::basetable[512] = {\n"); - for (i = 0; i < 512; i++) - printf("0x%XU,\n", basetable[i]); - - printf("};\n\n"); - - printf("const quint32 qfloat16::shifttable[512] = {\n"); - for (i = 0; i < 512; i++) - printf("0x%XU,\n", shifttable[i]); - - printf("};\n\n"); - - 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 deleted file mode 100644 index 12878ce6c7..0000000000 --- a/src/tools/qfloat16-tables/qfloat16-tables.pro +++ /dev/null @@ -1,9 +0,0 @@ -option(host_build) - -CONFIG -= qt -SOURCES += gen_qfloat16_tables.cpp - -load(qt_tool) - -lib.CONFIG = dummy_install -INSTALLS = lib diff --git a/util/qfloat16-tables/gen_qfloat16_tables.cpp b/util/qfloat16-tables/gen_qfloat16_tables.cpp new file mode 100644 index 0000000000..5aca0235e3 --- /dev/null +++ b/util/qfloat16-tables/gen_qfloat16_tables.cpp @@ -0,0 +1,151 @@ +/**************************************************************************** +** +** 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. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include + +uint32_t convertmantissa(int32_t i) +{ + 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) + m <<= 1; // Shift mantissa + } + m &= ~0x00800000; // Clear leading 1 bit + e += 0x38800000; // Adjust bias ((127-14)<<23) + return m | e; // Return combined number +} + +// 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. +uint32_t basetable[512]; +uint32_t shifttable[512]; + +int main() +{ + uint32_t i; + + printf("/* This file was generated by gen_qfloat16_tables.cpp */\n\n"); + printf("#include \n\n"); + + printf("QT_BEGIN_NAMESPACE\n\n"); + printf("#if !defined(__F16C__) && !defined(__ARM_FP16_FORMAT_IEEE)\n\n"); + + printf("const quint32 qfloat16::mantissatable[2048] = {\n"); + printf("0,\n"); + for (i = 1; i < 1024; i++) + printf("0x%XU,\n", convertmantissa(i)); + for (i = 1024; i < 2048; i++) + printf("0x%XU,\n", 0x38000000U + ((i - 1024) << 13)); + printf("};\n\n"); + + printf("const quint32 qfloat16::exponenttable[64] = {\n"); + printf("0,\n"); + for (i = 1; i < 31; i++) + printf("0x%XU,\n", i << 23); + printf("0x47800000U,\n"); // 31 + printf("0x80000000U,\n"); // 32 + for (i = 33; i < 63; i++) + printf("0x%XU,\n", 0x80000000U + ((i - 32) << 23)); + printf("0xC7800000U,\n"); // 63 + printf("};\n\n"); + + printf("const quint32 qfloat16::offsettable[64] = {\n"); + printf("0,\n"); + for (i = 1; i < 32; i++) + printf("1024U,\n"); + printf("0,\n"); + for (i = 33; i < 64; i++) + printf("1024U,\n"); + printf("};\n\n"); + + int32_t e; + for (i = 0; i < 256; ++i) { + e = i - 127; + if (e < -24) { // Very small numbers map to zero + basetable[i | 0x000] = 0x0000; + basetable[i | 0x100] = 0x8000; + shifttable[i | 0x000] = 24; + shifttable[i | 0x100] = 24; + + } else if (e < -14) { // Small numbers map to denorms + basetable[i | 0x000] = (0x0400 >> (-e - 14)); + basetable[i | 0x100] = (0x0400 >> (-e - 14)) | 0x8000; + shifttable[i | 0x000] = -e - 1; + shifttable[i | 0x100] = -e - 1; + + } else if (e <= 15) { // Normal numbers just lose precision + basetable[i | 0x000] = ((e + 15) << 10); + basetable[i | 0x100] = ((e + 15) << 10) | 0x8000; + shifttable[i | 0x000] = 13; + shifttable[i | 0x100] = 13; + + } else if (e < 128) { // Large numbers map to Infinity + basetable[i | 0x000] = 0x7C00; + basetable[i | 0x100] = 0xFC00; + shifttable[i | 0x000] = 24; + shifttable[i | 0x100] = 24; + + } else { // Infinity and NaN's stay Infinity and NaN's + basetable[i | 0x000] = 0x7C00; + basetable[i | 0x100] = 0xFC00; + shifttable[i | 0x000] = 13; + shifttable[i | 0x100] = 13; + } + } + + printf("const quint32 qfloat16::basetable[512] = {\n"); + for (i = 0; i < 512; i++) + printf("0x%XU,\n", basetable[i]); + + printf("};\n\n"); + + printf("const quint32 qfloat16::shifttable[512] = {\n"); + for (i = 0; i < 512; i++) + printf("0x%XU,\n", shifttable[i]); + + printf("};\n\n"); + + printf("#endif // !__F16C__ && !__ARM_FP16_FORMAT_IEEE\n\n"); + printf("QT_END_NAMESPACE\n"); + return 0; +} diff --git a/util/qfloat16-tables/qfloat16-tables.pro b/util/qfloat16-tables/qfloat16-tables.pro new file mode 100644 index 0000000000..3c9a1e61a3 --- /dev/null +++ b/util/qfloat16-tables/qfloat16-tables.pro @@ -0,0 +1,2 @@ +QT = core +SOURCES += gen_qfloat16_tables.cpp -- cgit v1.2.3