diff --git a/src/Reactor/LLVMReactor.cpp b/src/Reactor/LLVMReactor.cpp
index d36c2e8..8564f8a 100644
--- a/src/Reactor/LLVMReactor.cpp
+++ b/src/Reactor/LLVMReactor.cpp
@@ -3322,7 +3322,7 @@
 #if defined(__i386__) || defined(__x86_64__)
 	if(CPUID::supportsSSE4_1())
 	{
-		frc = x - Floor(x);
+		frc = x - x86::floorps(x);
 	}
 	else
 	{
@@ -3656,7 +3656,17 @@
 
 RValue<Float> rcpss(RValue<Float> val)
 {
-	Value *vector = Nucleus::createInsertElement(V(llvm::UndefValue::get(T(Float4::type()))), val.value(), 0);
+	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);
 
 	return RValue<Float>(Nucleus::createExtractElement(createInstruction(llvm::Intrinsic::x86_sse_rcp_ss, vector), Float::type(), 0));
 }
@@ -3668,7 +3678,17 @@
 
 RValue<Float> rsqrtss(RValue<Float> val)
 {
-	Value *vector = Nucleus::createInsertElement(V(llvm::UndefValue::get(T(Float4::type()))), val.value(), 0);
+	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);
 
 	return RValue<Float>(Nucleus::createExtractElement(createInstruction(llvm::Intrinsic::x86_sse_rsqrt_ss, vector), Float::type(), 0));
 }
@@ -3703,6 +3723,15 @@
 	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));
