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)