Reactor: Add UInt4 constructors taking UInt
Odd that these don't exist already.
Change-Id: I018dc4eb5144cb4c359c790aadabc35516bdd745
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/31430
Tested-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/src/Reactor/SubzeroReactor.cpp b/src/Reactor/SubzeroReactor.cpp
index 5ee2f79..93bc879 100644
--- a/src/Reactor/SubzeroReactor.cpp
+++ b/src/Reactor/SubzeroReactor.cpp
@@ -3007,6 +3007,16 @@
storeValue((~(As<Int4>(cast) >> 31) & uiValue).value);
}
+ UInt4::UInt4(RValue<UInt> rhs) : XYZW(this)
+ {
+ Value *vector = Nucleus::createBitCast(rhs.value, UInt4::getType());
+
+ int swizzle[4] = {0, 0, 0, 0};
+ Value *replicate = Nucleus::createShuffleVector(vector, vector, swizzle);
+
+ storeValue(replicate);
+ }
+
RValue<UInt4> operator<<(RValue<UInt4> lhs, unsigned char rhs)
{
if(emulateIntrinsics)