Subzero: temp fix Float4 % Float4 (FRem)
Subzero emits incorrect code for FRem operations on vectors. Replace
with an emulated version that calls fmodf on each component for now.
Bug: b/148139679
Change-Id: Ib541370b71b99649f8c73f982fd12cb3cde25e7f
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/40450
Presubmit-Ready: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Tested-by: Antonio Maiorano <amaiorano@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/src/Reactor/SubzeroReactor.cpp b/src/Reactor/SubzeroReactor.cpp
index 54dcf93..91de455 100644
--- a/src/Reactor/SubzeroReactor.cpp
+++ b/src/Reactor/SubzeroReactor.cpp
@@ -898,7 +898,15 @@
Value *Nucleus::createFRem(Value *lhs, Value *rhs)
{
- return createArithmetic(Ice::InstArithmetic::Frem, lhs, rhs);
+ // TODO(b/148139679) Fix Subzero generating invalid code for FRem on vector types
+ // createArithmetic(Ice::InstArithmetic::Frem, lhs, rhs);
+ UNIMPLEMENTED("Nucleus::createFRem");
+ return nullptr;
+}
+
+RValue<Float4> operator%(RValue<Float4> lhs, RValue<Float4> rhs)
+{
+ return emulated::FRem(lhs, rhs);
}
Value *Nucleus::createShl(Value *lhs, Value *rhs)