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

Side by Side Diff: test/cctest/test-assembler-mips.cc

Issue 1338713004: MIPS: Fix testcases r6_beqzc and mov. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Corrections according review comments. Created 5 years, 3 months 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 unified diff | Download patch
« no previous file with comments | « src/mips64/assembler-mips64.cc ('k') | test/cctest/test-assembler-mips64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 1135 matching lines...) Expand 10 before | Expand all | Expand 10 after
1146 uint32_t trunc_big_out; 1146 uint32_t trunc_big_out;
1147 uint32_t trunc_small_out; 1147 uint32_t trunc_small_out;
1148 uint32_t cvt_big_in; 1148 uint32_t cvt_big_in;
1149 uint32_t cvt_small_in; 1149 uint32_t cvt_small_in;
1150 } T; 1150 } T;
1151 T t; 1151 T t;
1152 1152
1153 MacroAssembler assm(isolate, NULL, 0); 1153 MacroAssembler assm(isolate, NULL, 0);
1154 1154
1155 __ sw(t0, MemOperand(a0, offsetof(T, cvt_small_in))); 1155 __ sw(t0, MemOperand(a0, offsetof(T, cvt_small_in)));
1156 __ Cvt_d_uw(f10, t0, f22); 1156 __ Cvt_d_uw(f10, t0, f4);
1157 __ sdc1(f10, MemOperand(a0, offsetof(T, cvt_small_out))); 1157 __ sdc1(f10, MemOperand(a0, offsetof(T, cvt_small_out)));
1158 1158
1159 __ Trunc_uw_d(f10, f10, f22); 1159 __ Trunc_uw_d(f10, f10, f4);
1160 __ swc1(f10, MemOperand(a0, offsetof(T, trunc_small_out))); 1160 __ swc1(f10, MemOperand(a0, offsetof(T, trunc_small_out)));
1161 1161
1162 __ sw(t0, MemOperand(a0, offsetof(T, cvt_big_in))); 1162 __ sw(t0, MemOperand(a0, offsetof(T, cvt_big_in)));
1163 __ Cvt_d_uw(f8, t0, f22); 1163 __ Cvt_d_uw(f8, t0, f4);
1164 __ sdc1(f8, MemOperand(a0, offsetof(T, cvt_big_out))); 1164 __ sdc1(f8, MemOperand(a0, offsetof(T, cvt_big_out)));
1165 1165
1166 __ Trunc_uw_d(f8, f8, f22); 1166 __ Trunc_uw_d(f8, f8, f4);
1167 __ swc1(f8, MemOperand(a0, offsetof(T, trunc_big_out))); 1167 __ swc1(f8, MemOperand(a0, offsetof(T, trunc_big_out)));
1168 1168
1169 __ jr(ra); 1169 __ jr(ra);
1170 __ nop(); 1170 __ nop();
1171 1171
1172 CodeDesc desc; 1172 CodeDesc desc;
1173 assm.GetCode(&desc); 1173 assm.GetCode(&desc);
1174 Handle<Code> code = isolate->factory()->NewCode( 1174 Handle<Code> code = isolate->factory()->NewCode(
1175 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); 1175 desc, Code::ComputeFlags(Code::STUB), Handle<Code>());
1176 F3 f = FUNCTION_CAST<F3>(code->entry()); 1176 F3 f = FUNCTION_CAST<F3>(code->entry());
(...skipping 1325 matching lines...) Expand 10 before | Expand all | Expand 10 after
2502 2502
2503 __ lwc1(f2, MemOperand(a0, offsetof(TestFloat, a)) ); 2503 __ lwc1(f2, MemOperand(a0, offsetof(TestFloat, a)) );
2504 __ ldc1(f8, MemOperand(a0, offsetof(TestFloat, c)) ); 2504 __ ldc1(f8, MemOperand(a0, offsetof(TestFloat, c)) );
2505 __ sqrt_s(f6, f2); 2505 __ sqrt_s(f6, f2);
2506 __ sqrt_d(f12, f8); 2506 __ sqrt_d(f12, f8);
2507 2507
2508 if (IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) { 2508 if (IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) {
2509 __ rsqrt_d(f14, f8); 2509 __ rsqrt_d(f14, f8);
2510 __ rsqrt_s(f16, f2); 2510 __ rsqrt_s(f16, f2);
2511 __ recip_d(f18, f8); 2511 __ recip_d(f18, f8);
2512 __ recip_s(f20, f2); 2512 __ recip_s(f4, f2);
2513 } 2513 }
2514 __ swc1(f6, MemOperand(a0, offsetof(TestFloat, resultS)) ); 2514 __ swc1(f6, MemOperand(a0, offsetof(TestFloat, resultS)) );
2515 __ sdc1(f12, MemOperand(a0, offsetof(TestFloat, resultD)) ); 2515 __ sdc1(f12, MemOperand(a0, offsetof(TestFloat, resultD)) );
2516 2516
2517 if (IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) { 2517 if (IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) {
2518 __ swc1(f16, MemOperand(a0, offsetof(TestFloat, resultS1)) ); 2518 __ swc1(f16, MemOperand(a0, offsetof(TestFloat, resultS1)) );
2519 __ sdc1(f14, MemOperand(a0, offsetof(TestFloat, resultD1)) ); 2519 __ sdc1(f14, MemOperand(a0, offsetof(TestFloat, resultD1)) );
2520 __ swc1(f20, MemOperand(a0, offsetof(TestFloat, resultS2)) ); 2520 __ swc1(f4, MemOperand(a0, offsetof(TestFloat, resultS2)) );
2521 __ sdc1(f18, MemOperand(a0, offsetof(TestFloat, resultD2)) ); 2521 __ sdc1(f18, MemOperand(a0, offsetof(TestFloat, resultD2)) );
2522 } 2522 }
2523 __ jr(ra); 2523 __ jr(ra);
2524 __ nop(); 2524 __ nop();
2525 2525
2526 CodeDesc desc; 2526 CodeDesc desc;
2527 assm.GetCode(&desc); 2527 assm.GetCode(&desc);
2528 Handle<Code> code = isolate->factory()->NewCode( 2528 Handle<Code> code = isolate->factory()->NewCode(
2529 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); 2529 desc, Code::ComputeFlags(Code::STUB), Handle<Code>());
2530 F3 f = FUNCTION_CAST<F3>(code->entry()); 2530 F3 f = FUNCTION_CAST<F3>(code->entry());
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
2699 4.8, 4.8, -4.8, -0.29 2699 4.8, 4.8, -4.8, -0.29
2700 }; 2700 };
2701 2701
2702 float outputs_S[kTableLength] = { 2702 float outputs_S[kTableLength] = {
2703 4.8, 4.8, -4.8, -0.29 2703 4.8, 4.8, -4.8, -0.29
2704 }; 2704 };
2705 double outputs_D[kTableLength] = { 2705 double outputs_D[kTableLength] = {
2706 5.3, -5.3, 5.3, -2.9 2706 5.3, -5.3, 5.3, -2.9
2707 }; 2707 };
2708 2708
2709 __ ldc1(f2, MemOperand(a0, offsetof(TestFloat, a)) ); 2709 __ ldc1(f4, MemOperand(a0, offsetof(TestFloat, a)) );
2710 __ lwc1(f6, MemOperand(a0, offsetof(TestFloat, c)) ); 2710 __ lwc1(f6, MemOperand(a0, offsetof(TestFloat, c)) );
2711 __ mov_s(f18, f6); 2711 __ mov_s(f8, f6);
2712 __ mov_d(f20, f2); 2712 __ mov_d(f10, f4);
2713 __ swc1(f18, MemOperand(a0, offsetof(TestFloat, d)) ); 2713 __ swc1(f8, MemOperand(a0, offsetof(TestFloat, d)) );
2714 __ sdc1(f20, MemOperand(a0, offsetof(TestFloat, b)) ); 2714 __ sdc1(f10, MemOperand(a0, offsetof(TestFloat, b)) );
2715
2715 __ jr(ra); 2716 __ jr(ra);
2716 __ nop(); 2717 __ nop();
2717 2718
2718 CodeDesc desc; 2719 CodeDesc desc;
2719 assm.GetCode(&desc); 2720 assm.GetCode(&desc);
2720 Handle<Code> code = isolate->factory()->NewCode( 2721 Handle<Code> code = isolate->factory()->NewCode(
2721 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); 2722 desc, Code::ComputeFlags(Code::STUB), Handle<Code>());
2722 F3 f = FUNCTION_CAST<F3>(code->entry()); 2723 F3 f = FUNCTION_CAST<F3>(code->entry());
2723 for (int i = 0; i < kTableLength; i++) { 2724 for (int i = 0; i < kTableLength; i++) {
2724 test.a = inputs_D[i]; 2725 test.a = inputs_D[i];
(...skipping 1946 matching lines...) Expand 10 before | Expand all | Expand 10 after
4671 4672
4672 uint64_t run_beqzc(int32_t value, int32_t offset) { 4673 uint64_t run_beqzc(int32_t value, int32_t offset) {
4673 Isolate* isolate = CcTest::i_isolate(); 4674 Isolate* isolate = CcTest::i_isolate();
4674 HandleScope scope(isolate); 4675 HandleScope scope(isolate);
4675 4676
4676 MacroAssembler assm(isolate, NULL, 0); 4677 MacroAssembler assm(isolate, NULL, 0);
4677 4678
4678 Label stop_execution; 4679 Label stop_execution;
4679 __ li(v0, 0); 4680 __ li(v0, 0);
4680 __ li(t1, 0x66); 4681 __ li(t1, 0x66);
4681 __ push(ra);
4682 4682
4683 __ addiu(v0, v0, 0x1); // <-- offset = -32 4683 __ addiu(v0, v0, 0x1); // <-- offset = -32
4684 __ addiu(v0, v0, 0x2); 4684 __ addiu(v0, v0, 0x2);
4685 __ addiu(v0, v0, 0x10); 4685 __ addiu(v0, v0, 0x10);
4686 __ addiu(v0, v0, 0x20); 4686 __ addiu(v0, v0, 0x20);
4687 __ beq(v0, t1, &stop_execution); 4687 __ beq(v0, t1, &stop_execution);
4688 __ nop(); 4688 __ nop();
4689 4689
4690 __ beqzc(a0, offset); // BEQZC rs, offset 4690 __ beqzc(a0, offset); // BEQZC rs, offset
4691 4691
4692 __ addiu(v0, v0, 0x1); 4692 __ addiu(v0, v0, 0x1);
4693 __ addiu(v0, v0, 0x100); 4693 __ addiu(v0, v0, 0x100);
4694 __ addiu(v0, v0, 0x200); 4694 __ addiu(v0, v0, 0x200);
4695 __ addiu(v0, v0, 0x1000); 4695 __ addiu(v0, v0, 0x1000);
4696 __ addiu(v0, v0, 0x2000); // <--- offset = 16 4696 __ addiu(v0, v0, 0x2000); // <--- offset = 16
4697 __ jr(ra); 4697 __ jr(ra);
4698 __ nop(); 4698 __ nop();
4699 4699
4700 __ bind(&stop_execution); 4700 __ bind(&stop_execution);
4701 __ pop(ra);
4702 __ jr(ra); 4701 __ jr(ra);
4703 __ nop(); 4702 __ nop();
4704 4703
4705 CodeDesc desc; 4704 CodeDesc desc;
4706 assm.GetCode(&desc); 4705 assm.GetCode(&desc);
4707 Handle<Code> code = isolate->factory()->NewCode( 4706 Handle<Code> code = isolate->factory()->NewCode(
4708 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); 4707 desc, Code::ComputeFlags(Code::STUB), Handle<Code>());
4709 4708
4710 F2 f = FUNCTION_CAST<F2>(code->entry()); 4709 F2 f = FUNCTION_CAST<F2>(code->entry());
4711 4710
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
5098 }; 5097 };
5099 5098
5100 size_t nr_test_cases = sizeof(tc) / sizeof(TestCaseBal); 5099 size_t nr_test_cases = sizeof(tc) / sizeof(TestCaseBal);
5101 for (size_t i = 0; i < nr_test_cases; ++i) { 5100 for (size_t i = 0; i < nr_test_cases; ++i) {
5102 CHECK_EQ(tc[i].expected_res, run_bal(tc[i].offset)); 5101 CHECK_EQ(tc[i].expected_res, run_bal(tc[i].offset));
5103 } 5102 }
5104 } 5103 }
5105 5104
5106 5105
5107 #undef __ 5106 #undef __
OLDNEW
« no previous file with comments | « src/mips64/assembler-mips64.cc ('k') | test/cctest/test-assembler-mips64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698