HLSL: Fix unary and binary operator type conversion issues
This fixes defects as follows: 1. handleLvalue could be called on a non-L-value, and it shouldn't be. 2. HLSL allows unary negation on non-bool values. TUnaryOperator::promote can now promote other types (e.g, int, float) to bool for this op. 3. HLSL allows binary logical operations (&&, ||) on arbitrary types, similar (2). 4. HLSL allows mod operation on arbitrary types, which will be promoted. E.g, int % float -> float % float.
Showing
- Test/baseResults/hlsl.logical.binary.frag.out 220 additions, 0 deletionsTest/baseResults/hlsl.logical.binary.frag.out
- Test/baseResults/hlsl.logical.unary.frag.out 292 additions, 0 deletionsTest/baseResults/hlsl.logical.unary.frag.out
- Test/baseResults/hlsl.promote.binary.frag.out 280 additions, 0 deletionsTest/baseResults/hlsl.promote.binary.frag.out
- Test/hlsl.logical.binary.frag 21 additions, 0 deletionsTest/hlsl.logical.binary.frag
- Test/hlsl.logical.unary.frag 29 additions, 0 deletionsTest/hlsl.logical.unary.frag
- Test/hlsl.promote.binary.frag 28 additions, 0 deletionsTest/hlsl.promote.binary.frag
- glslang/Include/intermediate.h 5 additions, 3 deletionsglslang/Include/intermediate.h
- glslang/MachineIndependent/Intermediate.cpp 59 additions, 7 deletionsglslang/MachineIndependent/Intermediate.cpp
- glslang/MachineIndependent/localintermediate.h 4 additions, 1 deletionglslang/MachineIndependent/localintermediate.h
- gtests/Hlsl.FromFile.cpp 4 additions, 1 deletiongtests/Hlsl.FromFile.cpp
- hlsl/hlslGrammar.cpp 4 additions, 1 deletionhlsl/hlslGrammar.cpp
- hlsl/hlslParseables.cpp 0 additions, 3 deletionshlsl/hlslParseables.cpp
Loading
Please register or sign in to comment