diff --git a/src/base/SMPInstr.cpp b/src/base/SMPInstr.cpp
index 3bb143204ab9c75dc6d40a376ce6bd094ee421ba..0fcfcde4713c4511a3fcf030ce5e2599cf1b6859 100644
--- a/src/base/SMPInstr.cpp
+++ b/src/base/SMPInstr.cpp
@@ -22028,8 +22028,11 @@ bool SMPInstr::BuildRTL(void) {
 
 		case STARS_NN_cmpps:               // Packed Single-FP Compare
 		case STARS_NN_cmpss:               // Scalar Single-FP Compare
+			return this->BuildBinaryPlusImmedRTL(SMP_GENERAL_COMPARE, SMP_CREATE_MASK);
+			break;
+
 		case STARS_NN_comiss:              // Scalar Ordered Single-FP Compare and Set EFLAGS
-			return false;
+			return this->BuildFlagsDestBinaryRTL(SMP_S_COMPARE);
 			break;
 
 		case STARS_NN_cvtpi2ps:            // Packed signed INT32 to Packed Single-FP conversion
@@ -22209,7 +22212,7 @@ bool SMPInstr::BuildRTL(void) {
 			break;
 
 		case STARS_NN_cmpunordps:          // Packed Single-FP Compare UNORD
-			return false;
+			return this->BuildBinaryRTL(SMP_GENERAL_COMPARE);
 			break;
 
 		case STARS_NN_cmpneqps:            // Packed Single-FP Compare NOT EQ
@@ -22225,7 +22228,7 @@ bool SMPInstr::BuildRTL(void) {
 			break;
 
 		case STARS_NN_cmpordps:            // Packed Single-FP Compare ORDERED
-			return false;
+			return this->BuildBinaryRTL(SMP_GENERAL_COMPARE);
 			break;
 
 		case STARS_NN_cmpeqss:             // Scalar Single-FP Compare EQ
@@ -22241,7 +22244,7 @@ bool SMPInstr::BuildRTL(void) {
 			break;
 
 		case STARS_NN_cmpunordss:          // Scalar Single-FP Compare UNORD
-			return false;
+			return this->BuildBinaryRTL(SMP_GENERAL_COMPARE);
 			break;
 
 		case STARS_NN_cmpneqss:            // Scalar Single-FP Compare NOT EQ
@@ -22257,7 +22260,7 @@ bool SMPInstr::BuildRTL(void) {
 			break;
 
 		case STARS_NN_cmpordss:            // Scalar Single-FP Compare ORDERED
-			return false;
+			return this->BuildBinaryRTL(SMP_GENERAL_COMPARE);
 			break;
 
 		// AMD K7 instructions
@@ -22319,7 +22322,12 @@ bool SMPInstr::BuildRTL(void) {
 			break;
 
 		case STARS_NN_clflush:             // Flush Cache Line
-			return false;
+			NopRT = new SMPRegTransfer;
+			NopRT->SetParentInst(this);
+			NopRT->SetOperator(SMP_NULL_OPERATOR);
+			this->RTL.push_back(NopRT);
+			NopRT = NULL;
+			return true;
 			break;
 
 		case STARS_NN_cmppd:               // Compare Packed Double-Precision Floating-Point Values
@@ -22541,7 +22549,12 @@ bool SMPInstr::BuildRTL(void) {
 
 		case STARS_NN_monitor:             // Set up a linear address range to be monitored by hardware
 		case STARS_NN_mwait:               // Wait until write-back store performed within the range specified by the MONITOR instruction
-			return false;
+			NopRT = new SMPRegTransfer;
+			NopRT->SetParentInst(this);
+			NopRT->SetOperator(SMP_NULL_OPERATOR);
+			this->RTL.push_back(NopRT);
+			NopRT = NULL;
+			return true;
 			break;
 
 		case STARS_NN_fisttp:              // Store ST in intXX (chop) and pop
@@ -22633,7 +22646,7 @@ bool SMPInstr::BuildRTL(void) {
 
 		case STARS_NN_pfrcpv:              // Reciprocal Approximation for a Pair of 32-bit Floats
 		case STARS_NN_pfrsqrtv:            // Reciprocal Square Root Approximation for a Pair of 32-bit Floats
-			return false;
+			return this->BuildUnaryRTL(SMP_UNARY_FLOATING_ARITHMETIC);
 			break;
 
 		// SSE2 pseudoinstructions
@@ -22713,7 +22726,7 @@ bool SMPInstr::BuildRTL(void) {
 
 		case STARS_NN_dppd:                 // Dot Product of Packed Double Precision Floating-Point Values
 		case STARS_NN_dpps:                 // Dot Product of Packed Single Precision Floating-Point Values
-			return false;
+			return this->BuildBinaryPlusImmedRTL(SMP_BINARY_FLOATING_ARITHMETIC, SMP_CREATE_MASK);
 			break;
 
 		case STARS_NN_extractps:            // Extract Packed Single Precision Floating-Point Value