Index: test/cctest/test-disasm-ia32.cc |
=================================================================== |
--- test/cctest/test-disasm-ia32.cc (revision 3027) |
+++ test/cctest/test-disasm-ia32.cc (working copy) |
@@ -363,7 +363,31 @@ |
__ divsd(xmm1, xmm0); |
__ movdbl(xmm1, Operand(ebx, ecx, times_4, 10000)); |
__ movdbl(Operand(ebx, ecx, times_4, 10000), xmm1); |
+ __ comisd(xmm0, xmm1); |
} |
+ |
+ // cmov. |
+ { |
+ CHECK(CpuFeatures::IsSupported(CpuFeatures::CMOV)); |
+ CpuFeatures::Scope use_cmov(CpuFeatures::CMOV); |
+ __ cmov(overflow, eax, Operand(eax, 0)); |
+ __ cmov(no_overflow, eax, Operand(eax, 1)); |
+ __ cmov(below, eax, Operand(eax, 2)); |
+ __ cmov(above_equal, eax, Operand(eax, 3)); |
+ __ cmov(equal, eax, Operand(ebx, 0)); |
+ __ cmov(not_equal, eax, Operand(ebx, 1)); |
+ __ cmov(below_equal, eax, Operand(ebx, 2)); |
+ __ cmov(above, eax, Operand(ebx, 3)); |
+ __ cmov(sign, eax, Operand(ecx, 0)); |
+ __ cmov(not_sign, eax, Operand(ecx, 1)); |
+ __ cmov(parity_even, eax, Operand(ecx, 2)); |
+ __ cmov(parity_odd, eax, Operand(ecx, 3)); |
+ __ cmov(less, eax, Operand(edx, 0)); |
+ __ cmov(greater_equal, eax, Operand(edx, 1)); |
+ __ cmov(less_equal, eax, Operand(edx, 2)); |
+ __ cmov(greater, eax, Operand(edx, 3)); |
+ } |
+ |
__ ret(0); |
CodeDesc desc; |