| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/globals.h" | 5 #include "vm/globals.h" |
| 6 #if defined(TARGET_ARCH_X64) | 6 #if defined(TARGET_ARCH_X64) |
| 7 | 7 |
| 8 #include "vm/assembler.h" | 8 #include "vm/assembler.h" |
| 9 #include "vm/os.h" | 9 #include "vm/os.h" |
| 10 #include "vm/unit_test.h" | 10 #include "vm/unit_test.h" |
| (...skipping 2931 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2942 ASSEMBLER_TEST_RUN(ConditionalMovesCompare, test) { | 2942 ASSEMBLER_TEST_RUN(ConditionalMovesCompare, test) { |
| 2943 typedef int (*ConditionalMovesCompareCode)(int i, int j); | 2943 typedef int (*ConditionalMovesCompareCode)(int i, int j); |
| 2944 int res = reinterpret_cast<ConditionalMovesCompareCode>(test->entry())(10, 5); | 2944 int res = reinterpret_cast<ConditionalMovesCompareCode>(test->entry())(10, 5); |
| 2945 EXPECT_EQ(1, res); // Greater equal. | 2945 EXPECT_EQ(1, res); // Greater equal. |
| 2946 res = reinterpret_cast<ConditionalMovesCompareCode>(test->entry())(5, 5); | 2946 res = reinterpret_cast<ConditionalMovesCompareCode>(test->entry())(5, 5); |
| 2947 EXPECT_EQ(1, res); // Greater equal. | 2947 EXPECT_EQ(1, res); // Greater equal. |
| 2948 res = reinterpret_cast<ConditionalMovesCompareCode>(test->entry())(2, 5); | 2948 res = reinterpret_cast<ConditionalMovesCompareCode>(test->entry())(2, 5); |
| 2949 EXPECT_EQ(-1, res); // Less. | 2949 EXPECT_EQ(-1, res); // Less. |
| 2950 } | 2950 } |
| 2951 | 2951 |
| 2952 |
| 2953 // Return 1 if equal, 0 if not equal. |
| 2954 ASSEMBLER_TEST_GENERATE(ConditionalMovesEqual, assembler) { |
| 2955 __ xorq(RAX, RAX); |
| 2956 __ movq(RCX, Immediate(1)); |
| 2957 __ movq(RDX, CallingConventions::kArg1Reg); |
| 2958 __ cmpq(RDX, Immediate(785)); |
| 2959 __ cmoveq(RAX, RCX); |
| 2960 __ ret(); |
| 2961 } |
| 2962 |
| 2963 |
| 2964 ASSEMBLER_TEST_RUN(ConditionalMovesEqual, test) { |
| 2965 typedef int (*ConditionalMovesEqualCode)(int i); |
| 2966 int res = reinterpret_cast<ConditionalMovesEqualCode>(test->entry())(785); |
| 2967 EXPECT_EQ(1, res); |
| 2968 res = reinterpret_cast<ConditionalMovesEqualCode>(test->entry())(-12); |
| 2969 EXPECT_EQ(0, res); |
| 2970 } |
| 2971 |
| 2952 } // namespace dart | 2972 } // namespace dart |
| 2953 | 2973 |
| 2954 #endif // defined TARGET_ARCH_X64 | 2974 #endif // defined TARGET_ARCH_X64 |
| OLD | NEW |