isnan and isinf implementation Added the missing implementation for isinf and isnan. Change-Id: Ice603956a4ed8ef9515ae8f501b2876ce5fab584 Reviewed-on: https://swiftshader-review.googlesource.com/13608 Tested-by: Alexis Hétu <sugoi@google.com> Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Reactor/LLVMReactor.cpp b/src/Reactor/LLVMReactor.cpp index 8a4ba2f..fd99bf1 100644 --- a/src/Reactor/LLVMReactor.cpp +++ b/src/Reactor/LLVMReactor.cpp
@@ -5791,6 +5791,16 @@ return RValue<Int4>(Nucleus::createSExt(Nucleus::createFCmpOGT(x.value, y.value), Int4::getType())); } + RValue<Int4> IsInf(RValue<Float4> x) + { + return CmpEQ(As<Int4>(x) & Int4(0x7FFFFFFF), Int4(0x7F800000)); + } + + RValue<Int4> IsNan(RValue<Float4> x) + { + return ~CmpEQ(x, x); + } + RValue<Float4> Round(RValue<Float4> x) { if(CPUID::supportsSSE4_1())