Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1215)

Unified Diff: runtime/vm/assembler_x64_test.cc

Issue 11358262: Add support for XMM8..XMM15 (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Merge Florian's CL and added some assembler tests. Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/vm/assembler_x64_test.cc
diff --git a/runtime/vm/assembler_x64_test.cc b/runtime/vm/assembler_x64_test.cc
index f2d6fcee526bf4b66991e17f4925ce481ef8034c..31dec028833a08aa53642af85d73be1006029be0 100644
--- a/runtime/vm/assembler_x64_test.cc
+++ b/runtime/vm/assembler_x64_test.cc
@@ -1244,6 +1244,14 @@ ASSEMBLER_TEST_GENERATE(SingleFPMoves, assembler) {
__ movss(XMM5, XMM4);
__ movss(XMM6, XMM5);
__ movss(XMM7, XMM6);
+ __ movss(XMM8, XMM7);
+ __ movss(XMM9, XMM8);
+ __ movss(XMM10, XMM9);
+ __ movss(XMM11, XMM10);
+ __ movss(XMM12, XMM11);
+ __ movss(XMM13, XMM12);
+ __ movss(XMM14, XMM13);
+ __ movss(XMM15, XMM14);
__ pushq(R15); // Callee saved.
__ pushq(RAX);
__ movq(Address(RSP, 0), Immediate(0));
@@ -1328,9 +1336,17 @@ ASSEMBLER_TEST_GENERATE(DoubleFPMoves, assembler) {
__ movsd(XMM5, XMM4);
__ movsd(XMM6, XMM5);
__ movsd(XMM7, XMM6);
+ __ movsd(XMM8, XMM7);
+ __ movsd(XMM9, XMM8);
+ __ movsd(XMM10, XMM9);
+ __ movsd(XMM11, XMM10);
+ __ movsd(XMM12, XMM11);
+ __ movsd(XMM13, XMM12);
+ __ movsd(XMM14, XMM13);
+ __ movsd(XMM15, XMM14);
__ movq(Address(RSP, 0), Immediate(0));
__ movsd(XMM0, Address(RSP, 0));
- __ movsd(Address(RSP, 0), XMM7);
+ __ movsd(Address(RSP, 0), XMM15);
__ movsd(XMM1, Address(RSP, 0));
__ movq(R10, RSP);
__ movsd(Address(R10, 0), XMM1);
@@ -1341,7 +1357,15 @@ ASSEMBLER_TEST_GENERATE(DoubleFPMoves, assembler) {
__ movq(RAX, RSP);
__ movsd(Address(RAX, 0), XMM3);
__ movsd(XMM4, Address(RAX, 0));
- __ movsd(XMM7, Address(RSP, 0));
+ __ movsd(XMM15, Address(RSP, 0));
+ __ movaps(XMM14, XMM15);
+ __ movaps(XMM13, XMM14);
+ __ movaps(XMM12, XMM13);
+ __ movaps(XMM11, XMM12);
+ __ movaps(XMM10, XMM11);
+ __ movaps(XMM9, XMM10);
+ __ movaps(XMM8, XMM9);
+ __ movaps(XMM7, XMM8);
__ movaps(XMM6, XMM7);
__ movaps(XMM5, XMM6);
__ movaps(XMM4, XMM5);
@@ -1367,11 +1391,18 @@ ASSEMBLER_TEST_GENERATE(DoubleFPOperations, assembler) {
__ movsd(XMM0, Address(RSP, 0));
__ movq(RAX, Immediate(bit_cast<int64_t, double>(3.4)));
__ movq(Address(RSP, 0), RAX);
+ __ movsd(XMM12, Address(RSP, 0));
+ __ addsd(XMM8, XMM12); // 15.7
+ __ mulsd(XMM8, XMM12); // 53.38
+ __ subsd(XMM8, XMM12); // 49.98
+ __ divsd(XMM8, XMM12); // 14.7
+ __ sqrtsd(XMM8, XMM12); // 1.843
Florian Schneider 2012/11/19 10:34:33 Maybe do sqrtsd(XMM8, XMM8) instead to include the
Cutch 2012/11/19 23:28:58 Done.
Cutch 2012/11/19 23:28:58 Done, I also add the XMM0 and XMM8 values together
__ movsd(XMM1, Address(RSP, 0));
__ addsd(XMM0, XMM1); // 15.7
__ mulsd(XMM0, XMM1); // 53.38
__ subsd(XMM0, XMM1); // 49.98
__ divsd(XMM0, XMM1); // 14.7
+ __ sqrtsd(XMM0, XMM1); // 1.843
Florian Schneider 2012/11/19 10:34:33 Maybe do sqrtsd(XMM0, XMM0) instead to include the
Cutch 2012/11/19 23:28:58 I add them together. I use the subtraction op else
__ popq(RAX);
__ ret();
}
@@ -1380,7 +1411,7 @@ ASSEMBLER_TEST_GENERATE(DoubleFPOperations, assembler) {
ASSEMBLER_TEST_RUN(DoubleFPOperations, entry) {
typedef double (*SingleFPOperationsCode)();
double res = reinterpret_cast<SingleFPOperationsCode>(entry)();
- EXPECT_FLOAT_EQ(14.7, res, 0.001);
+ EXPECT_FLOAT_EQ(1.843, res, 0.001);
}
@@ -1401,6 +1432,9 @@ ASSEMBLER_TEST_RUN(Int32ToDoubleConversion, entry) {
ASSEMBLER_TEST_GENERATE(Int64ToDoubleConversion, assembler) {
__ movq(RDX, Immediate(12LL << 32));
__ cvtsi2sd(XMM0, RDX);
+ __ movsd(XMM15, XMM0); // Move to high register
+ __ addsd(XMM0, XMM0); // Stomp XMM0
+ __ movsd(XMM0, XMM15); // Move back to XMM0
__ ret();
}
@@ -1605,7 +1639,14 @@ ASSEMBLER_TEST_RUN(XorpdZeroing, entry) {
ASSEMBLER_TEST_GENERATE(XorpdZeroing2, assembler) {
+ Label done;
+ __ xorpd(XMM15, XMM15);
__ xorpd(XMM0, XMM0);
+ __ xorpd(XMM0, XMM15);
+ __ comisd(XMM0, XMM15);
+ __ j(ZERO, &done);
+ __ int3();
+ __ Bind(&done);
__ ret();
}

Powered by Google App Engine
This is Rietveld 408576698