Fix transpose2x4(). Change-Id: I079991d257be4aa00a0aef938ccf0110cd005bcd Reviewed-on: https://swiftshader-review.googlesource.com/8288 Tested-by: Nicolas Capens <capn@google.com> Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/Shader/ShaderCore.cpp b/src/Shader/ShaderCore.cpp index be1ca2e..338ea08 100644 --- a/src/Shader/ShaderCore.cpp +++ b/src/Shader/ShaderCore.cpp
@@ -475,18 +475,13 @@ void transpose2x4(Float4 &row0, Float4 &row1, Float4 &row2, Float4 &row3) { - row0 = UnpackLow(row0, row1); - row1 = Float4(row0.zw, row1.zw); - row2 = UnpackHigh(row0, row1); - row3 = Float4(row2.zw, row3.zw); - } + Float4 tmp01 = UnpackLow(row0, row1); + Float4 tmp23 = UnpackHigh(row0, row1); - void transpose2x4h(Float4 &row0, Float4 &row1, Float4 &row2, Float4 &row3) - { - row0 = UnpackLow(row2, row3); - row1 = Float4(row0.zw, row1.zw); - row2 = UnpackHigh(row2, row3); - row3 = Float4(row2.zw, row3.zw); + row0 = tmp01; + row1 = Float4(tmp01.zw, row1.zw); + row2 = tmp23; + row3 = Float4(tmp23.zw, row3.zw); } void transpose4xN(Float4 &row0, Float4 &row1, Float4 &row2, Float4 &row3, int N)
diff --git a/src/Shader/ShaderCore.hpp b/src/Shader/ShaderCore.hpp index edf442c..c7b8be4 100644 --- a/src/Shader/ShaderCore.hpp +++ b/src/Shader/ShaderCore.hpp
@@ -87,7 +87,6 @@ void transpose4x2(Float4 &row0, Float4 &row1, Float4 &row2, Float4 &row3); void transpose4x1(Float4 &row0, Float4 &row1, Float4 &row2, Float4 &row3); void transpose2x4(Float4 &row0, Float4 &row1, Float4 &row2, Float4 &row3); - void transpose2x4h(Float4 &row0, Float4 &row1, Float4 &row2, Float4 &row3); void transpose4xN(Float4 &row0, Float4 &row1, Float4 &row2, Float4 &row3, int N); class Register
diff --git a/src/Shader/VertexRoutine.cpp b/src/Shader/VertexRoutine.cpp index 0d22162..42faa80 100644 --- a/src/Shader/VertexRoutine.cpp +++ b/src/Shader/VertexRoutine.cpp
@@ -687,7 +687,7 @@ } else { - if(state.output[i].write == 0x02) + if(state.output[i].write == 0x03) { transpose2x4(v.x, v.y, v.z, v.w); }