diff options
Diffstat (limited to 'src/corelib/global')
-rw-r--r-- | src/corelib/global/global.pri | 15 | ||||
-rw-r--r-- | src/corelib/global/qfloat16.cpp | 1 | ||||
-rw-r--r-- | src/corelib/global/qfloat16tables.cpp | 3266 | ||||
-rw-r--r-- | src/corelib/global/qglobal.cpp | 11 | ||||
-rw-r--r-- | src/corelib/global/qglobal.h | 2 | ||||
-rw-r--r-- | src/corelib/global/qglobalstatic.h | 14 | ||||
-rw-r--r-- | src/corelib/global/qlibraryinfo.cpp | 35 | ||||
-rw-r--r-- | src/corelib/global/qlibraryinfo.h | 1 | ||||
-rw-r--r-- | src/corelib/global/qlogging.cpp | 79 | ||||
-rw-r--r-- | src/corelib/global/qmalloc.cpp | 8 | ||||
-rw-r--r-- | src/corelib/global/qnamespace.qdoc | 2 | ||||
-rw-r--r-- | src/corelib/global/qoperatingsystemversion.cpp | 8 | ||||
-rw-r--r-- | src/corelib/global/qoperatingsystemversion.h | 1 | ||||
-rw-r--r-- | src/corelib/global/qrandom.cpp | 30 | ||||
-rw-r--r-- | src/corelib/global/qrandom.h | 10 | ||||
-rw-r--r-- | src/corelib/global/qrandom_p.h | 4 |
16 files changed, 3388 insertions, 99 deletions
diff --git a/src/corelib/global/global.pri b/src/corelib/global/global.pri index 10af46b41a..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 <QtCore/qfloat16.h> + +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/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp index be01e5a605..a8ed8ca6fd 100644 --- a/src/corelib/global/qglobal.cpp +++ b/src/corelib/global/qglobal.cpp @@ -1553,6 +1553,13 @@ bool qSharedBuild() noexcept */ /*! + \macro Q_OS_WASM + \relates <QtGlobal> + + Defined on Web Assembly. +*/ + +/*! \macro Q_CC_SYM \relates <QtGlobal> @@ -2945,6 +2952,7 @@ QString QSysInfo::machineHostName() struct utsname u; if (uname(&u) == 0) return QString::fromLocal8Bit(u.nodename); + return QString(); #else # ifdef Q_OS_WIN // Important: QtNetwork depends on machineHostName() initializing ws2_32.dll @@ -2957,7 +2965,6 @@ QString QSysInfo::machineHostName() hostName[sizeof(hostName) - 1] = '\0'; return QString::fromLocal8Bit(hostName); #endif - return QString(); } #endif // QT_BOOTSTRAPPED @@ -3612,7 +3619,7 @@ bool qEnvironmentVariableIsSet(const char *varName) noexcept (void)getenv_s(&requiredSize, 0, 0, varName); return requiredSize != 0; #else - return ::getenv(varName) != 0; + return ::getenv(varName) != nullptr; #endif } diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index 630a3265e2..f85824c7b3 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -1097,7 +1097,7 @@ for (auto _container_ = QtPrivate::qMakeForeachContainer(container); \ #endif template <typename T> inline T *qGetPtrHelper(T *ptr) { return ptr; } -template <typename Ptr> inline auto qGetPtrHelper(const Ptr &ptr) -> decltype(ptr.operator->()) { return ptr.operator->(); } +template <typename Ptr> inline auto qGetPtrHelper(Ptr &ptr) -> decltype(ptr.operator->()) { return ptr.operator->(); } // The body must be a statement: #define Q_CAST_IGNORE_ALIGN(body) QT_WARNING_PUSH QT_WARNING_DISABLE_GCC("-Wcast-align") body QT_WARNING_POP diff --git a/src/corelib/global/qglobalstatic.h b/src/corelib/global/qglobalstatic.h index 4f89876793..7a7d65ed76 100644 --- a/src/corelib/global/qglobalstatic.h +++ b/src/corelib/global/qglobalstatic.h @@ -80,15 +80,15 @@ enum GuardValues { { \ struct HolderBase { \ ~HolderBase() noexcept \ - { if (guard.load() == QtGlobalStatic::Initialized) \ - guard.store(QtGlobalStatic::Destroyed); } \ + { if (guard.loadRelaxed() == QtGlobalStatic::Initialized) \ + guard.storeRelaxed(QtGlobalStatic::Destroyed); } \ }; \ static struct Holder : public HolderBase { \ Type value; \ Holder() \ noexcept(noexcept(Type ARGS)) \ : value ARGS \ - { guard.store(QtGlobalStatic::Initialized); } \ + { guard.storeRelaxed(QtGlobalStatic::Initialized); } \ } holder; \ return &holder.value; \ } @@ -108,12 +108,12 @@ QT_BEGIN_NAMESPACE int x = guard.loadAcquire(); \ if (Q_UNLIKELY(x >= QtGlobalStatic::Uninitialized)) { \ QMutexLocker locker(&mutex); \ - if (guard.load() == QtGlobalStatic::Uninitialized) { \ + if (guard.loadRelaxed() == QtGlobalStatic::Uninitialized) { \ d = new Type ARGS; \ static struct Cleanup { \ ~Cleanup() { \ delete d; \ - guard.store(QtGlobalStatic::Destroyed); \ + guard.storeRelaxed(QtGlobalStatic::Destroyed); \ } \ } cleanup; \ guard.storeRelease(QtGlobalStatic::Initialized); \ @@ -129,8 +129,8 @@ struct QGlobalStatic { typedef T Type; - bool isDestroyed() const { return guard.load() <= QtGlobalStatic::Destroyed; } - bool exists() const { return guard.load() == QtGlobalStatic::Initialized; } + bool isDestroyed() const { return guard.loadRelaxed() <= QtGlobalStatic::Destroyed; } + bool exists() const { return guard.loadRelaxed() == QtGlobalStatic::Initialized; } operator Type *() { if (isDestroyed()) return nullptr; return innerFunction(); } Type *operator()() { if (isDestroyed()) return nullptr; return innerFunction(); } Type *operator->() diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp index c3eb469767..e82939dcd9 100644 --- a/src/corelib/global/qlibraryinfo.cpp +++ b/src/corelib/global/qlibraryinfo.cpp @@ -432,7 +432,24 @@ void QLibraryInfo::reload() { QLibraryInfoPrivate::reload(); } -#endif + +void QLibraryInfo::sysrootify(QString *path) +{ + if (!QVariant::fromValue(rawLocation(SysrootifyPrefixPath, FinalPaths)).toBool()) + return; + + const QString sysroot = rawLocation(SysrootPath, FinalPaths); + if (sysroot.isEmpty()) + return; + + if (path->length() > 2 && path->at(1) == QLatin1Char(':') + && (path->at(2) == QLatin1Char('/') || path->at(2) == QLatin1Char('\\'))) { + path->replace(0, 2, sysroot); // Strip out the drive on Windows targets + } else { + path->prepend(sysroot); + } +} +#endif // QT_BUILD_QMAKE /*! Returns the location specified by \a loc. @@ -444,18 +461,8 @@ QLibraryInfo::location(LibraryLocation loc) QString ret = rawLocation(loc, FinalPaths); // Automatically prepend the sysroot to target paths - if (loc < SysrootPath || loc > LastHostPath) { - QString sysroot = rawLocation(SysrootPath, FinalPaths); - if (!sysroot.isEmpty() - && QVariant::fromValue(rawLocation(SysrootifyPrefixPath, FinalPaths)).toBool()) { - if (ret.length() > 2 && ret.at(1) == QLatin1Char(':') - && (ret.at(2) == QLatin1Char('/') || ret.at(2) == QLatin1Char('\\'))) { - ret.replace(0, 2, sysroot); // Strip out the drive on Windows targets - } else { - ret.prepend(sysroot); - } - } - } + if (loc < SysrootPath || loc > LastHostPath) + sysrootify(&ret); return ret; } @@ -598,6 +605,8 @@ QLibraryInfo::rawLocation(LibraryLocation loc, PathGroup group) } else { // we make any other path absolute to the prefix directory baseDir = rawLocation(PrefixPath, group); + if (group == EffectivePaths) + sysrootify(&baseDir); } #else if (loc == PrefixPath) { diff --git a/src/corelib/global/qlibraryinfo.h b/src/corelib/global/qlibraryinfo.h index 20fd3897f7..ed60b170a5 100644 --- a/src/corelib/global/qlibraryinfo.h +++ b/src/corelib/global/qlibraryinfo.h @@ -107,6 +107,7 @@ public: enum PathGroup { FinalPaths, EffectivePaths, EffectiveSourcePaths, DevicePaths }; static QString rawLocation(LibraryLocation, PathGroup); static void reload(); + static void sysrootify(QString *path); #endif static QStringList platformPluginArguments(const QString &platformName); diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp index 499ea3cdfb..f635a84e21 100644 --- a/src/corelib/global/qlogging.cpp +++ b/src/corelib/global/qlogging.cpp @@ -44,6 +44,7 @@ #include "qlogging_p.h" #include "qlist.h" #include "qbytearray.h" +#include "qscopeguard.h" #include "qstring.h" #include "qvarlengtharray.h" #include "qdebug.h" @@ -158,6 +159,9 @@ static QT_PREPEND_NAMESPACE(qint64) qt_gettid() #endif // !QT_BOOTSTRAPPED #include <cstdlib> +#include <algorithm> +#include <memory> +#include <vector> #include <stdio.h> @@ -194,7 +198,7 @@ static bool isFatal(QtMsgType msgType) // it's fatal if the current value is exactly 1, // otherwise decrement if it's non-zero - return fatalCriticals.load() && fatalCriticals.fetchAndAddRelaxed(-1) == 1; + return fatalCriticals.loadRelaxed() && fatalCriticals.fetchAndAddRelaxed(-1) == 1; } if (msgType == QtWarningMsg || msgType == QtCriticalMsg) { @@ -202,7 +206,7 @@ static bool isFatal(QtMsgType msgType) // it's fatal if the current value is exactly 1, // otherwise decrement if it's non-zero - return fatalWarnings.load() && fatalWarnings.fetchAndAddRelaxed(-1) == 1; + return fatalWarnings.loadRelaxed() && fatalWarnings.fetchAndAddRelaxed(-1) == 1; } return false; @@ -1076,8 +1080,8 @@ struct QMessagePattern { void setPattern(const QString &pattern); // 0 terminated arrays of literal tokens / literal or placeholder tokens - const char **literals; - const char **tokens; + std::unique_ptr<std::unique_ptr<const char[]>[]> literals; + std::unique_ptr<const char*[]> tokens; QList<QString> timeArgs; // timeFormats in sequence of %{time #ifndef QT_BOOTSTRAPPED QElapsedTimer timer; @@ -1100,9 +1104,6 @@ Q_DECLARE_TYPEINFO(QMessagePattern::BacktraceParams, Q_MOVABLE_TYPE); QBasicMutex QMessagePattern::mutex; QMessagePattern::QMessagePattern() - : literals(0) - , tokens(0) - , fromEnvironment(false) { #ifndef QT_BOOTSTRAPPED timer.start(); @@ -1110,6 +1111,7 @@ QMessagePattern::QMessagePattern() const QString envPattern = QString::fromLocal8Bit(qgetenv("QT_MESSAGE_PATTERN")); if (envPattern.isEmpty()) { setPattern(QLatin1String(defaultPattern)); + fromEnvironment = false; } else { setPattern(envPattern); fromEnvironment = true; @@ -1117,23 +1119,10 @@ QMessagePattern::QMessagePattern() } QMessagePattern::~QMessagePattern() -{ - for (int i = 0; literals[i]; ++i) - delete [] literals[i]; - delete [] literals; - literals = 0; - delete [] tokens; - tokens = 0; -} + = default; void QMessagePattern::setPattern(const QString &pattern) { - if (literals) { - for (int i = 0; literals[i]; ++i) - delete [] literals[i]; - delete [] literals; - } - delete [] tokens; timeArgs.clear(); #ifdef QLOGGING_HAVE_BACKTRACE backtraceArgs.clear(); @@ -1171,9 +1160,9 @@ void QMessagePattern::setPattern(const QString &pattern) lexemes.append(lexeme); // tokenizer - QVarLengthArray<const char*> literalsVar; - tokens = new const char*[lexemes.size() + 1]; - tokens[lexemes.size()] = 0; + std::vector<std::unique_ptr<const char[]>> literalsVar; + tokens.reset(new const char*[lexemes.size() + 1]); + tokens[lexemes.size()] = nullptr; bool nestedIfError = false; bool inIf = false; @@ -1267,7 +1256,7 @@ void QMessagePattern::setPattern(const QString &pattern) char *literal = new char[lexeme.size() + 1]; strncpy(literal, lexeme.toLatin1().constData(), lexeme.size()); literal[lexeme.size()] = '\0'; - literalsVar.append(literal); + literalsVar.emplace_back(literal); tokens[i] = literal; } } @@ -1279,9 +1268,8 @@ void QMessagePattern::setPattern(const QString &pattern) if (!error.isEmpty()) qt_message_print(error); - literals = new const char*[literalsVar.size() + 1]; - literals[literalsVar.size()] = 0; - memcpy(literals, literalsVar.constData(), literalsVar.size() * sizeof(const char*)); + literals.reset(new std::unique_ptr<const char[]>[literalsVar.size() + 1]); + std::move(literalsVar.begin(), literalsVar.end(), &literals[0]); } #if defined(QLOGGING_HAVE_BACKTRACE) && !defined(QT_BOOTSTRAPPED) @@ -1406,7 +1394,7 @@ QString qFormatLogMessage(QtMsgType type, const QMessageLogContext &context, con #endif // we do not convert file, function, line literals to local encoding due to overhead - for (int i = 0; pattern->tokens[i] != 0; ++i) { + for (int i = 0; pattern->tokens[i]; ++i) { const char *token = pattern->tokens[i]; if (token == endifTokenC) { skip = false; @@ -1512,9 +1500,9 @@ static void qDefaultMsgHandler(QtMsgType type, const char *buf); static void qDefaultMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &buf); // pointer to QtMsgHandler debug handler (without context) -static QBasicAtomicPointer<void (QtMsgType, const char*)> msgHandler = Q_BASIC_ATOMIC_INITIALIZER(qDefaultMsgHandler); +static QBasicAtomicPointer<void (QtMsgType, const char*)> msgHandler = Q_BASIC_ATOMIC_INITIALIZER(nullptr); // pointer to QtMessageHandler debug handler (with context) -static QBasicAtomicPointer<void (QtMsgType, const QMessageLogContext &, const QString &)> messageHandler = Q_BASIC_ATOMIC_INITIALIZER(qDefaultMessageHandler); +static QBasicAtomicPointer<void (QtMsgType, const QMessageLogContext &, const QString &)> messageHandler = Q_BASIC_ATOMIC_INITIALIZER(nullptr); // ------------------------ Alternate logging sinks ------------------------- @@ -1826,14 +1814,15 @@ static void qt_message_print(QtMsgType msgType, const QMessageLogContext &contex // prevent recursion in case the message handler generates messages // itself, e.g. by using Qt API if (grabMessageHandler()) { + const auto ungrab = qScopeGuard([]{ ungrabMessageHandler(); }); + auto oldStyle = msgHandler.loadAcquire(); + auto newStye = messageHandler.loadAcquire(); // prefer new message handler over the old one - if (msgHandler.load() == qDefaultMsgHandler - || messageHandler.load() != qDefaultMessageHandler) { - (*messageHandler.load())(msgType, context, message); + if (newStye || !oldStyle) { + (newStye ? newStye : qDefaultMessageHandler)(msgType, context, message); } else { - (*msgHandler.load())(msgType, message.toLocal8Bit().constData()); + (oldStyle ? oldStyle : qDefaultMsgHandler)(msgType, message.toLocal8Bit().constData()); } - ungrabMessageHandler(); } else { fprintf(stderr, "%s\n", message.toLocal8Bit().constData()); } @@ -2084,18 +2073,20 @@ void qErrnoWarning(int code, const char *msg, ...) QtMessageHandler qInstallMessageHandler(QtMessageHandler h) { - if (!h) - h = qDefaultMessageHandler; - //set 'h' and return old message handler - return messageHandler.fetchAndStoreRelaxed(h); + const auto old = messageHandler.fetchAndStoreOrdered(h); + if (old) + return old; + else + return qDefaultMessageHandler; } QtMsgHandler qInstallMsgHandler(QtMsgHandler h) { - if (!h) - h = qDefaultMsgHandler; - //set 'h' and return old message handler - return msgHandler.fetchAndStoreRelaxed(h); + const auto old = msgHandler.fetchAndStoreOrdered(h); + if (old) + return old; + else + return qDefaultMsgHandler; } void qSetMessagePattern(const QString &pattern) diff --git a/src/corelib/global/qmalloc.cpp b/src/corelib/global/qmalloc.cpp index 05676a0da2..b071c1df62 100644 --- a/src/corelib/global/qmalloc.cpp +++ b/src/corelib/global/qmalloc.cpp @@ -74,18 +74,18 @@ void *qRealloc(void *ptr, size_t size) void *qMallocAligned(size_t size, size_t alignment) { - return qReallocAligned(0, size, 0, alignment); + return qReallocAligned(nullptr, size, 0, alignment); } void *qReallocAligned(void *oldptr, size_t newsize, size_t oldsize, size_t alignment) { // fake an aligned allocation - void *actualptr = oldptr ? static_cast<void **>(oldptr)[-1] : 0; + void *actualptr = oldptr ? static_cast<void **>(oldptr)[-1] : nullptr; if (alignment <= sizeof(void*)) { // special, fast case void **newptr = static_cast<void **>(realloc(actualptr, newsize + sizeof(void*))); if (!newptr) - return 0; + return nullptr; if (newptr == actualptr) { // realloc succeeded without reallocating return oldptr; @@ -105,7 +105,7 @@ void *qReallocAligned(void *oldptr, size_t newsize, size_t oldsize, size_t align void *real = realloc(actualptr, newsize + alignment); if (!real) - return 0; + return nullptr; quintptr faked = reinterpret_cast<quintptr>(real) + alignment; faked &= ~(alignment - 1); diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc index 45d79902c7..0ff6be2049 100644 --- a/src/corelib/global/qnamespace.qdoc +++ b/src/corelib/global/qnamespace.qdoc @@ -2369,7 +2369,7 @@ */ /*! - \enum Qt::SplitBehavior + \enum Qt::SplitBehaviorFlags \since 5.14 This enum specifies how the split() functions should behave with diff --git a/src/corelib/global/qoperatingsystemversion.cpp b/src/corelib/global/qoperatingsystemversion.cpp index 42a1275621..9084ad933c 100644 --- a/src/corelib/global/qoperatingsystemversion.cpp +++ b/src/corelib/global/qoperatingsystemversion.cpp @@ -356,6 +356,14 @@ bool QOperatingSystemVersion::isAnyOfType(std::initializer_list<OSType> types) c } /*! + \variable QOperatingSystemVersion::WindowsVista + \brief a version corresponding to Windows Vista (version 6.0). + \since 6.0 + */ +const QOperatingSystemVersion QOperatingSystemVersion::WindowsVista = + QOperatingSystemVersion(QOperatingSystemVersion::Windows, 6, 0); + +/*! \variable QOperatingSystemVersion::Windows7 \brief a version corresponding to Windows 7 (version 6.1). \since 5.9 diff --git a/src/corelib/global/qoperatingsystemversion.h b/src/corelib/global/qoperatingsystemversion.h index e99e4f8997..75c54b60df 100644 --- a/src/corelib/global/qoperatingsystemversion.h +++ b/src/corelib/global/qoperatingsystemversion.h @@ -60,6 +60,7 @@ public: Android }; + static const QOperatingSystemVersion WindowsVista; static const QOperatingSystemVersion Windows7; static const QOperatingSystemVersion Windows8; static const QOperatingSystemVersion Windows8_1; diff --git a/src/corelib/global/qrandom.cpp b/src/corelib/global/qrandom.cpp index 2ee8f0dd01..711eb8f4d5 100644 --- a/src/corelib/global/qrandom.cpp +++ b/src/corelib/global/qrandom.cpp @@ -186,7 +186,7 @@ struct QRandomGenerator::SystemGenerator #endif static void closeDevice() { - int fd = self().fdp1.load() - 1; + int fd = self().fdp1.loadRelaxed() - 1; if (fd >= 0) qt_safe_close(fd); } @@ -310,7 +310,7 @@ static void fallback_fill(quint32 *ptr, qsizetype left) noexcept *end++ = quint32(nsecs); // 5 #endif - if (quint32 v = seed.load()) + if (quint32 v = seed.loadRelaxed()) *end++ = v; // 6 #if QT_CONFIG(getauxval) @@ -359,17 +359,17 @@ Q_NEVER_INLINE void QRandomGenerator::SystemGenerator::generate(quint32 *begin, quint32 *buffer = begin; qsizetype count = end - begin; - if (Q_UNLIKELY(uint(qt_randomdevice_control) & SetRandomData)) { - uint value = uint(qt_randomdevice_control) & RandomDataMask; + if (Q_UNLIKELY(uint(qt_randomdevice_control.loadAcquire()) & SetRandomData)) { + uint value = uint(qt_randomdevice_control.loadAcquire()) & RandomDataMask; std::fill_n(buffer, count, value); return; } qsizetype filled = 0; - if (qt_has_hwrng() && (uint(qt_randomdevice_control) & SkipHWRNG) == 0) + if (qt_has_hwrng() && (uint(qt_randomdevice_control.loadAcquire()) & SkipHWRNG) == 0) filled += qt_random_cpu(buffer, count); - if (filled != count && (uint(qt_randomdevice_control) & SkipSystemRNG) == 0) { + if (filled != count && (uint(qt_randomdevice_control.loadAcquire()) & SkipSystemRNG) == 0) { qsizetype bytesFilled = fillBuffer(buffer + filled, (count - filled) * qsizetype(sizeof(*buffer))); filled += bytesFilled / qsizetype(sizeof(*buffer)); @@ -903,6 +903,10 @@ inline QRandomGenerator::SystemGenerator &QRandomGenerator::SystemGenerator::sel \snippet code/src_corelib_global_qrandom.cpp 12 + If the \a highest parameter is negative, the result will be negative too; + if it is infinite or NaN, the result will be infinite or NaN too (that is, + not random). + \sa generateDouble(), bounded() */ @@ -934,7 +938,7 @@ inline QRandomGenerator::SystemGenerator &QRandomGenerator::SystemGenerator::sel \overload Generates one random 32-bit quantity in the range between 0 (inclusive) and - \a highest (exclusive). \a highest must not be negative. + \a highest (exclusive). \a highest must be positive. Note that this function cannot be used to obtain values in the full 32-bit range of int. Instead, use generate() and cast to int. @@ -946,8 +950,11 @@ inline QRandomGenerator::SystemGenerator &QRandomGenerator::SystemGenerator::sel \fn quint32 QRandomGenerator::bounded(quint32 lowest, quint32 highest) \overload - Generates one random 32-bit quantity in the range between \a lowest (inclusive) - and \a highest (exclusive). The same result may also be obtained by using + Generates one random 32-bit quantity in the range between \a lowest + (inclusive) and \a highest (exclusive). The \a highest parameter must be + greater than \a lowest. + + The same result may also be obtained by using \l{http://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution}{\c std::uniform_int_distribution} with parameters \a lowest and \c{\a highest - 1}. That class can also be used to obtain quantities larger than 32 bits. @@ -968,7 +975,8 @@ inline QRandomGenerator::SystemGenerator &QRandomGenerator::SystemGenerator::sel \overload Generates one random 32-bit quantity in the range between \a lowest - (inclusive) and \a highest (exclusive), both of which may be negative. + (inclusive) and \a highest (exclusive), both of which may be negative, but + \a highest must be greater than \a lowest. Note that this function cannot be used to obtain values in the full 32-bit range of int. Instead, use generate() and cast to int. @@ -1222,7 +1230,7 @@ void QRandomGenerator::_fillRange(void *buffer, void *bufferEnd) quint32 *begin = static_cast<quint32 *>(buffer); quint32 *end = static_cast<quint32 *>(bufferEnd); - if (type == SystemRNG || Q_UNLIKELY(uint(qt_randomdevice_control) & (UseSystemRNG|SetRandomData))) + if (type == SystemRNG || Q_UNLIKELY(uint(qt_randomdevice_control.loadAcquire()) & (UseSystemRNG|SetRandomData))) return SystemGenerator::self().generate(begin, end); SystemAndGlobalGenerators::PRNGLocker lock(this); diff --git a/src/corelib/global/qrandom.h b/src/corelib/global/qrandom.h index 2f72528266..445b520c76 100644 --- a/src/corelib/global/qrandom.h +++ b/src/corelib/global/qrandom.h @@ -122,14 +122,16 @@ public: return quint32(value); } - int bounded(int highest) + quint32 bounded(quint32 lowest, quint32 highest) { - return int(bounded(quint32(highest))); + Q_ASSERT(highest > lowest); + return bounded(highest - lowest) + lowest; } - quint32 bounded(quint32 lowest, quint32 highest) + int bounded(int highest) { - return bounded(highest - lowest) + lowest; + Q_ASSERT(highest > 0); + return int(bounded(0U, quint32(highest))); } int bounded(int lowest, int highest) diff --git a/src/corelib/global/qrandom_p.h b/src/corelib/global/qrandom_p.h index 917a91098e..167f4cc57d 100644 --- a/src/corelib/global/qrandom_p.h +++ b/src/corelib/global/qrandom_p.h @@ -76,7 +76,9 @@ Q_CORE_EXPORT QBasicAtomicInteger<uint> qt_randomdevice_control = Q_BASIC_ATOMIC #elif defined(QT_BUILD_INTERNAL) extern Q_CORE_EXPORT QBasicAtomicInteger<uint> qt_randomdevice_control; #else -enum { qt_randomdevice_control = 0 }; +static const struct { + uint loadAcquire() const { return 0; } +} qt_randomdevice_control; #endif inline bool qt_has_hwrng() |