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>
 	{