Revert workaround for MemorySanitizer scalar SSE false positives

The roundss, rcpps, and rsqrtss intrinsics are now properly handled by
MemorySanitizer instrumentation, so the Reactor-level workaround can be
removed.

The workaround consisted of initializing the whole result vector, but
optimization passes eliminated it, causing false positives.

Bug: b/172238865
Bug: b/188205704
Change-Id: Iccb47b59ca143a694fff1cfe45c81ada1b7abb95
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/65570
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Reactor/LLVMReactor.cpp b/src/Reactor/LLVMReactor.cpp
index f353a26..5538529 100644
--- a/src/Reactor/LLVMReactor.cpp
+++ b/src/Reactor/LLVMReactor.cpp
@@ -3596,17 +3596,7 @@
 
 RValue<Float> rcpss(RValue<Float> val)
 {
-	Value *undef = V(llvm::UndefValue::get(T(Float4::type())));
-
-	// TODO(b/172238865): MemorySanitizer does not support the rcpss instruction,
-	// which makes it look at the entire 128-bit input operand for undefined bits.
-	// Use zero-initialized values instead.
-	if(__has_feature(memory_sanitizer))
-	{
-		undef = Float4(0).loadValue();
-	}
-
-	Value *vector = Nucleus::createInsertElement(undef, val.value(), 0);
+	Value *vector = Nucleus::createInsertElement(V(llvm::UndefValue::get(T(Float4::type()))), val.value(), 0);
 
 	return RValue<Float>(Nucleus::createExtractElement(createInstruction(llvm::Intrinsic::x86_sse_rcp_ss, vector), Float::type(), 0));
 }
@@ -3618,17 +3608,7 @@
 
 RValue<Float> rsqrtss(RValue<Float> val)
 {
-	Value *undef = V(llvm::UndefValue::get(T(Float4::type())));
-
-	// TODO(b/172238865): MemorySanitizer does not support the rsqrtss instruction,
-	// which makes it look at the entire 128-bit input operand for undefined bits.
-	// Use zero-initialized values instead.
-	if(__has_feature(memory_sanitizer))
-	{
-		undef = Float4(0).loadValue();
-	}
-
-	Value *vector = Nucleus::createInsertElement(undef, val.value(), 0);
+	Value *vector = Nucleus::createInsertElement(V(llvm::UndefValue::get(T(Float4::type()))), val.value(), 0);
 
 	return RValue<Float>(Nucleus::createExtractElement(createInstruction(llvm::Intrinsic::x86_sse_rsqrt_ss, vector), Float::type(), 0));
 }
@@ -3663,15 +3643,6 @@
 	llvm::Function *roundss = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::x86_sse41_round_ss);
 
 	Value *undef = V(llvm::UndefValue::get(T(Float4::type())));
-
-	// TODO(b/172238865): MemorySanitizer does not support the roundss instruction,
-	// which makes it look at the entire 128-bit input operands for undefined bits.
-	// Use zero-initialized values instead.
-	if(__has_feature(memory_sanitizer))
-	{
-		undef = Float4(0).loadValue();
-	}
-
 	Value *vector = Nucleus::createInsertElement(undef, val.value(), 0);
 
 	return RValue<Float>(Nucleus::createExtractElement(V(jit->builder->CreateCall(roundss, { V(undef), V(vector), V(Nucleus::createConstantInt(imm)) })), Float::type(), 0));