Index: test/cctest/test-assembler-mips64.cc |
diff --git a/test/cctest/test-assembler-mips64.cc b/test/cctest/test-assembler-mips64.cc |
index e8674a4c326e7209e83b2b7d6f942f13b78a35cb..8154e36537731802384772b0aee503c35f5d5205 100644 |
--- a/test/cctest/test-assembler-mips64.cc |
+++ b/test/cctest/test-assembler-mips64.cc |
@@ -5008,6 +5008,56 @@ TEST(r6_aui_family) { |
} |
+uint64_t run_li_macro(uint64_t rs) { |
+ Isolate* isolate = CcTest::i_isolate(); |
+ HandleScope scope(isolate); |
+ MacroAssembler assm(isolate, NULL, 0, v8::internal::CodeObjectRequired::kYes); |
+ |
+ __ li(a0, rs); |
ivica.bogosavljevic
2015/12/21 16:15:56
There is a third parametar to li macro called LiFl
Alan Li
2016/01/20 14:26:59
Done.
|
+ __ mov(v0, a0); |
+ __ jr(ra); |
+ __ nop(); |
+ |
+ CodeDesc desc; |
+ assm.GetCode(&desc); |
+ Handle<Code> code = isolate->factory()->NewCode( |
+ desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
+ |
+ F2 f = FUNCTION_CAST<F2>(code->entry()); |
+ |
+ uint64_t res = |
+ reinterpret_cast<uint64_t> |
+ (CALL_GENERATED_CODE(isolate, f, 0, 0, 0, 0, 0)); |
+ |
+ return res; |
+} |
+ |
+ |
+TEST(li_macro) { |
+ CcTest::InitializeVM(); |
+ |
+ uint64_t inputs[] = { |
+ 0x0000000000000000, |
ivica.bogosavljevic
2015/12/21 16:15:56
Looks good
Alan Li
2016/01/20 14:26:59
Acknowledged.
|
+ 0x000000000000ffff, |
+ 0x00000000ffffffff, |
+ 0x0000ffffffffffff, |
+ 0xffffffffffffffff, |
+ 0xffff000000000000, |
+ 0xffffffff00000000, |
+ 0xffffffffffff0000, |
+ 0xffff0000ffff0000, |
+ 0x0000ffffffff0000, |
+ 0x0000ffff0000ffff, |
+ }; |
+ |
+ size_t nr_test_cases = sizeof(inputs) / sizeof(inputs[0]); |
+ for (size_t i = 0; i < nr_test_cases; ++i) { |
+ uint64_t res = run_li_macro(inputs[i]); |
+ CHECK_EQ(inputs[i], res); |
+ } |
+} |
+ |
+ |
uint64_t run_lwpc(int offset) { |
Isolate* isolate = CcTest::i_isolate(); |
HandleScope scope(isolate); |