SpirvShader: Implement GLSLstd450Frexp
Bug: b/126873455
Tests: dEQP-VK.glsl.builtin.function.common.frexp.*
Change-Id: Ic725c53191c3a6ec6494859d6eb8e6a8eb77c90e
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28628
Tested-by: Ben Clayton <bclayton@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Reactor/Reactor.cpp b/src/Reactor/Reactor.cpp
index 80d12e0..96a8d25 100644
--- a/src/Reactor/Reactor.cpp
+++ b/src/Reactor/Reactor.cpp
@@ -3572,6 +3572,16 @@
return RValue<UInt4>(Nucleus::createNot(val.value));
}
+ RValue<UInt> Extract(RValue<UInt4> x, int i)
+ {
+ return RValue<UInt>(Nucleus::createExtractElement(x.value, Int::getType(), i));
+ }
+
+ RValue<UInt4> Insert(RValue<UInt4> x, RValue<UInt> element, int i)
+ {
+ return RValue<UInt4>(Nucleus::createInsertElement(x.value, element.value, i));
+ }
+
Half::Half(RValue<Float> cast)
{
UInt fp32i = As<UInt>(cast);