SPIRV-Tools/test
David Neto 2937538210
Fix undef behaviour in hex float parsing (#5025)
When the parser saw more significant hex digits than fit in
the target type, it would compute a nonsensical shift amount, resulting
in undefined behaviour.

Now, drop the excess bits, effectively truncating the significand.

Also guard against overflow of the exponent in the extraordinary (and untested)
case where we see more than, for example, 2**(32-4+1) significant hex digits
for a 32-bit float, or 2**(16-4+1) significant hex digits for a 16-bit
float.

Also guard against overflow of the indexing counting the number of
significant bits.  When that would occur silently drop any further
significant bits.  (Untested)

Avoid hex floats in C++ code. It's a C++17 feature.

Fixes: #4724
2022-12-19 15:46:57 -05:00
..
diff Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
fuzz Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
fuzzers Fix opt fuzzer test harness (#4670) 2022-01-07 15:03:29 +00:00
link Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
lint Add divergence analysis to linter (#4465) 2021-08-23 17:03:28 -04:00
opt [spirv-opt] Clone names for new struct in EliminateIODeadComponents (#5016) 2022-12-19 10:20:44 -07:00
reduce Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
scripts Remove unneeded future imports (#2739) 2019-07-24 15:29:38 -04:00
tools Basic support for SPIR-V 1.6 (#4663) 2021-12-15 14:38:28 -05:00
util Revert "Optimize DefUseManager allocations (#4709)" (#4846) 2022-07-12 13:14:47 -06:00
val Fix layout validation (#5015) 2022-12-15 21:38:09 -05:00
wasm Add Wasm build (#3752) 2021-11-01 16:45:51 -04:00
assembly_context_test.cpp Add descriptor array scalar replacement (#2742) 2019-08-08 10:53:19 -04:00
assembly_format_test.cpp Assembler: Can't set an ID in instruction without result ID (#2852) 2019-09-11 13:15:25 -04:00
binary_destroy_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
binary_endianness_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
binary_header_get_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
binary_parse_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
binary_strnlen_s_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
binary_to_text_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
binary_to_text.literal_test.cpp Fix endianness of string literals (#4622) 2021-12-08 12:01:26 -05:00
c_interface_test.cpp spirv-as: Add opcode name when possible (#4757) 2022-03-28 14:46:39 +00:00
CMakeLists.txt Introduce spirv-diff (#4611) 2022-02-02 10:33:18 -05:00
comment_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
cpp_interface_test.cpp Test operator overloads for SPIR-V C++ mask enums (#5021) 2022-12-16 11:17:39 -05:00
diagnostic_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
enum_set_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
enum_string_mapping_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
ext_inst.cldebug100_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
ext_inst.debuginfo_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
ext_inst.glsl_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
ext_inst.non_semantic_test.cpp Add support for SPV_KHR_non_semantic_info (#3110) 2019-12-18 18:10:29 -05:00
ext_inst.opencl_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
fix_word_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
generator_magic_number_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
hex_float_test.cpp Fix undef behaviour in hex float parsing (#5025) 2022-12-19 15:46:57 -05:00
immediate_int_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
libspirv_macros_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
log_test.cpp Remove source/message.h (#1838) 2018-08-14 15:41:21 -04:00
name_mapper_test.cpp Add gl_BaseInstance to the name mapper. (#3462) 2020-06-26 11:54:35 -05:00
named_id_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
opcode_make_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
opcode_require_capabilities_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
opcode_split_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
opcode_table_get_test.cpp Favour 'integrity' over 'coherence' as a replacement for 'sanity'. (#3619) 2020-09-10 09:52:21 -04:00
operand_capabilities_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
operand_pattern_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
operand_test.cpp Avoid operand type range checks (#3379) 2020-07-27 13:14:03 -04:00
operand-class-test-coverage.csv Fix operand class test coverage table. 2016-09-23 11:58:25 -04:00
parse_number_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
pch_test.cpp Enable precompiled headers for spirv-tools(-shared) and some unit tests (#2026) 2018-11-06 09:26:23 -05:00
pch_test.h Enable precompiled headers for spirv-tools(-shared) and some unit tests (#2026) 2018-11-06 09:26:23 -05:00
preserve_numeric_ids_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
software_version_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
string_utils_test.cpp Move utils/ to spvtools::utils 2018-07-06 16:47:46 -04:00
target_env_test.cpp Vulkan 1.3 (#4686) 2022-01-25 10:36:08 -05:00
test_fixture.h Fix endianness of string literals (#4622) 2021-12-08 12:01:26 -05:00
text_advance_test.cpp spirv-as: Avoid recursion when skipping whitespace (#4866) 2022-07-26 10:56:04 -04:00
text_destroy_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_literal_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
text_start_new_inst_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_to_binary_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
text_to_binary.annotation_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
text_to_binary.barrier_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
text_to_binary.composite_test.cpp Support SPIR-V 1.4 (#2550) 2019-05-07 12:27:18 -04:00
text_to_binary.constant_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
text_to_binary.control_flow_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
text_to_binary.debug_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
text_to_binary.device_side_enqueue_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
text_to_binary.extension_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
text_to_binary.function_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
text_to_binary.group_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
text_to_binary.image_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
text_to_binary.literal_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_to_binary.memory_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
text_to_binary.misc_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
text_to_binary.mode_setting_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
text_to_binary.pipe_storage_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
text_to_binary.reserved_sampling_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
text_to_binary.subgroup_dispatch_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
text_to_binary.type_declaration_test.cpp Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00
text_word_get_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
timer_test.cpp Remove extra semis (#2717) 2019-07-08 15:07:36 -04:00
unit_spirv.cpp Fix round trip tests that weren't instantiated (#3417) 2020-06-10 11:11:46 -04:00
unit_spirv.h Switch SPIRV-Tools to use spirv.hpp11 internally (#4981) 2022-11-04 17:27:10 -04:00