Fix convert-relax-to-half invalid code (#3099)#3106
Fix convert-relax-to-half invalid code (#3099)#3106s-perron merged 1 commit intoKhronosGroup:masterfrom
Conversation
s-perron
left a comment
There was a problem hiding this comment.
The code looks good. Please use the match test.
include/spirv-tools/optimizer.hpp
Outdated
| // Best if run late since it will generate better code with unneeded function | ||
| // scope loads and stores and composite inserts and extracts removed. Also best | ||
| // if followed by instruction simplification, redundancy elimination and DCE. | ||
| // Best if run after standard size optimizations since it will generate better |
There was a problem hiding this comment.
I don't think we should mention the size optimizations specifically. The performance optimizations could create the same opportunities because they are essentially the same optimizations. This should be more general.
| defs_after + func_after, true, true); | ||
| } | ||
|
|
||
| TEST_F(ConvertToHalfTest, ConvertToHalfWithClosure) { |
There was a problem hiding this comment.
Please use SinglePassRunAndMatch for tests as much as possible. When done well, the make it obvious what the test is testing.
|
CI is showing a format error in ir_loader.cpp, a file I didn't even change :P |
|
Rebased to latest master and re-pushing |
| ; CHECK-NOT: OpDecorate %34 RelaxedPrecision | ||
| ; CHECK-NOT: OpDecorate %36 RelaxedPrecision | ||
| ; CHECK-NOT: OpDecorate %41 RelaxedPrecision | ||
| ; CHECK-NOT: OpDecorate %42 RelaxedPrecision |
There was a problem hiding this comment.
This nice part about this is that you could do 1 line like:
; CHECK-NOT: OpDecorate {%\w+} RelaxedPrecision
to say there are no relaxed precision decorations. A test could still pass if one remains but has a different number.
| %34 = OpLoad %v3float %foo | ||
| %36 = OpLoad %mat2v2float %bar | ||
| ; CHECK: %48 = OpFConvert %v3half %34 | ||
| ; CHECK: %49 = OpFConvert %v3half %34 |
There was a problem hiding this comment.
You can use regular expression for the ids so that even if the ids change the tests can still pass. It make them more rebust of you have to change the pass.
s-perron
left a comment
There was a problem hiding this comment.
The tests could be more robust, but they are probably good enough. Definitely easier to understand the change that was suppose to happen. Thanks.
Roll third_party/glslang/ ebf634b..40801e3 (8 commits) KhronosGroup/glslang@ebf634b...40801e3 $ git log ebf634b..40801e3 --date=short --no-merges --format='%ad %ae %s' 2020-01-06 cepheus Bump revision 2020-01-06 laddoc Add builtin constants 2019-12-26 cepheus HLSL: Fix KhronosGroup#2037: Integer dot used incorrect input for adds. 2019-12-25 laddoc atomic counter offset should align to 4 2019-11-26 laddoc Add support for ARB_uniform_buffer_object 2019-11-26 laddoc Add support for ARB_texture_multisample 2019-11-26 laddoc Add support for ARB_sample_shading 2019-12-20 cepheus Command-line: Give better error messages. From KhronosGroup#1829. Roll third_party/googletest/ 5b162a79d..306f3754a (17 commits) google/googletest@5b162a7...306f375 $ git log 5b162a79d..306f3754a --date=short --no-merges --format='%ad %ae %s' 2019-12-30 absl-team Googletest export 2019-12-30 absl-team Googletest export 2019-12-26 absl-team Googletest export 2019-12-19 absl-team Googletest export 2019-12-18 absl-team Googletest export 2019-12-18 absl-team Googletest export 2019-12-20 kontakt Make move operation noexcept. 2019-12-20 kontakt Define default destructor for test classes 2019-12-20 kontakt Deleted functions as part of public interface 2019-12-20 kontakt Review notes: Return T& from assignment operators 2019-12-17 kontakt Disable move constructor and assignment operator for test classes. 2019-12-16 krzysio Googletest export 2019-12-10 syoussefi Revert "Googletest export": disallow empty prefix 2019-12-10 syoussefi Revert "Googletest export": Remove test for empty prefix 2019-12-16 syoussefi Workaround VS bug w.r.t empty arguments to macros 2019-12-13 kravlala.1 Activate GNU extensions in case of MSYS generator 2019-11-22 krystian.kuzniarek remove stale comments about older GCC versions Roll third_party/re2/ 7470f4d02..00af5b44d (2 commits) google/re2@7470f4d...00af5b4 $ git log 7470f4d02..00af5b44d --date=short --no-merges --format='%ad %ae %s' 2020-01-05 junyer Fix a comment. 2019-12-29 junyer Make DFA use hints. Roll third_party/spirv-cross/ f912c3289..961b9014a (6 commits) KhronosGroup/SPIRV-Cross@f912c32...961b901 $ git log f912c3289..961b9014a --date=short --no-merges --format='%ad %ae %s' 2020-01-06 post Fix Clang warnings. 2020-01-06 post Roll custom versions of isalpha/isalnum. 2020-01-06 post Add test shader for OpCopyLogical with packing/unpacking. 2020-01-06 post Go through access chain path for OpCopyLogical. 2020-01-06 post Basic implementation of OpCopyLogical. 2019-12-21 dm86.jang Add debug prefix on Windows Roll third_party/spirv-tools/ 96354f5..c8bf143 (12 commits) KhronosGroup/SPIRV-Tools@96354f5...c8bf143 $ git log 96354f5..c8bf143 --date=short --no-merges --format='%ad %ae %s' 2020-01-06 dneto GetOperandConstants operand can be const (KhronosGroup#3126) 2019-12-27 dneto Avoid pessimizing std::move (KhronosGroup#3124) 2019-12-27 kburjack Fix typo in validation message (KhronosGroup#3122) 2019-12-27 greg Change default version for CreatInstBindlessCheckPass to 2 (KhronosGroup#3119) 2019-12-20 greg Fix convert-relax-to-half invalid code (KhronosGroup#3099) (KhronosGroup#3106) 2019-12-19 dneto Support OpenCL.DebugInfo.100 extended instruction set (KhronosGroup#3080) 2019-12-19 afdx spirv-fuzz: Always add new globals to entry point interfaces (KhronosGroup#3113) 2019-12-19 afdx spirv-fuzz: Transformation to add a new function to a module (KhronosGroup#3114) 2019-12-19 afdx spirv-fuzz: Avoid passing access chains as parameters (KhronosGroup#3112) 2019-12-18 dneto Add support for SPV_KHR_non_semantic_info (KhronosGroup#3110) 2019-12-16 afdx spirv-fuzz: Transformations to add types, constants and variables (KhronosGroup#3101) 2019-12-16 greg Make Instrumentation format version 2 the default (Step 1) (KhronosGroup#3096) Created with: roll-dep third_party/effcee third_party/glslang third_party/googletest third_party/re2 third_party/spirv-cross third_party/spirv-headers third_party/spirv-tools
Rewrite to do formal closure of relaxed precision on composite and phi instructions contiguous to relaxed computations to "minimize" convert operations.