Reactor: Add swizzle op for UInt4.
This missing op causes horrible template errors when attempting to use UInt4 swizzles.
Change-Id: I02f9381c1d4da45b1fc32e53ad9c7fd248e21673
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/31273
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Tested-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Chris Forbes <chrisforbes@google.com>
diff --git a/src/Reactor/Reactor.cpp b/src/Reactor/Reactor.cpp
index 7ddee35..518c646 100644
--- a/src/Reactor/Reactor.cpp
+++ b/src/Reactor/Reactor.cpp
@@ -3648,6 +3648,11 @@
return RValue<UInt4>(Nucleus::createInsertElement(x.value, element.value, i));
}
+ RValue<UInt4> Swizzle(RValue<UInt4> x, unsigned char select)
+ {
+ return RValue<UInt4>(createSwizzle4(x.value, select));
+ }
+
Half::Half(RValue<Float> cast)
{
UInt fp32i = As<UInt>(cast);
diff --git a/src/Reactor/Reactor.hpp b/src/Reactor/Reactor.hpp
index c1296d8..1a8b86b 100644
--- a/src/Reactor/Reactor.hpp
+++ b/src/Reactor/Reactor.hpp
@@ -2027,6 +2027,7 @@
RValue<UInt> Extract(RValue<UInt4> val, int i);
RValue<UInt4> Insert(RValue<UInt4> val, RValue<UInt> element, int i);
// RValue<UInt4> RoundInt(RValue<Float4> cast);
+ RValue<UInt4> Swizzle(RValue<UInt4> x, unsigned char select);
class Half : public LValue<Half>
{