OLD | NEW |
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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 CcTest::InitializeVM(); | 54 CcTest::InitializeVM(); |
55 Isolate* isolate = CcTest::i_isolate(); | 55 Isolate* isolate = CcTest::i_isolate(); |
56 HandleScope scope(isolate); | 56 HandleScope scope(isolate); |
57 | 57 |
58 Assembler assm(isolate, NULL, 0); | 58 Assembler assm(isolate, NULL, 0); |
59 | 59 |
60 __ add(r0, r0, Operand(r1)); | 60 __ add(r0, r0, Operand(r1)); |
61 __ mov(pc, Operand(lr)); | 61 __ mov(pc, Operand(lr)); |
62 | 62 |
63 CodeDesc desc; | 63 CodeDesc desc; |
64 assm.GetCode(&desc); | 64 assm.GetCode(isolate, &desc); |
65 Handle<Code> code = isolate->factory()->NewCode( | 65 Handle<Code> code = isolate->factory()->NewCode( |
66 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 66 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
67 #ifdef DEBUG | 67 #ifdef DEBUG |
68 OFStream os(stdout); | 68 OFStream os(stdout); |
69 code->Print(os); | 69 code->Print(os); |
70 #endif | 70 #endif |
71 F2 f = FUNCTION_CAST<F2>(code->entry()); | 71 F2 f = FUNCTION_CAST<F2>(code->entry()); |
72 int res = | 72 int res = |
73 reinterpret_cast<int>(CALL_GENERATED_CODE(isolate, f, 3, 4, 0, 0, 0)); | 73 reinterpret_cast<int>(CALL_GENERATED_CODE(isolate, f, 3, 4, 0, 0, 0)); |
74 ::printf("f() = %d\n", res); | 74 ::printf("f() = %d\n", res); |
(...skipping 16 matching lines...) Expand all Loading... |
91 __ bind(&L); | 91 __ bind(&L); |
92 __ add(r0, r0, Operand(r1)); | 92 __ add(r0, r0, Operand(r1)); |
93 __ sub(r1, r1, Operand(1)); | 93 __ sub(r1, r1, Operand(1)); |
94 | 94 |
95 __ bind(&C); | 95 __ bind(&C); |
96 __ teq(r1, Operand::Zero()); | 96 __ teq(r1, Operand::Zero()); |
97 __ b(ne, &L); | 97 __ b(ne, &L); |
98 __ mov(pc, Operand(lr)); | 98 __ mov(pc, Operand(lr)); |
99 | 99 |
100 CodeDesc desc; | 100 CodeDesc desc; |
101 assm.GetCode(&desc); | 101 assm.GetCode(isolate, &desc); |
102 Handle<Code> code = isolate->factory()->NewCode( | 102 Handle<Code> code = isolate->factory()->NewCode( |
103 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 103 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
104 #ifdef DEBUG | 104 #ifdef DEBUG |
105 OFStream os(stdout); | 105 OFStream os(stdout); |
106 code->Print(os); | 106 code->Print(os); |
107 #endif | 107 #endif |
108 F1 f = FUNCTION_CAST<F1>(code->entry()); | 108 F1 f = FUNCTION_CAST<F1>(code->entry()); |
109 int res = | 109 int res = |
110 reinterpret_cast<int>(CALL_GENERATED_CODE(isolate, f, 100, 0, 0, 0, 0)); | 110 reinterpret_cast<int>(CALL_GENERATED_CODE(isolate, f, 100, 0, 0, 0, 0)); |
111 ::printf("f() = %d\n", res); | 111 ::printf("f() = %d\n", res); |
(...skipping 25 matching lines...) Expand all Loading... |
137 // some relocated stuff here, not executed | 137 // some relocated stuff here, not executed |
138 __ RecordComment("dead code, just testing relocations"); | 138 __ RecordComment("dead code, just testing relocations"); |
139 __ mov(r0, Operand(isolate->factory()->true_value())); | 139 __ mov(r0, Operand(isolate->factory()->true_value())); |
140 __ RecordComment("dead code, just testing immediate operands"); | 140 __ RecordComment("dead code, just testing immediate operands"); |
141 __ mov(r0, Operand(-1)); | 141 __ mov(r0, Operand(-1)); |
142 __ mov(r0, Operand(0xFF000000)); | 142 __ mov(r0, Operand(0xFF000000)); |
143 __ mov(r0, Operand(0xF0F0F0F0)); | 143 __ mov(r0, Operand(0xF0F0F0F0)); |
144 __ mov(r0, Operand(0xFFF0FFFF)); | 144 __ mov(r0, Operand(0xFFF0FFFF)); |
145 | 145 |
146 CodeDesc desc; | 146 CodeDesc desc; |
147 assm.GetCode(&desc); | 147 assm.GetCode(isolate, &desc); |
148 Handle<Code> code = isolate->factory()->NewCode( | 148 Handle<Code> code = isolate->factory()->NewCode( |
149 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 149 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
150 #ifdef DEBUG | 150 #ifdef DEBUG |
151 OFStream os(stdout); | 151 OFStream os(stdout); |
152 code->Print(os); | 152 code->Print(os); |
153 #endif | 153 #endif |
154 F1 f = FUNCTION_CAST<F1>(code->entry()); | 154 F1 f = FUNCTION_CAST<F1>(code->entry()); |
155 int res = | 155 int res = |
156 reinterpret_cast<int>(CALL_GENERATED_CODE(isolate, f, 10, 0, 0, 0, 0)); | 156 reinterpret_cast<int>(CALL_GENERATED_CODE(isolate, f, 10, 0, 0, 0, 0)); |
157 ::printf("f() = %d\n", res); | 157 ::printf("f() = %d\n", res); |
(...skipping 27 matching lines...) Expand all Loading... |
185 __ add(r0, r2, Operand(r0)); | 185 __ add(r0, r2, Operand(r0)); |
186 __ mov(r2, Operand(r2, LSL, 2)); | 186 __ mov(r2, Operand(r2, LSL, 2)); |
187 __ strb(r2, MemOperand(r4, offsetof(T, c))); | 187 __ strb(r2, MemOperand(r4, offsetof(T, c))); |
188 __ ldrsh(r2, MemOperand(r4, offsetof(T, s))); | 188 __ ldrsh(r2, MemOperand(r4, offsetof(T, s))); |
189 __ add(r0, r2, Operand(r0)); | 189 __ add(r0, r2, Operand(r0)); |
190 __ mov(r2, Operand(r2, ASR, 3)); | 190 __ mov(r2, Operand(r2, ASR, 3)); |
191 __ strh(r2, MemOperand(r4, offsetof(T, s))); | 191 __ strh(r2, MemOperand(r4, offsetof(T, s))); |
192 __ ldm(ia_w, sp, r4.bit() | fp.bit() | pc.bit()); | 192 __ ldm(ia_w, sp, r4.bit() | fp.bit() | pc.bit()); |
193 | 193 |
194 CodeDesc desc; | 194 CodeDesc desc; |
195 assm.GetCode(&desc); | 195 assm.GetCode(isolate, &desc); |
196 Handle<Code> code = isolate->factory()->NewCode( | 196 Handle<Code> code = isolate->factory()->NewCode( |
197 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 197 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
198 #ifdef DEBUG | 198 #ifdef DEBUG |
199 OFStream os(stdout); | 199 OFStream os(stdout); |
200 code->Print(os); | 200 code->Print(os); |
201 #endif | 201 #endif |
202 F3 f = FUNCTION_CAST<F3>(code->entry()); | 202 F3 f = FUNCTION_CAST<F3>(code->entry()); |
203 t.i = 100000; | 203 t.i = 100000; |
204 t.c = 10; | 204 t.c = 10; |
205 t.s = 1000; | 205 t.s = 1000; |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
317 | 317 |
318 // Test vmov for single-precision immediates. | 318 // Test vmov for single-precision immediates. |
319 __ vmov(s0, 0.25f); | 319 __ vmov(s0, 0.25f); |
320 __ vstr(s0, r4, offsetof(T, o)); | 320 __ vstr(s0, r4, offsetof(T, o)); |
321 __ vmov(s0, -16.0f); | 321 __ vmov(s0, -16.0f); |
322 __ vstr(s0, r4, offsetof(T, p)); | 322 __ vstr(s0, r4, offsetof(T, p)); |
323 | 323 |
324 __ ldm(ia_w, sp, r4.bit() | fp.bit() | pc.bit()); | 324 __ ldm(ia_w, sp, r4.bit() | fp.bit() | pc.bit()); |
325 | 325 |
326 CodeDesc desc; | 326 CodeDesc desc; |
327 assm.GetCode(&desc); | 327 assm.GetCode(isolate, &desc); |
328 Handle<Code> code = isolate->factory()->NewCode( | 328 Handle<Code> code = isolate->factory()->NewCode( |
329 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 329 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
330 #ifdef DEBUG | 330 #ifdef DEBUG |
331 OFStream os(stdout); | 331 OFStream os(stdout); |
332 code->Print(os); | 332 code->Print(os); |
333 #endif | 333 #endif |
334 F3 f = FUNCTION_CAST<F3>(code->entry()); | 334 F3 f = FUNCTION_CAST<F3>(code->entry()); |
335 t.a = 1.5; | 335 t.a = 1.5; |
336 t.b = 2.75; | 336 t.b = 2.75; |
337 t.c = 17.17; | 337 t.c = 17.17; |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
380 CpuFeatureScope scope(&assm, ARMv7); | 380 CpuFeatureScope scope(&assm, ARMv7); |
381 // On entry, r0 = 0xAAAAAAAA = 0b10..10101010. | 381 // On entry, r0 = 0xAAAAAAAA = 0b10..10101010. |
382 __ ubfx(r0, r0, 1, 12); // 0b00..010101010101 = 0x555 | 382 __ ubfx(r0, r0, 1, 12); // 0b00..010101010101 = 0x555 |
383 __ sbfx(r0, r0, 0, 5); // 0b11..111111110101 = -11 | 383 __ sbfx(r0, r0, 0, 5); // 0b11..111111110101 = -11 |
384 __ bfc(r0, 1, 3); // 0b11..111111110001 = -15 | 384 __ bfc(r0, 1, 3); // 0b11..111111110001 = -15 |
385 __ mov(r1, Operand(7)); | 385 __ mov(r1, Operand(7)); |
386 __ bfi(r0, r1, 3, 3); // 0b11..111111111001 = -7 | 386 __ bfi(r0, r1, 3, 3); // 0b11..111111111001 = -7 |
387 __ mov(pc, Operand(lr)); | 387 __ mov(pc, Operand(lr)); |
388 | 388 |
389 CodeDesc desc; | 389 CodeDesc desc; |
390 assm.GetCode(&desc); | 390 assm.GetCode(isolate, &desc); |
391 Handle<Code> code = isolate->factory()->NewCode( | 391 Handle<Code> code = isolate->factory()->NewCode( |
392 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 392 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
393 #ifdef DEBUG | 393 #ifdef DEBUG |
394 OFStream os(stdout); | 394 OFStream os(stdout); |
395 code->Print(os); | 395 code->Print(os); |
396 #endif | 396 #endif |
397 F1 f = FUNCTION_CAST<F1>(code->entry()); | 397 F1 f = FUNCTION_CAST<F1>(code->entry()); |
398 int res = reinterpret_cast<int>( | 398 int res = reinterpret_cast<int>( |
399 CALL_GENERATED_CODE(isolate, f, 0xAAAAAAAA, 0, 0, 0, 0)); | 399 CALL_GENERATED_CODE(isolate, f, 0xAAAAAAAA, 0, 0, 0, 0)); |
400 ::printf("f() = %d\n", res); | 400 ::printf("f() = %d\n", res); |
(...skipping 11 matching lines...) Expand all Loading... |
412 Assembler assm(isolate, NULL, 0); | 412 Assembler assm(isolate, NULL, 0); |
413 | 413 |
414 __ usat(r1, 8, Operand(r0)); // Sat 0xFFFF to 0-255 = 0xFF. | 414 __ usat(r1, 8, Operand(r0)); // Sat 0xFFFF to 0-255 = 0xFF. |
415 __ usat(r2, 12, Operand(r0, ASR, 9)); // Sat (0xFFFF>>9) to 0-4095 = 0x7F. | 415 __ usat(r2, 12, Operand(r0, ASR, 9)); // Sat (0xFFFF>>9) to 0-4095 = 0x7F. |
416 __ usat(r3, 1, Operand(r0, LSL, 16)); // Sat (0xFFFF<<16) to 0-1 = 0x0. | 416 __ usat(r3, 1, Operand(r0, LSL, 16)); // Sat (0xFFFF<<16) to 0-1 = 0x0. |
417 __ add(r0, r1, Operand(r2)); | 417 __ add(r0, r1, Operand(r2)); |
418 __ add(r0, r0, Operand(r3)); | 418 __ add(r0, r0, Operand(r3)); |
419 __ mov(pc, Operand(lr)); | 419 __ mov(pc, Operand(lr)); |
420 | 420 |
421 CodeDesc desc; | 421 CodeDesc desc; |
422 assm.GetCode(&desc); | 422 assm.GetCode(isolate, &desc); |
423 Handle<Code> code = isolate->factory()->NewCode( | 423 Handle<Code> code = isolate->factory()->NewCode( |
424 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 424 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
425 #ifdef DEBUG | 425 #ifdef DEBUG |
426 OFStream os(stdout); | 426 OFStream os(stdout); |
427 code->Print(os); | 427 code->Print(os); |
428 #endif | 428 #endif |
429 F1 f = FUNCTION_CAST<F1>(code->entry()); | 429 F1 f = FUNCTION_CAST<F1>(code->entry()); |
430 int res = reinterpret_cast<int>( | 430 int res = reinterpret_cast<int>( |
431 CALL_GENERATED_CODE(isolate, f, 0xFFFF, 0, 0, 0, 0)); | 431 CALL_GENERATED_CODE(isolate, f, 0xFFFF, 0, 0, 0, 0)); |
432 ::printf("f() = %d\n", res); | 432 ::printf("f() = %d\n", res); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
481 __ vmov(r0, s0); | 481 __ vmov(r0, s0); |
482 __ mov(pc, Operand(lr)); | 482 __ mov(pc, Operand(lr)); |
483 | 483 |
484 // The exception behaviour is not what we expected. | 484 // The exception behaviour is not what we expected. |
485 // Load a special value and return. | 485 // Load a special value and return. |
486 __ bind(&wrong_exception); | 486 __ bind(&wrong_exception); |
487 __ mov(r0, Operand(11223344)); | 487 __ mov(r0, Operand(11223344)); |
488 __ mov(pc, Operand(lr)); | 488 __ mov(pc, Operand(lr)); |
489 | 489 |
490 CodeDesc desc; | 490 CodeDesc desc; |
491 assm.GetCode(&desc); | 491 assm.GetCode(isolate, &desc); |
492 Handle<Code> code = isolate->factory()->NewCode( | 492 Handle<Code> code = isolate->factory()->NewCode( |
493 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 493 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
494 #ifdef DEBUG | 494 #ifdef DEBUG |
495 OFStream os(stdout); | 495 OFStream os(stdout); |
496 code->Print(os); | 496 code->Print(os); |
497 #endif | 497 #endif |
498 F1 f = FUNCTION_CAST<F1>(code->entry()); | 498 F1 f = FUNCTION_CAST<F1>(code->entry()); |
499 int res = | 499 int res = |
500 reinterpret_cast<int>(CALL_GENERATED_CODE(isolate, f, 0, 0, 0, 0, 0)); | 500 reinterpret_cast<int>(CALL_GENERATED_CODE(isolate, f, 0, 0, 0, 0, 0)); |
501 ::printf("res = %d\n", res); | 501 ::printf("res = %d\n", res); |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
664 __ vldm(ia_w, r4, s0, s3); | 664 __ vldm(ia_w, r4, s0, s3); |
665 __ vldm(ia_w, r4, s4, s7); | 665 __ vldm(ia_w, r4, s4, s7); |
666 | 666 |
667 __ add(r4, r1, Operand(static_cast<int32_t>(offsetof(F, a)))); | 667 __ add(r4, r1, Operand(static_cast<int32_t>(offsetof(F, a)))); |
668 __ vstm(ia_w, r4, s6, s7); | 668 __ vstm(ia_w, r4, s6, s7); |
669 __ vstm(ia_w, r4, s0, s5); | 669 __ vstm(ia_w, r4, s0, s5); |
670 | 670 |
671 __ ldm(ia_w, sp, r4.bit() | fp.bit() | pc.bit()); | 671 __ ldm(ia_w, sp, r4.bit() | fp.bit() | pc.bit()); |
672 | 672 |
673 CodeDesc desc; | 673 CodeDesc desc; |
674 assm.GetCode(&desc); | 674 assm.GetCode(isolate, &desc); |
675 Handle<Code> code = isolate->factory()->NewCode( | 675 Handle<Code> code = isolate->factory()->NewCode( |
676 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 676 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
677 #ifdef DEBUG | 677 #ifdef DEBUG |
678 OFStream os(stdout); | 678 OFStream os(stdout); |
679 code->Print(os); | 679 code->Print(os); |
680 #endif | 680 #endif |
681 F4 fn = FUNCTION_CAST<F4>(code->entry()); | 681 F4 fn = FUNCTION_CAST<F4>(code->entry()); |
682 d.a = 1.1; | 682 d.a = 1.1; |
683 d.b = 2.2; | 683 d.b = 2.2; |
684 d.c = 3.3; | 684 d.c = 3.3; |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
774 __ vldm(ia, r4, s4, s7); | 774 __ vldm(ia, r4, s4, s7); |
775 | 775 |
776 __ add(r4, r1, Operand(static_cast<int32_t>(offsetof(F, a)))); | 776 __ add(r4, r1, Operand(static_cast<int32_t>(offsetof(F, a)))); |
777 __ vstm(ia, r4, s6, s7); | 777 __ vstm(ia, r4, s6, s7); |
778 __ add(r4, r4, Operand(2 * 4)); | 778 __ add(r4, r4, Operand(2 * 4)); |
779 __ vstm(ia, r4, s0, s5); | 779 __ vstm(ia, r4, s0, s5); |
780 | 780 |
781 __ ldm(ia_w, sp, r4.bit() | fp.bit() | pc.bit()); | 781 __ ldm(ia_w, sp, r4.bit() | fp.bit() | pc.bit()); |
782 | 782 |
783 CodeDesc desc; | 783 CodeDesc desc; |
784 assm.GetCode(&desc); | 784 assm.GetCode(isolate, &desc); |
785 Handle<Code> code = isolate->factory()->NewCode( | 785 Handle<Code> code = isolate->factory()->NewCode( |
786 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 786 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
787 #ifdef DEBUG | 787 #ifdef DEBUG |
788 OFStream os(stdout); | 788 OFStream os(stdout); |
789 code->Print(os); | 789 code->Print(os); |
790 #endif | 790 #endif |
791 F4 fn = FUNCTION_CAST<F4>(code->entry()); | 791 F4 fn = FUNCTION_CAST<F4>(code->entry()); |
792 d.a = 1.1; | 792 d.a = 1.1; |
793 d.b = 2.2; | 793 d.b = 2.2; |
794 d.c = 3.3; | 794 d.c = 3.3; |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
880 __ vldm(db_w, r4, s4, s7); | 880 __ vldm(db_w, r4, s4, s7); |
881 __ vldm(db_w, r4, s0, s3); | 881 __ vldm(db_w, r4, s0, s3); |
882 | 882 |
883 __ add(r4, r1, Operand(static_cast<int32_t>(offsetof(F, h)) + 4)); | 883 __ add(r4, r1, Operand(static_cast<int32_t>(offsetof(F, h)) + 4)); |
884 __ vstm(db_w, r4, s0, s5); | 884 __ vstm(db_w, r4, s0, s5); |
885 __ vstm(db_w, r4, s6, s7); | 885 __ vstm(db_w, r4, s6, s7); |
886 | 886 |
887 __ ldm(ia_w, sp, r4.bit() | fp.bit() | pc.bit()); | 887 __ ldm(ia_w, sp, r4.bit() | fp.bit() | pc.bit()); |
888 | 888 |
889 CodeDesc desc; | 889 CodeDesc desc; |
890 assm.GetCode(&desc); | 890 assm.GetCode(isolate, &desc); |
891 Handle<Code> code = isolate->factory()->NewCode( | 891 Handle<Code> code = isolate->factory()->NewCode( |
892 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 892 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
893 #ifdef DEBUG | 893 #ifdef DEBUG |
894 OFStream os(stdout); | 894 OFStream os(stdout); |
895 code->Print(os); | 895 code->Print(os); |
896 #endif | 896 #endif |
897 F4 fn = FUNCTION_CAST<F4>(code->entry()); | 897 F4 fn = FUNCTION_CAST<F4>(code->entry()); |
898 d.a = 1.1; | 898 d.a = 1.1; |
899 d.b = 2.2; | 899 d.b = 2.2; |
900 d.c = 3.3; | 900 d.c = 3.3; |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
975 | 975 |
976 __ mov(r1, Operand(0xffffffff)); | 976 __ mov(r1, Operand(0xffffffff)); |
977 __ mov(r2, Operand::Zero()); | 977 __ mov(r2, Operand::Zero()); |
978 __ mov(r3, Operand(r2, ASR, 1), SetCC); // Unset the carry. | 978 __ mov(r3, Operand(r2, ASR, 1), SetCC); // Unset the carry. |
979 __ adc(r3, r1, Operand(r2)); | 979 __ adc(r3, r1, Operand(r2)); |
980 __ str(r3, MemOperand(r0, offsetof(I, d))); | 980 __ str(r3, MemOperand(r0, offsetof(I, d))); |
981 | 981 |
982 __ mov(pc, Operand(lr)); | 982 __ mov(pc, Operand(lr)); |
983 | 983 |
984 CodeDesc desc; | 984 CodeDesc desc; |
985 assm.GetCode(&desc); | 985 assm.GetCode(isolate, &desc); |
986 Handle<Code> code = isolate->factory()->NewCode( | 986 Handle<Code> code = isolate->factory()->NewCode( |
987 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 987 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
988 #ifdef DEBUG | 988 #ifdef DEBUG |
989 OFStream os(stdout); | 989 OFStream os(stdout); |
990 code->Print(os); | 990 code->Print(os); |
991 #endif | 991 #endif |
992 F3 f = FUNCTION_CAST<F3>(code->entry()); | 992 F3 f = FUNCTION_CAST<F3>(code->entry()); |
993 Object* dummy = CALL_GENERATED_CODE(isolate, f, &i, 0, 0, 0, 0); | 993 Object* dummy = CALL_GENERATED_CODE(isolate, f, &i, 0, 0, 0, 0); |
994 USE(dummy); | 994 USE(dummy); |
995 | 995 |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1102 __ vstm(ia_w, r4, d20, d22); | 1102 __ vstm(ia_w, r4, d20, d22); |
1103 // Move d22 into low and high. | 1103 // Move d22 into low and high. |
1104 __ vmov(r4, VmovIndexLo, d22); | 1104 __ vmov(r4, VmovIndexLo, d22); |
1105 __ str(r4, MemOperand(r0, offsetof(T, low))); | 1105 __ str(r4, MemOperand(r0, offsetof(T, low))); |
1106 __ vmov(r4, VmovIndexHi, d22); | 1106 __ vmov(r4, VmovIndexHi, d22); |
1107 __ str(r4, MemOperand(r0, offsetof(T, high))); | 1107 __ str(r4, MemOperand(r0, offsetof(T, high))); |
1108 | 1108 |
1109 __ ldm(ia_w, sp, r4.bit() | pc.bit()); | 1109 __ ldm(ia_w, sp, r4.bit() | pc.bit()); |
1110 | 1110 |
1111 CodeDesc desc; | 1111 CodeDesc desc; |
1112 assm.GetCode(&desc); | 1112 assm.GetCode(isolate, &desc); |
1113 Handle<Code> code = isolate->factory()->NewCode( | 1113 Handle<Code> code = isolate->factory()->NewCode( |
1114 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 1114 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
1115 #ifdef DEBUG | 1115 #ifdef DEBUG |
1116 OFStream os(stdout); | 1116 OFStream os(stdout); |
1117 code->Print(os); | 1117 code->Print(os); |
1118 #endif | 1118 #endif |
1119 F3 f = FUNCTION_CAST<F3>(code->entry()); | 1119 F3 f = FUNCTION_CAST<F3>(code->entry()); |
1120 t.a = 1.5; | 1120 t.a = 1.5; |
1121 t.b = 2.75; | 1121 t.b = 2.75; |
1122 t.c = 17.17; | 1122 t.c = 17.17; |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1175 __ vsub(d2, d0, d1); | 1175 __ vsub(d2, d0, d1); |
1176 __ vstr(d2, r0, offsetof(T, sub_result)); | 1176 __ vstr(d2, r0, offsetof(T, sub_result)); |
1177 __ vmul(d2, d0, d1); | 1177 __ vmul(d2, d0, d1); |
1178 __ vstr(d2, r0, offsetof(T, mul_result)); | 1178 __ vstr(d2, r0, offsetof(T, mul_result)); |
1179 __ vdiv(d2, d0, d1); | 1179 __ vdiv(d2, d0, d1); |
1180 __ vstr(d2, r0, offsetof(T, div_result)); | 1180 __ vstr(d2, r0, offsetof(T, div_result)); |
1181 | 1181 |
1182 __ mov(pc, Operand(lr)); | 1182 __ mov(pc, Operand(lr)); |
1183 | 1183 |
1184 CodeDesc desc; | 1184 CodeDesc desc; |
1185 assm.GetCode(&desc); | 1185 assm.GetCode(isolate, &desc); |
1186 Handle<Code> code = isolate->factory()->NewCode( | 1186 Handle<Code> code = isolate->factory()->NewCode( |
1187 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 1187 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
1188 #ifdef DEBUG | 1188 #ifdef DEBUG |
1189 OFStream os(stdout); | 1189 OFStream os(stdout); |
1190 code->Print(os); | 1190 code->Print(os); |
1191 #endif | 1191 #endif |
1192 F3 f = FUNCTION_CAST<F3>(code->entry()); | 1192 F3 f = FUNCTION_CAST<F3>(code->entry()); |
1193 t.left = bit_cast<double>(kHoleNanInt64); | 1193 t.left = bit_cast<double>(kHoleNanInt64); |
1194 t.right = 1; | 1194 t.right = 1; |
1195 t.add_result = 0; | 1195 t.add_result = 0; |
(...skipping 860 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2056 __ vmov(d2, r4, r5); // d2 = ff05030106040200 | 2056 __ vmov(d2, r4, r5); // d2 = ff05030106040200 |
2057 __ vtbl(d0, NeonListOperand(d2, 1), d2); | 2057 __ vtbl(d0, NeonListOperand(d2, 1), d2); |
2058 __ vstr(d0, r0, offsetof(T, vtbl)); | 2058 __ vstr(d0, r0, offsetof(T, vtbl)); |
2059 __ vtbx(d2, NeonListOperand(d2, 1), d2); | 2059 __ vtbx(d2, NeonListOperand(d2, 1), d2); |
2060 __ vstr(d2, r0, offsetof(T, vtbx)); | 2060 __ vstr(d2, r0, offsetof(T, vtbx)); |
2061 | 2061 |
2062 // Restore and return. | 2062 // Restore and return. |
2063 __ ldm(ia_w, sp, r4.bit() | r5.bit() | pc.bit()); | 2063 __ ldm(ia_w, sp, r4.bit() | r5.bit() | pc.bit()); |
2064 | 2064 |
2065 CodeDesc desc; | 2065 CodeDesc desc; |
2066 assm.GetCode(&desc); | 2066 assm.GetCode(isolate, &desc); |
2067 Handle<Code> code = isolate->factory()->NewCode( | 2067 Handle<Code> code = isolate->factory()->NewCode( |
2068 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2068 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
2069 #ifdef DEBUG | 2069 #ifdef DEBUG |
2070 OFStream os(stdout); | 2070 OFStream os(stdout); |
2071 code->Print(os); | 2071 code->Print(os); |
2072 #endif | 2072 #endif |
2073 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2073 F3 f = FUNCTION_CAST<F3>(code->entry()); |
2074 t.src0 = 0x01020304; | 2074 t.src0 = 0x01020304; |
2075 t.src1 = 0x11121314; | 2075 t.src1 = 0x11121314; |
2076 t.src2 = 0x21222324; | 2076 t.src2 = 0x21222324; |
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2333 __ uxtb(r2, r0, 8); | 2333 __ uxtb(r2, r0, 8); |
2334 __ str(r2, MemOperand(r4, offsetof(T, dst3))); | 2334 __ str(r2, MemOperand(r4, offsetof(T, dst3))); |
2335 | 2335 |
2336 __ ldr(r0, MemOperand(r4, offsetof(T, src2))); | 2336 __ ldr(r0, MemOperand(r4, offsetof(T, src2))); |
2337 __ uxtab(r2, r0, r1, 8); | 2337 __ uxtab(r2, r0, r1, 8); |
2338 __ str(r2, MemOperand(r4, offsetof(T, dst4))); | 2338 __ str(r2, MemOperand(r4, offsetof(T, dst4))); |
2339 | 2339 |
2340 __ ldm(ia_w, sp, r4.bit() | pc.bit()); | 2340 __ ldm(ia_w, sp, r4.bit() | pc.bit()); |
2341 | 2341 |
2342 CodeDesc desc; | 2342 CodeDesc desc; |
2343 assm.GetCode(&desc); | 2343 assm.GetCode(isolate, &desc); |
2344 Handle<Code> code = isolate->factory()->NewCode( | 2344 Handle<Code> code = isolate->factory()->NewCode( |
2345 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2345 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
2346 #ifdef DEBUG | 2346 #ifdef DEBUG |
2347 OFStream os(stdout); | 2347 OFStream os(stdout); |
2348 code->Print(os); | 2348 code->Print(os); |
2349 #endif | 2349 #endif |
2350 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2350 F3 f = FUNCTION_CAST<F3>(code->entry()); |
2351 t.src0 = 0x01020304; | 2351 t.src0 = 0x01020304; |
2352 t.src1 = 0x11121314; | 2352 t.src1 = 0x11121314; |
2353 t.src2 = 0x11121300; | 2353 t.src2 = 0x11121300; |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2414 | 2414 |
2415 __ ldr(r0, MemOperand(r3, offsetof(T, dividend))); | 2415 __ ldr(r0, MemOperand(r3, offsetof(T, dividend))); |
2416 __ ldr(r1, MemOperand(r3, offsetof(T, divisor))); | 2416 __ ldr(r1, MemOperand(r3, offsetof(T, divisor))); |
2417 | 2417 |
2418 __ sdiv(r2, r0, r1); | 2418 __ sdiv(r2, r0, r1); |
2419 __ str(r2, MemOperand(r3, offsetof(T, result))); | 2419 __ str(r2, MemOperand(r3, offsetof(T, result))); |
2420 | 2420 |
2421 __ bx(lr); | 2421 __ bx(lr); |
2422 | 2422 |
2423 CodeDesc desc; | 2423 CodeDesc desc; |
2424 assm.GetCode(&desc); | 2424 assm.GetCode(isolate, &desc); |
2425 Handle<Code> code = isolate->factory()->NewCode( | 2425 Handle<Code> code = isolate->factory()->NewCode( |
2426 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2426 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
2427 #ifdef DEBUG | 2427 #ifdef DEBUG |
2428 OFStream os(stdout); | 2428 OFStream os(stdout); |
2429 code->Print(os); | 2429 code->Print(os); |
2430 #endif | 2430 #endif |
2431 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2431 F3 f = FUNCTION_CAST<F3>(code->entry()); |
2432 Object* dummy; | 2432 Object* dummy; |
2433 TEST_SDIV(0, kMinInt, 0); | 2433 TEST_SDIV(0, kMinInt, 0); |
2434 TEST_SDIV(0, 1024, 0); | 2434 TEST_SDIV(0, 1024, 0); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2478 | 2478 |
2479 __ ldr(r0, MemOperand(r3, offsetof(T, dividend))); | 2479 __ ldr(r0, MemOperand(r3, offsetof(T, dividend))); |
2480 __ ldr(r1, MemOperand(r3, offsetof(T, divisor))); | 2480 __ ldr(r1, MemOperand(r3, offsetof(T, divisor))); |
2481 | 2481 |
2482 __ sdiv(r2, r0, r1); | 2482 __ sdiv(r2, r0, r1); |
2483 __ str(r2, MemOperand(r3, offsetof(T, result))); | 2483 __ str(r2, MemOperand(r3, offsetof(T, result))); |
2484 | 2484 |
2485 __ bx(lr); | 2485 __ bx(lr); |
2486 | 2486 |
2487 CodeDesc desc; | 2487 CodeDesc desc; |
2488 assm.GetCode(&desc); | 2488 assm.GetCode(isolate, &desc); |
2489 Handle<Code> code = isolate->factory()->NewCode( | 2489 Handle<Code> code = isolate->factory()->NewCode( |
2490 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2490 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
2491 #ifdef DEBUG | 2491 #ifdef DEBUG |
2492 OFStream os(stdout); | 2492 OFStream os(stdout); |
2493 code->Print(os); | 2493 code->Print(os); |
2494 #endif | 2494 #endif |
2495 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2495 F3 f = FUNCTION_CAST<F3>(code->entry()); |
2496 Object* dummy; | 2496 Object* dummy; |
2497 TEST_UDIV(0u, 0, 0); | 2497 TEST_UDIV(0u, 0, 0); |
2498 TEST_UDIV(0u, 1024, 0); | 2498 TEST_UDIV(0u, 1024, 0); |
(...skipping 10 matching lines...) Expand all Loading... |
2509 TEST(smmla) { | 2509 TEST(smmla) { |
2510 CcTest::InitializeVM(); | 2510 CcTest::InitializeVM(); |
2511 Isolate* const isolate = CcTest::i_isolate(); | 2511 Isolate* const isolate = CcTest::i_isolate(); |
2512 HandleScope scope(isolate); | 2512 HandleScope scope(isolate); |
2513 RandomNumberGenerator* const rng = isolate->random_number_generator(); | 2513 RandomNumberGenerator* const rng = isolate->random_number_generator(); |
2514 Assembler assm(isolate, nullptr, 0); | 2514 Assembler assm(isolate, nullptr, 0); |
2515 __ smmla(r1, r1, r2, r3); | 2515 __ smmla(r1, r1, r2, r3); |
2516 __ str(r1, MemOperand(r0)); | 2516 __ str(r1, MemOperand(r0)); |
2517 __ bx(lr); | 2517 __ bx(lr); |
2518 CodeDesc desc; | 2518 CodeDesc desc; |
2519 assm.GetCode(&desc); | 2519 assm.GetCode(isolate, &desc); |
2520 Handle<Code> code = isolate->factory()->NewCode( | 2520 Handle<Code> code = isolate->factory()->NewCode( |
2521 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2521 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
2522 #ifdef OBJECT_PRINT | 2522 #ifdef OBJECT_PRINT |
2523 code->Print(std::cout); | 2523 code->Print(std::cout); |
2524 #endif | 2524 #endif |
2525 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2525 F3 f = FUNCTION_CAST<F3>(code->entry()); |
2526 for (size_t i = 0; i < 128; ++i) { | 2526 for (size_t i = 0; i < 128; ++i) { |
2527 int32_t r, x = rng->NextInt(), y = rng->NextInt(), z = rng->NextInt(); | 2527 int32_t r, x = rng->NextInt(), y = rng->NextInt(), z = rng->NextInt(); |
2528 Object* dummy = CALL_GENERATED_CODE(isolate, f, &r, x, y, z, 0); | 2528 Object* dummy = CALL_GENERATED_CODE(isolate, f, &r, x, y, z, 0); |
2529 CHECK_EQ(bits::SignedMulHighAndAdd32(x, y, z), r); | 2529 CHECK_EQ(bits::SignedMulHighAndAdd32(x, y, z), r); |
2530 USE(dummy); | 2530 USE(dummy); |
2531 } | 2531 } |
2532 } | 2532 } |
2533 | 2533 |
2534 | 2534 |
2535 TEST(smmul) { | 2535 TEST(smmul) { |
2536 CcTest::InitializeVM(); | 2536 CcTest::InitializeVM(); |
2537 Isolate* const isolate = CcTest::i_isolate(); | 2537 Isolate* const isolate = CcTest::i_isolate(); |
2538 HandleScope scope(isolate); | 2538 HandleScope scope(isolate); |
2539 RandomNumberGenerator* const rng = isolate->random_number_generator(); | 2539 RandomNumberGenerator* const rng = isolate->random_number_generator(); |
2540 Assembler assm(isolate, nullptr, 0); | 2540 Assembler assm(isolate, nullptr, 0); |
2541 __ smmul(r1, r1, r2); | 2541 __ smmul(r1, r1, r2); |
2542 __ str(r1, MemOperand(r0)); | 2542 __ str(r1, MemOperand(r0)); |
2543 __ bx(lr); | 2543 __ bx(lr); |
2544 CodeDesc desc; | 2544 CodeDesc desc; |
2545 assm.GetCode(&desc); | 2545 assm.GetCode(isolate, &desc); |
2546 Handle<Code> code = isolate->factory()->NewCode( | 2546 Handle<Code> code = isolate->factory()->NewCode( |
2547 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2547 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
2548 #ifdef OBJECT_PRINT | 2548 #ifdef OBJECT_PRINT |
2549 code->Print(std::cout); | 2549 code->Print(std::cout); |
2550 #endif | 2550 #endif |
2551 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2551 F3 f = FUNCTION_CAST<F3>(code->entry()); |
2552 for (size_t i = 0; i < 128; ++i) { | 2552 for (size_t i = 0; i < 128; ++i) { |
2553 int32_t r, x = rng->NextInt(), y = rng->NextInt(); | 2553 int32_t r, x = rng->NextInt(), y = rng->NextInt(); |
2554 Object* dummy = CALL_GENERATED_CODE(isolate, f, &r, x, y, 0, 0); | 2554 Object* dummy = CALL_GENERATED_CODE(isolate, f, &r, x, y, 0, 0); |
2555 CHECK_EQ(bits::SignedMulHigh32(x, y), r); | 2555 CHECK_EQ(bits::SignedMulHigh32(x, y), r); |
2556 USE(dummy); | 2556 USE(dummy); |
2557 } | 2557 } |
2558 } | 2558 } |
2559 | 2559 |
2560 | 2560 |
2561 TEST(sxtb) { | 2561 TEST(sxtb) { |
2562 CcTest::InitializeVM(); | 2562 CcTest::InitializeVM(); |
2563 Isolate* const isolate = CcTest::i_isolate(); | 2563 Isolate* const isolate = CcTest::i_isolate(); |
2564 HandleScope scope(isolate); | 2564 HandleScope scope(isolate); |
2565 RandomNumberGenerator* const rng = isolate->random_number_generator(); | 2565 RandomNumberGenerator* const rng = isolate->random_number_generator(); |
2566 Assembler assm(isolate, nullptr, 0); | 2566 Assembler assm(isolate, nullptr, 0); |
2567 __ sxtb(r1, r1); | 2567 __ sxtb(r1, r1); |
2568 __ str(r1, MemOperand(r0)); | 2568 __ str(r1, MemOperand(r0)); |
2569 __ bx(lr); | 2569 __ bx(lr); |
2570 CodeDesc desc; | 2570 CodeDesc desc; |
2571 assm.GetCode(&desc); | 2571 assm.GetCode(isolate, &desc); |
2572 Handle<Code> code = isolate->factory()->NewCode( | 2572 Handle<Code> code = isolate->factory()->NewCode( |
2573 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2573 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
2574 #ifdef OBJECT_PRINT | 2574 #ifdef OBJECT_PRINT |
2575 code->Print(std::cout); | 2575 code->Print(std::cout); |
2576 #endif | 2576 #endif |
2577 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2577 F3 f = FUNCTION_CAST<F3>(code->entry()); |
2578 for (size_t i = 0; i < 128; ++i) { | 2578 for (size_t i = 0; i < 128; ++i) { |
2579 int32_t r, x = rng->NextInt(); | 2579 int32_t r, x = rng->NextInt(); |
2580 Object* dummy = CALL_GENERATED_CODE(isolate, f, &r, x, 0, 0, 0); | 2580 Object* dummy = CALL_GENERATED_CODE(isolate, f, &r, x, 0, 0, 0); |
2581 CHECK_EQ(static_cast<int32_t>(static_cast<int8_t>(x)), r); | 2581 CHECK_EQ(static_cast<int32_t>(static_cast<int8_t>(x)), r); |
2582 USE(dummy); | 2582 USE(dummy); |
2583 } | 2583 } |
2584 } | 2584 } |
2585 | 2585 |
2586 | 2586 |
2587 TEST(sxtab) { | 2587 TEST(sxtab) { |
2588 CcTest::InitializeVM(); | 2588 CcTest::InitializeVM(); |
2589 Isolate* const isolate = CcTest::i_isolate(); | 2589 Isolate* const isolate = CcTest::i_isolate(); |
2590 HandleScope scope(isolate); | 2590 HandleScope scope(isolate); |
2591 RandomNumberGenerator* const rng = isolate->random_number_generator(); | 2591 RandomNumberGenerator* const rng = isolate->random_number_generator(); |
2592 Assembler assm(isolate, nullptr, 0); | 2592 Assembler assm(isolate, nullptr, 0); |
2593 __ sxtab(r1, r2, r1); | 2593 __ sxtab(r1, r2, r1); |
2594 __ str(r1, MemOperand(r0)); | 2594 __ str(r1, MemOperand(r0)); |
2595 __ bx(lr); | 2595 __ bx(lr); |
2596 CodeDesc desc; | 2596 CodeDesc desc; |
2597 assm.GetCode(&desc); | 2597 assm.GetCode(isolate, &desc); |
2598 Handle<Code> code = isolate->factory()->NewCode( | 2598 Handle<Code> code = isolate->factory()->NewCode( |
2599 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2599 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
2600 #ifdef OBJECT_PRINT | 2600 #ifdef OBJECT_PRINT |
2601 code->Print(std::cout); | 2601 code->Print(std::cout); |
2602 #endif | 2602 #endif |
2603 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2603 F3 f = FUNCTION_CAST<F3>(code->entry()); |
2604 for (size_t i = 0; i < 128; ++i) { | 2604 for (size_t i = 0; i < 128; ++i) { |
2605 int32_t r, x = rng->NextInt(), y = rng->NextInt(); | 2605 int32_t r, x = rng->NextInt(), y = rng->NextInt(); |
2606 Object* dummy = CALL_GENERATED_CODE(isolate, f, &r, x, y, 0, 0); | 2606 Object* dummy = CALL_GENERATED_CODE(isolate, f, &r, x, y, 0, 0); |
2607 CHECK_EQ(static_cast<int32_t>(static_cast<int8_t>(x)) + y, r); | 2607 CHECK_EQ(static_cast<int32_t>(static_cast<int8_t>(x)) + y, r); |
2608 USE(dummy); | 2608 USE(dummy); |
2609 } | 2609 } |
2610 } | 2610 } |
2611 | 2611 |
2612 | 2612 |
2613 TEST(sxth) { | 2613 TEST(sxth) { |
2614 CcTest::InitializeVM(); | 2614 CcTest::InitializeVM(); |
2615 Isolate* const isolate = CcTest::i_isolate(); | 2615 Isolate* const isolate = CcTest::i_isolate(); |
2616 HandleScope scope(isolate); | 2616 HandleScope scope(isolate); |
2617 RandomNumberGenerator* const rng = isolate->random_number_generator(); | 2617 RandomNumberGenerator* const rng = isolate->random_number_generator(); |
2618 Assembler assm(isolate, nullptr, 0); | 2618 Assembler assm(isolate, nullptr, 0); |
2619 __ sxth(r1, r1); | 2619 __ sxth(r1, r1); |
2620 __ str(r1, MemOperand(r0)); | 2620 __ str(r1, MemOperand(r0)); |
2621 __ bx(lr); | 2621 __ bx(lr); |
2622 CodeDesc desc; | 2622 CodeDesc desc; |
2623 assm.GetCode(&desc); | 2623 assm.GetCode(isolate, &desc); |
2624 Handle<Code> code = isolate->factory()->NewCode( | 2624 Handle<Code> code = isolate->factory()->NewCode( |
2625 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2625 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
2626 #ifdef OBJECT_PRINT | 2626 #ifdef OBJECT_PRINT |
2627 code->Print(std::cout); | 2627 code->Print(std::cout); |
2628 #endif | 2628 #endif |
2629 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2629 F3 f = FUNCTION_CAST<F3>(code->entry()); |
2630 for (size_t i = 0; i < 128; ++i) { | 2630 for (size_t i = 0; i < 128; ++i) { |
2631 int32_t r, x = rng->NextInt(); | 2631 int32_t r, x = rng->NextInt(); |
2632 Object* dummy = CALL_GENERATED_CODE(isolate, f, &r, x, 0, 0, 0); | 2632 Object* dummy = CALL_GENERATED_CODE(isolate, f, &r, x, 0, 0, 0); |
2633 CHECK_EQ(static_cast<int32_t>(static_cast<int16_t>(x)), r); | 2633 CHECK_EQ(static_cast<int32_t>(static_cast<int16_t>(x)), r); |
2634 USE(dummy); | 2634 USE(dummy); |
2635 } | 2635 } |
2636 } | 2636 } |
2637 | 2637 |
2638 | 2638 |
2639 TEST(sxtah) { | 2639 TEST(sxtah) { |
2640 CcTest::InitializeVM(); | 2640 CcTest::InitializeVM(); |
2641 Isolate* const isolate = CcTest::i_isolate(); | 2641 Isolate* const isolate = CcTest::i_isolate(); |
2642 HandleScope scope(isolate); | 2642 HandleScope scope(isolate); |
2643 RandomNumberGenerator* const rng = isolate->random_number_generator(); | 2643 RandomNumberGenerator* const rng = isolate->random_number_generator(); |
2644 Assembler assm(isolate, nullptr, 0); | 2644 Assembler assm(isolate, nullptr, 0); |
2645 __ sxtah(r1, r2, r1); | 2645 __ sxtah(r1, r2, r1); |
2646 __ str(r1, MemOperand(r0)); | 2646 __ str(r1, MemOperand(r0)); |
2647 __ bx(lr); | 2647 __ bx(lr); |
2648 CodeDesc desc; | 2648 CodeDesc desc; |
2649 assm.GetCode(&desc); | 2649 assm.GetCode(isolate, &desc); |
2650 Handle<Code> code = isolate->factory()->NewCode( | 2650 Handle<Code> code = isolate->factory()->NewCode( |
2651 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2651 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
2652 #ifdef OBJECT_PRINT | 2652 #ifdef OBJECT_PRINT |
2653 code->Print(std::cout); | 2653 code->Print(std::cout); |
2654 #endif | 2654 #endif |
2655 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2655 F3 f = FUNCTION_CAST<F3>(code->entry()); |
2656 for (size_t i = 0; i < 128; ++i) { | 2656 for (size_t i = 0; i < 128; ++i) { |
2657 int32_t r, x = rng->NextInt(), y = rng->NextInt(); | 2657 int32_t r, x = rng->NextInt(), y = rng->NextInt(); |
2658 Object* dummy = CALL_GENERATED_CODE(isolate, f, &r, x, y, 0, 0); | 2658 Object* dummy = CALL_GENERATED_CODE(isolate, f, &r, x, y, 0, 0); |
2659 CHECK_EQ(static_cast<int32_t>(static_cast<int16_t>(x)) + y, r); | 2659 CHECK_EQ(static_cast<int32_t>(static_cast<int16_t>(x)) + y, r); |
2660 USE(dummy); | 2660 USE(dummy); |
2661 } | 2661 } |
2662 } | 2662 } |
2663 | 2663 |
2664 | 2664 |
2665 TEST(uxtb) { | 2665 TEST(uxtb) { |
2666 CcTest::InitializeVM(); | 2666 CcTest::InitializeVM(); |
2667 Isolate* const isolate = CcTest::i_isolate(); | 2667 Isolate* const isolate = CcTest::i_isolate(); |
2668 HandleScope scope(isolate); | 2668 HandleScope scope(isolate); |
2669 RandomNumberGenerator* const rng = isolate->random_number_generator(); | 2669 RandomNumberGenerator* const rng = isolate->random_number_generator(); |
2670 Assembler assm(isolate, nullptr, 0); | 2670 Assembler assm(isolate, nullptr, 0); |
2671 __ uxtb(r1, r1); | 2671 __ uxtb(r1, r1); |
2672 __ str(r1, MemOperand(r0)); | 2672 __ str(r1, MemOperand(r0)); |
2673 __ bx(lr); | 2673 __ bx(lr); |
2674 CodeDesc desc; | 2674 CodeDesc desc; |
2675 assm.GetCode(&desc); | 2675 assm.GetCode(isolate, &desc); |
2676 Handle<Code> code = isolate->factory()->NewCode( | 2676 Handle<Code> code = isolate->factory()->NewCode( |
2677 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2677 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
2678 #ifdef OBJECT_PRINT | 2678 #ifdef OBJECT_PRINT |
2679 code->Print(std::cout); | 2679 code->Print(std::cout); |
2680 #endif | 2680 #endif |
2681 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2681 F3 f = FUNCTION_CAST<F3>(code->entry()); |
2682 for (size_t i = 0; i < 128; ++i) { | 2682 for (size_t i = 0; i < 128; ++i) { |
2683 int32_t r, x = rng->NextInt(); | 2683 int32_t r, x = rng->NextInt(); |
2684 Object* dummy = CALL_GENERATED_CODE(isolate, f, &r, x, 0, 0, 0); | 2684 Object* dummy = CALL_GENERATED_CODE(isolate, f, &r, x, 0, 0, 0); |
2685 CHECK_EQ(static_cast<int32_t>(static_cast<uint8_t>(x)), r); | 2685 CHECK_EQ(static_cast<int32_t>(static_cast<uint8_t>(x)), r); |
2686 USE(dummy); | 2686 USE(dummy); |
2687 } | 2687 } |
2688 } | 2688 } |
2689 | 2689 |
2690 | 2690 |
2691 TEST(uxtab) { | 2691 TEST(uxtab) { |
2692 CcTest::InitializeVM(); | 2692 CcTest::InitializeVM(); |
2693 Isolate* const isolate = CcTest::i_isolate(); | 2693 Isolate* const isolate = CcTest::i_isolate(); |
2694 HandleScope scope(isolate); | 2694 HandleScope scope(isolate); |
2695 RandomNumberGenerator* const rng = isolate->random_number_generator(); | 2695 RandomNumberGenerator* const rng = isolate->random_number_generator(); |
2696 Assembler assm(isolate, nullptr, 0); | 2696 Assembler assm(isolate, nullptr, 0); |
2697 __ uxtab(r1, r2, r1); | 2697 __ uxtab(r1, r2, r1); |
2698 __ str(r1, MemOperand(r0)); | 2698 __ str(r1, MemOperand(r0)); |
2699 __ bx(lr); | 2699 __ bx(lr); |
2700 CodeDesc desc; | 2700 CodeDesc desc; |
2701 assm.GetCode(&desc); | 2701 assm.GetCode(isolate, &desc); |
2702 Handle<Code> code = isolate->factory()->NewCode( | 2702 Handle<Code> code = isolate->factory()->NewCode( |
2703 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2703 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
2704 #ifdef OBJECT_PRINT | 2704 #ifdef OBJECT_PRINT |
2705 code->Print(std::cout); | 2705 code->Print(std::cout); |
2706 #endif | 2706 #endif |
2707 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2707 F3 f = FUNCTION_CAST<F3>(code->entry()); |
2708 for (size_t i = 0; i < 128; ++i) { | 2708 for (size_t i = 0; i < 128; ++i) { |
2709 int32_t r, x = rng->NextInt(), y = rng->NextInt(); | 2709 int32_t r, x = rng->NextInt(), y = rng->NextInt(); |
2710 Object* dummy = CALL_GENERATED_CODE(isolate, f, &r, x, y, 0, 0); | 2710 Object* dummy = CALL_GENERATED_CODE(isolate, f, &r, x, y, 0, 0); |
2711 CHECK_EQ(static_cast<int32_t>(static_cast<uint8_t>(x)) + y, r); | 2711 CHECK_EQ(static_cast<int32_t>(static_cast<uint8_t>(x)) + y, r); |
2712 USE(dummy); | 2712 USE(dummy); |
2713 } | 2713 } |
2714 } | 2714 } |
2715 | 2715 |
2716 | 2716 |
2717 TEST(uxth) { | 2717 TEST(uxth) { |
2718 CcTest::InitializeVM(); | 2718 CcTest::InitializeVM(); |
2719 Isolate* const isolate = CcTest::i_isolate(); | 2719 Isolate* const isolate = CcTest::i_isolate(); |
2720 HandleScope scope(isolate); | 2720 HandleScope scope(isolate); |
2721 RandomNumberGenerator* const rng = isolate->random_number_generator(); | 2721 RandomNumberGenerator* const rng = isolate->random_number_generator(); |
2722 Assembler assm(isolate, nullptr, 0); | 2722 Assembler assm(isolate, nullptr, 0); |
2723 __ uxth(r1, r1); | 2723 __ uxth(r1, r1); |
2724 __ str(r1, MemOperand(r0)); | 2724 __ str(r1, MemOperand(r0)); |
2725 __ bx(lr); | 2725 __ bx(lr); |
2726 CodeDesc desc; | 2726 CodeDesc desc; |
2727 assm.GetCode(&desc); | 2727 assm.GetCode(isolate, &desc); |
2728 Handle<Code> code = isolate->factory()->NewCode( | 2728 Handle<Code> code = isolate->factory()->NewCode( |
2729 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2729 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
2730 #ifdef OBJECT_PRINT | 2730 #ifdef OBJECT_PRINT |
2731 code->Print(std::cout); | 2731 code->Print(std::cout); |
2732 #endif | 2732 #endif |
2733 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2733 F3 f = FUNCTION_CAST<F3>(code->entry()); |
2734 for (size_t i = 0; i < 128; ++i) { | 2734 for (size_t i = 0; i < 128; ++i) { |
2735 int32_t r, x = rng->NextInt(); | 2735 int32_t r, x = rng->NextInt(); |
2736 Object* dummy = CALL_GENERATED_CODE(isolate, f, &r, x, 0, 0, 0); | 2736 Object* dummy = CALL_GENERATED_CODE(isolate, f, &r, x, 0, 0, 0); |
2737 CHECK_EQ(static_cast<int32_t>(static_cast<uint16_t>(x)), r); | 2737 CHECK_EQ(static_cast<int32_t>(static_cast<uint16_t>(x)), r); |
2738 USE(dummy); | 2738 USE(dummy); |
2739 } | 2739 } |
2740 } | 2740 } |
2741 | 2741 |
2742 | 2742 |
2743 TEST(uxtah) { | 2743 TEST(uxtah) { |
2744 CcTest::InitializeVM(); | 2744 CcTest::InitializeVM(); |
2745 Isolate* const isolate = CcTest::i_isolate(); | 2745 Isolate* const isolate = CcTest::i_isolate(); |
2746 HandleScope scope(isolate); | 2746 HandleScope scope(isolate); |
2747 RandomNumberGenerator* const rng = isolate->random_number_generator(); | 2747 RandomNumberGenerator* const rng = isolate->random_number_generator(); |
2748 Assembler assm(isolate, nullptr, 0); | 2748 Assembler assm(isolate, nullptr, 0); |
2749 __ uxtah(r1, r2, r1); | 2749 __ uxtah(r1, r2, r1); |
2750 __ str(r1, MemOperand(r0)); | 2750 __ str(r1, MemOperand(r0)); |
2751 __ bx(lr); | 2751 __ bx(lr); |
2752 CodeDesc desc; | 2752 CodeDesc desc; |
2753 assm.GetCode(&desc); | 2753 assm.GetCode(isolate, &desc); |
2754 Handle<Code> code = isolate->factory()->NewCode( | 2754 Handle<Code> code = isolate->factory()->NewCode( |
2755 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2755 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
2756 #ifdef OBJECT_PRINT | 2756 #ifdef OBJECT_PRINT |
2757 code->Print(std::cout); | 2757 code->Print(std::cout); |
2758 #endif | 2758 #endif |
2759 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2759 F3 f = FUNCTION_CAST<F3>(code->entry()); |
2760 for (size_t i = 0; i < 128; ++i) { | 2760 for (size_t i = 0; i < 128; ++i) { |
2761 int32_t r, x = rng->NextInt(), y = rng->NextInt(); | 2761 int32_t r, x = rng->NextInt(), y = rng->NextInt(); |
2762 Object* dummy = CALL_GENERATED_CODE(isolate, f, &r, x, y, 0, 0); | 2762 Object* dummy = CALL_GENERATED_CODE(isolate, f, &r, x, y, 0, 0); |
2763 CHECK_EQ(static_cast<int32_t>(static_cast<uint16_t>(x)) + y, r); | 2763 CHECK_EQ(static_cast<int32_t>(static_cast<uint16_t>(x)) + y, r); |
(...skipping 21 matching lines...) Expand all Loading... |
2785 uint32_t result; | 2785 uint32_t result; |
2786 } T; | 2786 } T; |
2787 T t; | 2787 T t; |
2788 | 2788 |
2789 __ ldr(r1, MemOperand(r0, offsetof(T, input))); | 2789 __ ldr(r1, MemOperand(r0, offsetof(T, input))); |
2790 __ rbit(r1, r1); | 2790 __ rbit(r1, r1); |
2791 __ str(r1, MemOperand(r0, offsetof(T, result))); | 2791 __ str(r1, MemOperand(r0, offsetof(T, result))); |
2792 __ bx(lr); | 2792 __ bx(lr); |
2793 | 2793 |
2794 CodeDesc desc; | 2794 CodeDesc desc; |
2795 assm.GetCode(&desc); | 2795 assm.GetCode(isolate, &desc); |
2796 Handle<Code> code = isolate->factory()->NewCode( | 2796 Handle<Code> code = isolate->factory()->NewCode( |
2797 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2797 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
2798 | 2798 |
2799 #ifdef OBJECT_PRINT | 2799 #ifdef OBJECT_PRINT |
2800 code->Print(std::cout); | 2800 code->Print(std::cout); |
2801 #endif | 2801 #endif |
2802 | 2802 |
2803 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2803 F3 f = FUNCTION_CAST<F3>(code->entry()); |
2804 Object* dummy = NULL; | 2804 Object* dummy = NULL; |
2805 TEST_RBIT(0xffffffff, 0xffffffff); | 2805 TEST_RBIT(0xffffffff, 0xffffffff); |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2867 for (int i = 0; i < (1 << 21); i++) { | 2867 for (int i = 0; i < (1 << 21); i++) { |
2868 __ ldr(r3, MemOperand(r3)); | 2868 __ ldr(r3, MemOperand(r3)); |
2869 } | 2869 } |
2870 __ bind(&target_faraway); | 2870 __ bind(&target_faraway); |
2871 // r0 = r0 + 5 + 5 + 11 | 2871 // r0 = r0 + 5 + 5 + 11 |
2872 __ add(r0, r0, Operand(11)); | 2872 __ add(r0, r0, Operand(11)); |
2873 | 2873 |
2874 __ ldm(ia_w, sp, r4.bit() | r5.bit() | pc.bit()); | 2874 __ ldm(ia_w, sp, r4.bit() | r5.bit() | pc.bit()); |
2875 | 2875 |
2876 CodeDesc desc; | 2876 CodeDesc desc; |
2877 assm.GetCode(&desc); | 2877 assm.GetCode(isolate, &desc); |
2878 Handle<Code> code = isolate->factory()->NewCode( | 2878 Handle<Code> code = isolate->factory()->NewCode( |
2879 desc, Code::ComputeFlags(Code::STUB), code_object); | 2879 desc, Code::ComputeFlags(Code::STUB), code_object); |
2880 F1 f = FUNCTION_CAST<F1>(code->entry()); | 2880 F1 f = FUNCTION_CAST<F1>(code->entry()); |
2881 int res = | 2881 int res = |
2882 reinterpret_cast<int>(CALL_GENERATED_CODE(isolate, f, 21, 0, 0, 0, 0)); | 2882 reinterpret_cast<int>(CALL_GENERATED_CODE(isolate, f, 21, 0, 0, 0, 0)); |
2883 ::printf("f() = %d\n", res); | 2883 ::printf("f() = %d\n", res); |
2884 CHECK_EQ(42, res); | 2884 CHECK_EQ(42, res); |
2885 } | 2885 } |
2886 | 2886 |
2887 TEST(msr_mrs) { | 2887 TEST(msr_mrs) { |
(...skipping 19 matching lines...) Expand all Loading... |
2907 __ str(r3, MemOperand(r1)); | 2907 __ str(r3, MemOperand(r1)); |
2908 | 2908 |
2909 // Also check mrs, ignoring everything other than the flags. | 2909 // Also check mrs, ignoring everything other than the flags. |
2910 __ mrs(r3, CPSR); | 2910 __ mrs(r3, CPSR); |
2911 __ and_(r3, r3, Operand(kSpecialCondition)); | 2911 __ and_(r3, r3, Operand(kSpecialCondition)); |
2912 __ str(r3, MemOperand(r2)); | 2912 __ str(r3, MemOperand(r2)); |
2913 | 2913 |
2914 __ bx(lr); | 2914 __ bx(lr); |
2915 | 2915 |
2916 CodeDesc desc; | 2916 CodeDesc desc; |
2917 assm.GetCode(&desc); | 2917 assm.GetCode(isolate, &desc); |
2918 Handle<Code> code = isolate->factory()->NewCode( | 2918 Handle<Code> code = isolate->factory()->NewCode( |
2919 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2919 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
2920 #ifdef DEBUG | 2920 #ifdef DEBUG |
2921 OFStream os(stdout); | 2921 OFStream os(stdout); |
2922 code->Print(os); | 2922 code->Print(os); |
2923 #endif | 2923 #endif |
2924 F5 f = FUNCTION_CAST<F5>(code->entry()); | 2924 F5 f = FUNCTION_CAST<F5>(code->entry()); |
2925 Object* dummy = nullptr; | 2925 Object* dummy = nullptr; |
2926 USE(dummy); | 2926 USE(dummy); |
2927 | 2927 |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3008 __ vstr(s5, r4, offsetof(T, mr)); | 3008 __ vstr(s5, r4, offsetof(T, mr)); |
3009 | 3009 |
3010 // Test vrintz | 3010 // Test vrintz |
3011 __ vldr(s6, r4, offsetof(T, input)); | 3011 __ vldr(s6, r4, offsetof(T, input)); |
3012 __ vrintz(s5, s6); | 3012 __ vrintz(s5, s6); |
3013 __ vstr(s5, r4, offsetof(T, zr)); | 3013 __ vstr(s5, r4, offsetof(T, zr)); |
3014 | 3014 |
3015 __ ldm(ia_w, sp, r4.bit() | fp.bit() | pc.bit()); | 3015 __ ldm(ia_w, sp, r4.bit() | fp.bit() | pc.bit()); |
3016 | 3016 |
3017 CodeDesc desc; | 3017 CodeDesc desc; |
3018 assm.GetCode(&desc); | 3018 assm.GetCode(isolate, &desc); |
3019 Handle<Code> code = isolate->factory()->NewCode( | 3019 Handle<Code> code = isolate->factory()->NewCode( |
3020 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 3020 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
3021 #ifdef DEBUG | 3021 #ifdef DEBUG |
3022 OFStream os(stdout); | 3022 OFStream os(stdout); |
3023 code->Print(os); | 3023 code->Print(os); |
3024 #endif | 3024 #endif |
3025 F3 f = FUNCTION_CAST<F3>(code->entry()); | 3025 F3 f = FUNCTION_CAST<F3>(code->entry()); |
3026 | 3026 |
3027 Object* dummy = nullptr; | 3027 Object* dummy = nullptr; |
3028 USE(dummy); | 3028 USE(dummy); |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3113 __ vstr(d5, r4, offsetof(T, mr)); | 3113 __ vstr(d5, r4, offsetof(T, mr)); |
3114 | 3114 |
3115 // Test vrintz | 3115 // Test vrintz |
3116 __ vldr(d6, r4, offsetof(T, input)); | 3116 __ vldr(d6, r4, offsetof(T, input)); |
3117 __ vrintz(d5, d6); | 3117 __ vrintz(d5, d6); |
3118 __ vstr(d5, r4, offsetof(T, zr)); | 3118 __ vstr(d5, r4, offsetof(T, zr)); |
3119 | 3119 |
3120 __ ldm(ia_w, sp, r4.bit() | fp.bit() | pc.bit()); | 3120 __ ldm(ia_w, sp, r4.bit() | fp.bit() | pc.bit()); |
3121 | 3121 |
3122 CodeDesc desc; | 3122 CodeDesc desc; |
3123 assm.GetCode(&desc); | 3123 assm.GetCode(isolate, &desc); |
3124 Handle<Code> code = isolate->factory()->NewCode( | 3124 Handle<Code> code = isolate->factory()->NewCode( |
3125 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 3125 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
3126 #ifdef DEBUG | 3126 #ifdef DEBUG |
3127 OFStream os(stdout); | 3127 OFStream os(stdout); |
3128 code->Print(os); | 3128 code->Print(os); |
3129 #endif | 3129 #endif |
3130 F3 f = FUNCTION_CAST<F3>(code->entry()); | 3130 F3 f = FUNCTION_CAST<F3>(code->entry()); |
3131 | 3131 |
3132 Object* dummy = nullptr; | 3132 Object* dummy = nullptr; |
3133 USE(dummy); | 3133 USE(dummy); |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3253 __ vsel(lt, d0, d1, d2); | 3253 __ vsel(lt, d0, d1, d2); |
3254 __ vstr(d0, r2, offsetof(ResultsF64, vsellt_)); | 3254 __ vstr(d0, r2, offsetof(ResultsF64, vsellt_)); |
3255 __ vsel(le, d0, d1, d2); | 3255 __ vsel(le, d0, d1, d2); |
3256 __ vstr(d0, r2, offsetof(ResultsF64, vselle_)); | 3256 __ vstr(d0, r2, offsetof(ResultsF64, vselle_)); |
3257 __ vsel(vc, d0, d1, d2); | 3257 __ vsel(vc, d0, d1, d2); |
3258 __ vstr(d0, r2, offsetof(ResultsF64, vselvc_)); | 3258 __ vstr(d0, r2, offsetof(ResultsF64, vselvc_)); |
3259 | 3259 |
3260 __ bx(lr); | 3260 __ bx(lr); |
3261 | 3261 |
3262 CodeDesc desc; | 3262 CodeDesc desc; |
3263 assm.GetCode(&desc); | 3263 assm.GetCode(isolate, &desc); |
3264 Handle<Code> code = isolate->factory()->NewCode( | 3264 Handle<Code> code = isolate->factory()->NewCode( |
3265 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 3265 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
3266 #ifdef DEBUG | 3266 #ifdef DEBUG |
3267 OFStream os(stdout); | 3267 OFStream os(stdout); |
3268 code->Print(os); | 3268 code->Print(os); |
3269 #endif | 3269 #endif |
3270 F5 f = FUNCTION_CAST<F5>(code->entry()); | 3270 F5 f = FUNCTION_CAST<F5>(code->entry()); |
3271 Object* dummy = nullptr; | 3271 Object* dummy = nullptr; |
3272 USE(dummy); | 3272 USE(dummy); |
3273 | 3273 |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3347 __ vldr(d2, r0, offsetof(Inputs, right_)); | 3347 __ vldr(d2, r0, offsetof(Inputs, right_)); |
3348 | 3348 |
3349 __ vminnm(d0, d1, d2); | 3349 __ vminnm(d0, d1, d2); |
3350 __ vstr(d0, r1, offsetof(Results, vminnm_)); | 3350 __ vstr(d0, r1, offsetof(Results, vminnm_)); |
3351 __ vmaxnm(d0, d1, d2); | 3351 __ vmaxnm(d0, d1, d2); |
3352 __ vstr(d0, r1, offsetof(Results, vmaxnm_)); | 3352 __ vstr(d0, r1, offsetof(Results, vmaxnm_)); |
3353 | 3353 |
3354 __ bx(lr); | 3354 __ bx(lr); |
3355 | 3355 |
3356 CodeDesc desc; | 3356 CodeDesc desc; |
3357 assm.GetCode(&desc); | 3357 assm.GetCode(isolate, &desc); |
3358 Handle<Code> code = isolate->factory()->NewCode( | 3358 Handle<Code> code = isolate->factory()->NewCode( |
3359 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 3359 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
3360 #ifdef DEBUG | 3360 #ifdef DEBUG |
3361 OFStream os(stdout); | 3361 OFStream os(stdout); |
3362 code->Print(os); | 3362 code->Print(os); |
3363 #endif | 3363 #endif |
3364 F4 f = FUNCTION_CAST<F4>(code->entry()); | 3364 F4 f = FUNCTION_CAST<F4>(code->entry()); |
3365 Object* dummy = nullptr; | 3365 Object* dummy = nullptr; |
3366 USE(dummy); | 3366 USE(dummy); |
3367 | 3367 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3429 __ vldr(s2, r0, offsetof(Inputs, right_)); | 3429 __ vldr(s2, r0, offsetof(Inputs, right_)); |
3430 | 3430 |
3431 __ vminnm(s0, s1, s2); | 3431 __ vminnm(s0, s1, s2); |
3432 __ vstr(s0, r1, offsetof(Results, vminnm_)); | 3432 __ vstr(s0, r1, offsetof(Results, vminnm_)); |
3433 __ vmaxnm(s0, s1, s2); | 3433 __ vmaxnm(s0, s1, s2); |
3434 __ vstr(s0, r1, offsetof(Results, vmaxnm_)); | 3434 __ vstr(s0, r1, offsetof(Results, vmaxnm_)); |
3435 | 3435 |
3436 __ bx(lr); | 3436 __ bx(lr); |
3437 | 3437 |
3438 CodeDesc desc; | 3438 CodeDesc desc; |
3439 assm.GetCode(&desc); | 3439 assm.GetCode(isolate, &desc); |
3440 Handle<Code> code = isolate->factory()->NewCode( | 3440 Handle<Code> code = isolate->factory()->NewCode( |
3441 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 3441 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
3442 #ifdef DEBUG | 3442 #ifdef DEBUG |
3443 OFStream os(stdout); | 3443 OFStream os(stdout); |
3444 code->Print(os); | 3444 code->Print(os); |
3445 #endif | 3445 #endif |
3446 F4 f = FUNCTION_CAST<F4>(code->entry()); | 3446 F4 f = FUNCTION_CAST<F4>(code->entry()); |
3447 Object* dummy = nullptr; | 3447 Object* dummy = nullptr; |
3448 USE(dummy); | 3448 USE(dummy); |
3449 | 3449 |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3561 | 3561 |
3562 __ bind(&ool_max_aab); | 3562 __ bind(&ool_max_aab); |
3563 __ FloatMaxOutOfLine(a, a, b); | 3563 __ FloatMaxOutOfLine(a, a, b); |
3564 __ b(&done_max_aab); | 3564 __ b(&done_max_aab); |
3565 | 3565 |
3566 __ bind(&ool_max_aba); | 3566 __ bind(&ool_max_aba); |
3567 __ FloatMaxOutOfLine(a, b, a); | 3567 __ FloatMaxOutOfLine(a, b, a); |
3568 __ b(&done_max_aba); | 3568 __ b(&done_max_aba); |
3569 | 3569 |
3570 CodeDesc desc; | 3570 CodeDesc desc; |
3571 assm.GetCode(&desc); | 3571 assm.GetCode(assm.isolate(), &desc); |
3572 Handle<Code> code = assm.isolate()->factory()->NewCode( | 3572 Handle<Code> code = assm.isolate()->factory()->NewCode( |
3573 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 3573 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
3574 #ifdef DEBUG | 3574 #ifdef DEBUG |
3575 OFStream os(stdout); | 3575 OFStream os(stdout); |
3576 code->Print(os); | 3576 code->Print(os); |
3577 #endif | 3577 #endif |
3578 return FUNCTION_CAST<F4>(code->entry()); | 3578 return FUNCTION_CAST<F4>(code->entry()); |
3579 } | 3579 } |
3580 | 3580 |
3581 TEST(macro_float_minmax_f64) { | 3581 TEST(macro_float_minmax_f64) { |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3729 Assembler assm(isolate, NULL, 0); | 3729 Assembler assm(isolate, NULL, 0); |
3730 __ ldrh(ip, MemOperand(r1, r2)); | 3730 __ ldrh(ip, MemOperand(r1, r2)); |
3731 __ str(ip, MemOperand(r0, offsetof(T, ldrh))); | 3731 __ str(ip, MemOperand(r0, offsetof(T, ldrh))); |
3732 __ ldrsh(ip, MemOperand(r1, r2)); | 3732 __ ldrsh(ip, MemOperand(r1, r2)); |
3733 __ str(ip, MemOperand(r0, offsetof(T, ldrsh))); | 3733 __ str(ip, MemOperand(r0, offsetof(T, ldrsh))); |
3734 __ ldr(ip, MemOperand(r1, r2)); | 3734 __ ldr(ip, MemOperand(r1, r2)); |
3735 __ str(ip, MemOperand(r0, offsetof(T, ldr))); | 3735 __ str(ip, MemOperand(r0, offsetof(T, ldr))); |
3736 __ bx(lr); | 3736 __ bx(lr); |
3737 | 3737 |
3738 CodeDesc desc; | 3738 CodeDesc desc; |
3739 assm.GetCode(&desc); | 3739 assm.GetCode(isolate, &desc); |
3740 Handle<Code> code = isolate->factory()->NewCode( | 3740 Handle<Code> code = isolate->factory()->NewCode( |
3741 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 3741 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
3742 #ifdef DEBUG | 3742 #ifdef DEBUG |
3743 OFStream os(stdout); | 3743 OFStream os(stdout); |
3744 code->Print(os); | 3744 code->Print(os); |
3745 #endif | 3745 #endif |
3746 F4 f = FUNCTION_CAST<F4>(code->entry()); | 3746 F4 f = FUNCTION_CAST<F4>(code->entry()); |
3747 | 3747 |
3748 Object* dummy = nullptr; | 3748 Object* dummy = nullptr; |
3749 USE(dummy); | 3749 USE(dummy); |
(...skipping 25 matching lines...) Expand all Loading... |
3775 CcTest::InitializeVM(); | 3775 CcTest::InitializeVM(); |
3776 Isolate* isolate = CcTest::i_isolate(); | 3776 Isolate* isolate = CcTest::i_isolate(); |
3777 HandleScope scope(isolate); | 3777 HandleScope scope(isolate); |
3778 | 3778 |
3779 Assembler assm(isolate, NULL, 0); | 3779 Assembler assm(isolate, NULL, 0); |
3780 __ strh(r3, MemOperand(r0, r2)); | 3780 __ strh(r3, MemOperand(r0, r2)); |
3781 __ str(r3, MemOperand(r1, r2)); | 3781 __ str(r3, MemOperand(r1, r2)); |
3782 __ bx(lr); | 3782 __ bx(lr); |
3783 | 3783 |
3784 CodeDesc desc; | 3784 CodeDesc desc; |
3785 assm.GetCode(&desc); | 3785 assm.GetCode(isolate, &desc); |
3786 Handle<Code> code = isolate->factory()->NewCode( | 3786 Handle<Code> code = isolate->factory()->NewCode( |
3787 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 3787 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
3788 #ifdef DEBUG | 3788 #ifdef DEBUG |
3789 OFStream os(stdout); | 3789 OFStream os(stdout); |
3790 code->Print(os); | 3790 code->Print(os); |
3791 #endif | 3791 #endif |
3792 F4 f = FUNCTION_CAST<F4>(code->entry()); | 3792 F4 f = FUNCTION_CAST<F4>(code->entry()); |
3793 | 3793 |
3794 Object* dummy = nullptr; | 3794 Object* dummy = nullptr; |
3795 USE(dummy); | 3795 USE(dummy); |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3878 __ vswp(q4, q5); | 3878 __ vswp(q4, q5); |
3879 __ add(r6, r0, Operand(static_cast<int32_t>(offsetof(T, vswp_q4)))); | 3879 __ add(r6, r0, Operand(static_cast<int32_t>(offsetof(T, vswp_q4)))); |
3880 __ vst1(Neon8, NeonListOperand(q4), NeonMemOperand(r6)); | 3880 __ vst1(Neon8, NeonListOperand(q4), NeonMemOperand(r6)); |
3881 __ add(r6, r0, Operand(static_cast<int32_t>(offsetof(T, vswp_q5)))); | 3881 __ add(r6, r0, Operand(static_cast<int32_t>(offsetof(T, vswp_q5)))); |
3882 __ vst1(Neon8, NeonListOperand(q5), NeonMemOperand(r6)); | 3882 __ vst1(Neon8, NeonListOperand(q5), NeonMemOperand(r6)); |
3883 | 3883 |
3884 __ ldm(ia_w, sp, r4.bit() | r5.bit() | r6.bit() | r7.bit() | pc.bit()); | 3884 __ ldm(ia_w, sp, r4.bit() | r5.bit() | r6.bit() | r7.bit() | pc.bit()); |
3885 __ bx(lr); | 3885 __ bx(lr); |
3886 | 3886 |
3887 CodeDesc desc; | 3887 CodeDesc desc; |
3888 assm.GetCode(&desc); | 3888 assm.GetCode(isolate, &desc); |
3889 Handle<Code> code = isolate->factory()->NewCode( | 3889 Handle<Code> code = isolate->factory()->NewCode( |
3890 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 3890 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
3891 #ifdef DEBUG | 3891 #ifdef DEBUG |
3892 OFStream os(stdout); | 3892 OFStream os(stdout); |
3893 code->Print(os); | 3893 code->Print(os); |
3894 #endif | 3894 #endif |
3895 F3 f = FUNCTION_CAST<F3>(code->entry()); | 3895 F3 f = FUNCTION_CAST<F3>(code->entry()); |
3896 Object* dummy = CALL_GENERATED_CODE(isolate, f, &t, 0, 0, 0, 0); | 3896 Object* dummy = CALL_GENERATED_CODE(isolate, f, &t, 0, 0, 0, 0); |
3897 USE(dummy); | 3897 USE(dummy); |
3898 CHECK_EQ(minus_one, t.vswp_d0); | 3898 CHECK_EQ(minus_one, t.vswp_d0); |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3962 HandleScope scope(isolate); | 3962 HandleScope scope(isolate); |
3963 | 3963 |
3964 Assembler assm(isolate, NULL, 0); | 3964 Assembler assm(isolate, NULL, 0); |
3965 __ mov(r0, Operand(isolate->factory()->infinity_value())); | 3965 __ mov(r0, Operand(isolate->factory()->infinity_value())); |
3966 __ BlockConstPoolFor(1019); | 3966 __ BlockConstPoolFor(1019); |
3967 for (int i = 0; i < 1019; ++i) __ nop(); | 3967 for (int i = 0; i < 1019; ++i) __ nop(); |
3968 __ vldr(d0, MemOperand(r0, 0)); | 3968 __ vldr(d0, MemOperand(r0, 0)); |
3969 } | 3969 } |
3970 | 3970 |
3971 #undef __ | 3971 #undef __ |
OLD | NEW |