| 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 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 282 float fg; | 282 float fg; |
| 283 } T; | 283 } T; |
| 284 T t; | 284 T t; |
| 285 | 285 |
| 286 // Create a function that accepts &t, and loads, manipulates, and stores | 286 // Create a function that accepts &t, and loads, manipulates, and stores |
| 287 // the doubles t.a ... t.f. | 287 // the doubles t.a ... t.f. |
| 288 MacroAssembler assm(isolate, NULL, 0); | 288 MacroAssembler assm(isolate, NULL, 0); |
| 289 Label L, C; | 289 Label L, C; |
| 290 | 290 |
| 291 // Double precision floating point instructions. | 291 // Double precision floating point instructions. |
| 292 __ ldc1(f4, MemOperand(a0, OFFSET_OF(T, a)) ); | 292 __ ldc1(f4, MemOperand(a0, offsetof(T, a)) ); |
| 293 __ ldc1(f6, MemOperand(a0, OFFSET_OF(T, b)) ); | 293 __ ldc1(f6, MemOperand(a0, offsetof(T, b)) ); |
| 294 __ add_d(f8, f4, f6); | 294 __ add_d(f8, f4, f6); |
| 295 __ sdc1(f8, MemOperand(a0, OFFSET_OF(T, c)) ); // c = a + b. | 295 __ sdc1(f8, MemOperand(a0, offsetof(T, c)) ); // c = a + b. |
| 296 | 296 |
| 297 __ mov_d(f10, f8); // c | 297 __ mov_d(f10, f8); // c |
| 298 __ neg_d(f12, f6); // -b | 298 __ neg_d(f12, f6); // -b |
| 299 __ sub_d(f10, f10, f12); | 299 __ sub_d(f10, f10, f12); |
| 300 __ sdc1(f10, MemOperand(a0, OFFSET_OF(T, d)) ); // d = c - (-b). | 300 __ sdc1(f10, MemOperand(a0, offsetof(T, d)) ); // d = c - (-b). |
| 301 | 301 |
| 302 __ sdc1(f4, MemOperand(a0, OFFSET_OF(T, b)) ); // b = a. | 302 __ sdc1(f4, MemOperand(a0, offsetof(T, b)) ); // b = a. |
| 303 | 303 |
| 304 __ li(a4, 120); | 304 __ li(a4, 120); |
| 305 __ mtc1(a4, f14); | 305 __ mtc1(a4, f14); |
| 306 __ cvt_d_w(f14, f14); // f14 = 120.0. | 306 __ cvt_d_w(f14, f14); // f14 = 120.0. |
| 307 __ mul_d(f10, f10, f14); | 307 __ mul_d(f10, f10, f14); |
| 308 __ sdc1(f10, MemOperand(a0, OFFSET_OF(T, e)) ); // e = d * 120 = 1.8066e16. | 308 __ sdc1(f10, MemOperand(a0, offsetof(T, e)) ); // e = d * 120 = 1.8066e16. |
| 309 | 309 |
| 310 __ div_d(f12, f10, f4); | 310 __ div_d(f12, f10, f4); |
| 311 __ sdc1(f12, MemOperand(a0, OFFSET_OF(T, f)) ); // f = e / a = 120.44. | 311 __ sdc1(f12, MemOperand(a0, offsetof(T, f)) ); // f = e / a = 120.44. |
| 312 | 312 |
| 313 __ sqrt_d(f14, f12); | 313 __ sqrt_d(f14, f12); |
| 314 __ sdc1(f14, MemOperand(a0, OFFSET_OF(T, g)) ); | 314 __ sdc1(f14, MemOperand(a0, offsetof(T, g)) ); |
| 315 // g = sqrt(f) = 10.97451593465515908537 | 315 // g = sqrt(f) = 10.97451593465515908537 |
| 316 | 316 |
| 317 if (kArchVariant == kMips64r2) { | 317 if (kArchVariant == kMips64r2) { |
| 318 __ ldc1(f4, MemOperand(a0, OFFSET_OF(T, h)) ); | 318 __ ldc1(f4, MemOperand(a0, offsetof(T, h)) ); |
| 319 __ ldc1(f6, MemOperand(a0, OFFSET_OF(T, i)) ); | 319 __ ldc1(f6, MemOperand(a0, offsetof(T, i)) ); |
| 320 __ madd_d(f14, f6, f4, f6); | 320 __ madd_d(f14, f6, f4, f6); |
| 321 __ sdc1(f14, MemOperand(a0, OFFSET_OF(T, h)) ); | 321 __ sdc1(f14, MemOperand(a0, offsetof(T, h)) ); |
| 322 } | 322 } |
| 323 | 323 |
| 324 // Single precision floating point instructions. | 324 // Single precision floating point instructions. |
| 325 __ lwc1(f4, MemOperand(a0, OFFSET_OF(T, fa)) ); | 325 __ lwc1(f4, MemOperand(a0, offsetof(T, fa)) ); |
| 326 __ lwc1(f6, MemOperand(a0, OFFSET_OF(T, fb)) ); | 326 __ lwc1(f6, MemOperand(a0, offsetof(T, fb)) ); |
| 327 __ add_s(f8, f4, f6); | 327 __ add_s(f8, f4, f6); |
| 328 __ swc1(f8, MemOperand(a0, OFFSET_OF(T, fc)) ); // fc = fa + fb. | 328 __ swc1(f8, MemOperand(a0, offsetof(T, fc)) ); // fc = fa + fb. |
| 329 | 329 |
| 330 __ neg_s(f10, f6); // -fb | 330 __ neg_s(f10, f6); // -fb |
| 331 __ sub_s(f10, f8, f10); | 331 __ sub_s(f10, f8, f10); |
| 332 __ swc1(f10, MemOperand(a0, OFFSET_OF(T, fd)) ); // fd = fc - (-fb). | 332 __ swc1(f10, MemOperand(a0, offsetof(T, fd)) ); // fd = fc - (-fb). |
| 333 | 333 |
| 334 __ swc1(f4, MemOperand(a0, OFFSET_OF(T, fb)) ); // fb = fa. | 334 __ swc1(f4, MemOperand(a0, offsetof(T, fb)) ); // fb = fa. |
| 335 | 335 |
| 336 __ li(t0, 120); | 336 __ li(t0, 120); |
| 337 __ mtc1(t0, f14); | 337 __ mtc1(t0, f14); |
| 338 __ cvt_s_w(f14, f14); // f14 = 120.0. | 338 __ cvt_s_w(f14, f14); // f14 = 120.0. |
| 339 __ mul_s(f10, f10, f14); | 339 __ mul_s(f10, f10, f14); |
| 340 __ swc1(f10, MemOperand(a0, OFFSET_OF(T, fe)) ); // fe = fd * 120 | 340 __ swc1(f10, MemOperand(a0, offsetof(T, fe)) ); // fe = fd * 120 |
| 341 | 341 |
| 342 __ div_s(f12, f10, f4); | 342 __ div_s(f12, f10, f4); |
| 343 __ swc1(f12, MemOperand(a0, OFFSET_OF(T, ff)) ); // ff = fe / fa | 343 __ swc1(f12, MemOperand(a0, offsetof(T, ff)) ); // ff = fe / fa |
| 344 | 344 |
| 345 __ sqrt_s(f14, f12); | 345 __ sqrt_s(f14, f12); |
| 346 __ swc1(f14, MemOperand(a0, OFFSET_OF(T, fg)) ); | 346 __ swc1(f14, MemOperand(a0, offsetof(T, fg)) ); |
| 347 | 347 |
| 348 __ jr(ra); | 348 __ jr(ra); |
| 349 __ nop(); | 349 __ nop(); |
| 350 | 350 |
| 351 CodeDesc desc; | 351 CodeDesc desc; |
| 352 assm.GetCode(&desc); | 352 assm.GetCode(&desc); |
| 353 Handle<Code> code = isolate->factory()->NewCode( | 353 Handle<Code> code = isolate->factory()->NewCode( |
| 354 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 354 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 355 F3 f = FUNCTION_CAST<F3>(code->entry()); | 355 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 356 // Double test values. | 356 // Double test values. |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 405 double c; | 405 double c; |
| 406 double d; | 406 double d; |
| 407 int64_t high; | 407 int64_t high; |
| 408 int64_t low; | 408 int64_t low; |
| 409 } T; | 409 } T; |
| 410 T t; | 410 T t; |
| 411 | 411 |
| 412 Assembler assm(isolate, NULL, 0); | 412 Assembler assm(isolate, NULL, 0); |
| 413 Label L, C; | 413 Label L, C; |
| 414 | 414 |
| 415 __ ldc1(f4, MemOperand(a0, OFFSET_OF(T, a))); | 415 __ ldc1(f4, MemOperand(a0, offsetof(T, a))); |
| 416 __ ldc1(f5, MemOperand(a0, OFFSET_OF(T, b))); | 416 __ ldc1(f5, MemOperand(a0, offsetof(T, b))); |
| 417 | 417 |
| 418 // Swap f4 and f5, by using 3 integer registers, a4-a6, | 418 // Swap f4 and f5, by using 3 integer registers, a4-a6, |
| 419 // both two 32-bit chunks, and one 64-bit chunk. | 419 // both two 32-bit chunks, and one 64-bit chunk. |
| 420 // mXhc1 is mips32/64-r2 only, not r1, | 420 // mXhc1 is mips32/64-r2 only, not r1, |
| 421 // but we will not support r1 in practice. | 421 // but we will not support r1 in practice. |
| 422 __ mfc1(a4, f4); | 422 __ mfc1(a4, f4); |
| 423 __ mfhc1(a5, f4); | 423 __ mfhc1(a5, f4); |
| 424 __ dmfc1(a6, f5); | 424 __ dmfc1(a6, f5); |
| 425 | 425 |
| 426 __ mtc1(a4, f5); | 426 __ mtc1(a4, f5); |
| 427 __ mthc1(a5, f5); | 427 __ mthc1(a5, f5); |
| 428 __ dmtc1(a6, f4); | 428 __ dmtc1(a6, f4); |
| 429 | 429 |
| 430 // Store the swapped f4 and f5 back to memory. | 430 // Store the swapped f4 and f5 back to memory. |
| 431 __ sdc1(f4, MemOperand(a0, OFFSET_OF(T, a))); | 431 __ sdc1(f4, MemOperand(a0, offsetof(T, a))); |
| 432 __ sdc1(f5, MemOperand(a0, OFFSET_OF(T, c))); | 432 __ sdc1(f5, MemOperand(a0, offsetof(T, c))); |
| 433 | 433 |
| 434 // Test sign extension of move operations from coprocessor. | 434 // Test sign extension of move operations from coprocessor. |
| 435 __ ldc1(f4, MemOperand(a0, OFFSET_OF(T, d))); | 435 __ ldc1(f4, MemOperand(a0, offsetof(T, d))); |
| 436 __ mfhc1(a4, f4); | 436 __ mfhc1(a4, f4); |
| 437 __ mfc1(a5, f4); | 437 __ mfc1(a5, f4); |
| 438 | 438 |
| 439 __ sd(a4, MemOperand(a0, OFFSET_OF(T, high))); | 439 __ sd(a4, MemOperand(a0, offsetof(T, high))); |
| 440 __ sd(a5, MemOperand(a0, OFFSET_OF(T, low))); | 440 __ sd(a5, MemOperand(a0, offsetof(T, low))); |
| 441 | 441 |
| 442 __ jr(ra); | 442 __ jr(ra); |
| 443 __ nop(); | 443 __ nop(); |
| 444 | 444 |
| 445 CodeDesc desc; | 445 CodeDesc desc; |
| 446 assm.GetCode(&desc); | 446 assm.GetCode(&desc); |
| 447 Handle<Code> code = isolate->factory()->NewCode( | 447 Handle<Code> code = isolate->factory()->NewCode( |
| 448 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 448 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 449 F3 f = FUNCTION_CAST<F3>(code->entry()); | 449 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 450 t.a = 1.5e22; | 450 t.a = 1.5e22; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 473 double b; | 473 double b; |
| 474 int i; | 474 int i; |
| 475 int j; | 475 int j; |
| 476 } T; | 476 } T; |
| 477 T t; | 477 T t; |
| 478 | 478 |
| 479 Assembler assm(isolate, NULL, 0); | 479 Assembler assm(isolate, NULL, 0); |
| 480 Label L, C; | 480 Label L, C; |
| 481 | 481 |
| 482 // Load all structure elements to registers. | 482 // Load all structure elements to registers. |
| 483 __ ldc1(f4, MemOperand(a0, OFFSET_OF(T, a)) ); | 483 __ ldc1(f4, MemOperand(a0, offsetof(T, a)) ); |
| 484 __ ldc1(f6, MemOperand(a0, OFFSET_OF(T, b)) ); | 484 __ ldc1(f6, MemOperand(a0, offsetof(T, b)) ); |
| 485 __ lw(a4, MemOperand(a0, OFFSET_OF(T, i)) ); | 485 __ lw(a4, MemOperand(a0, offsetof(T, i)) ); |
| 486 __ lw(a5, MemOperand(a0, OFFSET_OF(T, j)) ); | 486 __ lw(a5, MemOperand(a0, offsetof(T, j)) ); |
| 487 | 487 |
| 488 // Convert double in f4 to int in element i. | 488 // Convert double in f4 to int in element i. |
| 489 __ cvt_w_d(f8, f4); | 489 __ cvt_w_d(f8, f4); |
| 490 __ mfc1(a6, f8); | 490 __ mfc1(a6, f8); |
| 491 __ sw(a6, MemOperand(a0, OFFSET_OF(T, i)) ); | 491 __ sw(a6, MemOperand(a0, offsetof(T, i)) ); |
| 492 | 492 |
| 493 // Convert double in f6 to int in element j. | 493 // Convert double in f6 to int in element j. |
| 494 __ cvt_w_d(f10, f6); | 494 __ cvt_w_d(f10, f6); |
| 495 __ mfc1(a7, f10); | 495 __ mfc1(a7, f10); |
| 496 __ sw(a7, MemOperand(a0, OFFSET_OF(T, j)) ); | 496 __ sw(a7, MemOperand(a0, offsetof(T, j)) ); |
| 497 | 497 |
| 498 // Convert int in original i (a4) to double in a. | 498 // Convert int in original i (a4) to double in a. |
| 499 __ mtc1(a4, f12); | 499 __ mtc1(a4, f12); |
| 500 __ cvt_d_w(f0, f12); | 500 __ cvt_d_w(f0, f12); |
| 501 __ sdc1(f0, MemOperand(a0, OFFSET_OF(T, a)) ); | 501 __ sdc1(f0, MemOperand(a0, offsetof(T, a)) ); |
| 502 | 502 |
| 503 // Convert int in original j (a5) to double in b. | 503 // Convert int in original j (a5) to double in b. |
| 504 __ mtc1(a5, f14); | 504 __ mtc1(a5, f14); |
| 505 __ cvt_d_w(f2, f14); | 505 __ cvt_d_w(f2, f14); |
| 506 __ sdc1(f2, MemOperand(a0, OFFSET_OF(T, b)) ); | 506 __ sdc1(f2, MemOperand(a0, offsetof(T, b)) ); |
| 507 | 507 |
| 508 __ jr(ra); | 508 __ jr(ra); |
| 509 __ nop(); | 509 __ nop(); |
| 510 | 510 |
| 511 CodeDesc desc; | 511 CodeDesc desc; |
| 512 assm.GetCode(&desc); | 512 assm.GetCode(&desc); |
| 513 Handle<Code> code = isolate->factory()->NewCode( | 513 Handle<Code> code = isolate->factory()->NewCode( |
| 514 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 514 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 515 F3 f = FUNCTION_CAST<F3>(code->entry()); | 515 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 516 t.a = 1.5e4; | 516 t.a = 1.5e4; |
| (...skipping 25 matching lines...) Expand all Loading... |
| 542 int32_t r4; | 542 int32_t r4; |
| 543 int32_t r5; | 543 int32_t r5; |
| 544 int32_t r6; | 544 int32_t r6; |
| 545 } T; | 545 } T; |
| 546 T t; | 546 T t; |
| 547 | 547 |
| 548 Assembler assm(isolate, NULL, 0); | 548 Assembler assm(isolate, NULL, 0); |
| 549 Label L, C; | 549 Label L, C; |
| 550 | 550 |
| 551 // Basic word load/store. | 551 // Basic word load/store. |
| 552 __ lw(a4, MemOperand(a0, OFFSET_OF(T, ui)) ); | 552 __ lw(a4, MemOperand(a0, offsetof(T, ui)) ); |
| 553 __ sw(a4, MemOperand(a0, OFFSET_OF(T, r1)) ); | 553 __ sw(a4, MemOperand(a0, offsetof(T, r1)) ); |
| 554 | 554 |
| 555 // lh with positive data. | 555 // lh with positive data. |
| 556 __ lh(a5, MemOperand(a0, OFFSET_OF(T, ui)) ); | 556 __ lh(a5, MemOperand(a0, offsetof(T, ui)) ); |
| 557 __ sw(a5, MemOperand(a0, OFFSET_OF(T, r2)) ); | 557 __ sw(a5, MemOperand(a0, offsetof(T, r2)) ); |
| 558 | 558 |
| 559 // lh with negative data. | 559 // lh with negative data. |
| 560 __ lh(a6, MemOperand(a0, OFFSET_OF(T, si)) ); | 560 __ lh(a6, MemOperand(a0, offsetof(T, si)) ); |
| 561 __ sw(a6, MemOperand(a0, OFFSET_OF(T, r3)) ); | 561 __ sw(a6, MemOperand(a0, offsetof(T, r3)) ); |
| 562 | 562 |
| 563 // lhu with negative data. | 563 // lhu with negative data. |
| 564 __ lhu(a7, MemOperand(a0, OFFSET_OF(T, si)) ); | 564 __ lhu(a7, MemOperand(a0, offsetof(T, si)) ); |
| 565 __ sw(a7, MemOperand(a0, OFFSET_OF(T, r4)) ); | 565 __ sw(a7, MemOperand(a0, offsetof(T, r4)) ); |
| 566 | 566 |
| 567 // lb with negative data. | 567 // lb with negative data. |
| 568 __ lb(t0, MemOperand(a0, OFFSET_OF(T, si)) ); | 568 __ lb(t0, MemOperand(a0, offsetof(T, si)) ); |
| 569 __ sw(t0, MemOperand(a0, OFFSET_OF(T, r5)) ); | 569 __ sw(t0, MemOperand(a0, offsetof(T, r5)) ); |
| 570 | 570 |
| 571 // sh writes only 1/2 of word. | 571 // sh writes only 1/2 of word. |
| 572 __ lui(t1, 0x3333); | 572 __ lui(t1, 0x3333); |
| 573 __ ori(t1, t1, 0x3333); | 573 __ ori(t1, t1, 0x3333); |
| 574 __ sw(t1, MemOperand(a0, OFFSET_OF(T, r6)) ); | 574 __ sw(t1, MemOperand(a0, offsetof(T, r6)) ); |
| 575 __ lhu(t1, MemOperand(a0, OFFSET_OF(T, si)) ); | 575 __ lhu(t1, MemOperand(a0, offsetof(T, si)) ); |
| 576 __ sh(t1, MemOperand(a0, OFFSET_OF(T, r6)) ); | 576 __ sh(t1, MemOperand(a0, offsetof(T, r6)) ); |
| 577 | 577 |
| 578 __ jr(ra); | 578 __ jr(ra); |
| 579 __ nop(); | 579 __ nop(); |
| 580 | 580 |
| 581 CodeDesc desc; | 581 CodeDesc desc; |
| 582 assm.GetCode(&desc); | 582 assm.GetCode(&desc); |
| 583 Handle<Code> code = isolate->factory()->NewCode( | 583 Handle<Code> code = isolate->factory()->NewCode( |
| 584 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 584 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 585 F3 f = FUNCTION_CAST<F3>(code->entry()); | 585 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 586 t.ui = 0x11223344; | 586 t.ui = 0x11223344; |
| (...skipping 25 matching lines...) Expand all Loading... |
| 612 double f; | 612 double f; |
| 613 int32_t result; | 613 int32_t result; |
| 614 } T; | 614 } T; |
| 615 T t; | 615 T t; |
| 616 | 616 |
| 617 // Create a function that accepts &t, and loads, manipulates, and stores | 617 // Create a function that accepts &t, and loads, manipulates, and stores |
| 618 // the doubles t.a ... t.f. | 618 // the doubles t.a ... t.f. |
| 619 MacroAssembler assm(isolate, NULL, 0); | 619 MacroAssembler assm(isolate, NULL, 0); |
| 620 Label neither_is_nan, less_than, outa_here; | 620 Label neither_is_nan, less_than, outa_here; |
| 621 | 621 |
| 622 __ ldc1(f4, MemOperand(a0, OFFSET_OF(T, a)) ); | 622 __ ldc1(f4, MemOperand(a0, offsetof(T, a)) ); |
| 623 __ ldc1(f6, MemOperand(a0, OFFSET_OF(T, b)) ); | 623 __ ldc1(f6, MemOperand(a0, offsetof(T, b)) ); |
| 624 if (kArchVariant != kMips64r6) { | 624 if (kArchVariant != kMips64r6) { |
| 625 __ c(UN, D, f4, f6); | 625 __ c(UN, D, f4, f6); |
| 626 __ bc1f(&neither_is_nan); | 626 __ bc1f(&neither_is_nan); |
| 627 } else { | 627 } else { |
| 628 __ cmp(UN, L, f2, f4, f6); | 628 __ cmp(UN, L, f2, f4, f6); |
| 629 __ bc1eqz(&neither_is_nan, f2); | 629 __ bc1eqz(&neither_is_nan, f2); |
| 630 } | 630 } |
| 631 __ nop(); | 631 __ nop(); |
| 632 __ sw(zero_reg, MemOperand(a0, OFFSET_OF(T, result)) ); | 632 __ sw(zero_reg, MemOperand(a0, offsetof(T, result)) ); |
| 633 __ Branch(&outa_here); | 633 __ Branch(&outa_here); |
| 634 | 634 |
| 635 __ bind(&neither_is_nan); | 635 __ bind(&neither_is_nan); |
| 636 | 636 |
| 637 if (kArchVariant == kMips64r6) { | 637 if (kArchVariant == kMips64r6) { |
| 638 __ cmp(OLT, L, f2, f6, f4); | 638 __ cmp(OLT, L, f2, f6, f4); |
| 639 __ bc1nez(&less_than, f2); | 639 __ bc1nez(&less_than, f2); |
| 640 } else { | 640 } else { |
| 641 __ c(OLT, D, f6, f4, 2); | 641 __ c(OLT, D, f6, f4, 2); |
| 642 __ bc1t(&less_than, 2); | 642 __ bc1t(&less_than, 2); |
| 643 } | 643 } |
| 644 | 644 |
| 645 __ nop(); | 645 __ nop(); |
| 646 __ sw(zero_reg, MemOperand(a0, OFFSET_OF(T, result)) ); | 646 __ sw(zero_reg, MemOperand(a0, offsetof(T, result)) ); |
| 647 __ Branch(&outa_here); | 647 __ Branch(&outa_here); |
| 648 | 648 |
| 649 __ bind(&less_than); | 649 __ bind(&less_than); |
| 650 __ Addu(a4, zero_reg, Operand(1)); | 650 __ Addu(a4, zero_reg, Operand(1)); |
| 651 __ sw(a4, MemOperand(a0, OFFSET_OF(T, result)) ); // Set true. | 651 __ sw(a4, MemOperand(a0, offsetof(T, result)) ); // Set true. |
| 652 | 652 |
| 653 | 653 |
| 654 // This test-case should have additional tests. | 654 // This test-case should have additional tests. |
| 655 | 655 |
| 656 __ bind(&outa_here); | 656 __ bind(&outa_here); |
| 657 | 657 |
| 658 __ jr(ra); | 658 __ jr(ra); |
| 659 __ nop(); | 659 __ nop(); |
| 660 | 660 |
| 661 CodeDesc desc; | 661 CodeDesc desc; |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 700 int32_t result_rotrv_16; | 700 int32_t result_rotrv_16; |
| 701 int32_t result_rotrv_20; | 701 int32_t result_rotrv_20; |
| 702 int32_t result_rotrv_24; | 702 int32_t result_rotrv_24; |
| 703 int32_t result_rotrv_28; | 703 int32_t result_rotrv_28; |
| 704 } T; | 704 } T; |
| 705 T t; | 705 T t; |
| 706 | 706 |
| 707 MacroAssembler assm(isolate, NULL, 0); | 707 MacroAssembler assm(isolate, NULL, 0); |
| 708 | 708 |
| 709 // Basic word load. | 709 // Basic word load. |
| 710 __ lw(a4, MemOperand(a0, OFFSET_OF(T, input)) ); | 710 __ lw(a4, MemOperand(a0, offsetof(T, input)) ); |
| 711 | 711 |
| 712 // ROTR instruction (called through the Ror macro). | 712 // ROTR instruction (called through the Ror macro). |
| 713 __ Ror(a5, a4, 0x0004); | 713 __ Ror(a5, a4, 0x0004); |
| 714 __ Ror(a6, a4, 0x0008); | 714 __ Ror(a6, a4, 0x0008); |
| 715 __ Ror(a7, a4, 0x000c); | 715 __ Ror(a7, a4, 0x000c); |
| 716 __ Ror(t0, a4, 0x0010); | 716 __ Ror(t0, a4, 0x0010); |
| 717 __ Ror(t1, a4, 0x0014); | 717 __ Ror(t1, a4, 0x0014); |
| 718 __ Ror(t2, a4, 0x0018); | 718 __ Ror(t2, a4, 0x0018); |
| 719 __ Ror(t3, a4, 0x001c); | 719 __ Ror(t3, a4, 0x001c); |
| 720 | 720 |
| 721 // Basic word store. | 721 // Basic word store. |
| 722 __ sw(a5, MemOperand(a0, OFFSET_OF(T, result_rotr_4)) ); | 722 __ sw(a5, MemOperand(a0, offsetof(T, result_rotr_4)) ); |
| 723 __ sw(a6, MemOperand(a0, OFFSET_OF(T, result_rotr_8)) ); | 723 __ sw(a6, MemOperand(a0, offsetof(T, result_rotr_8)) ); |
| 724 __ sw(a7, MemOperand(a0, OFFSET_OF(T, result_rotr_12)) ); | 724 __ sw(a7, MemOperand(a0, offsetof(T, result_rotr_12)) ); |
| 725 __ sw(t0, MemOperand(a0, OFFSET_OF(T, result_rotr_16)) ); | 725 __ sw(t0, MemOperand(a0, offsetof(T, result_rotr_16)) ); |
| 726 __ sw(t1, MemOperand(a0, OFFSET_OF(T, result_rotr_20)) ); | 726 __ sw(t1, MemOperand(a0, offsetof(T, result_rotr_20)) ); |
| 727 __ sw(t2, MemOperand(a0, OFFSET_OF(T, result_rotr_24)) ); | 727 __ sw(t2, MemOperand(a0, offsetof(T, result_rotr_24)) ); |
| 728 __ sw(t3, MemOperand(a0, OFFSET_OF(T, result_rotr_28)) ); | 728 __ sw(t3, MemOperand(a0, offsetof(T, result_rotr_28)) ); |
| 729 | 729 |
| 730 // ROTRV instruction (called through the Ror macro). | 730 // ROTRV instruction (called through the Ror macro). |
| 731 __ li(t3, 0x0004); | 731 __ li(t3, 0x0004); |
| 732 __ Ror(a5, a4, t3); | 732 __ Ror(a5, a4, t3); |
| 733 __ li(t3, 0x0008); | 733 __ li(t3, 0x0008); |
| 734 __ Ror(a6, a4, t3); | 734 __ Ror(a6, a4, t3); |
| 735 __ li(t3, 0x000C); | 735 __ li(t3, 0x000C); |
| 736 __ Ror(a7, a4, t3); | 736 __ Ror(a7, a4, t3); |
| 737 __ li(t3, 0x0010); | 737 __ li(t3, 0x0010); |
| 738 __ Ror(t0, a4, t3); | 738 __ Ror(t0, a4, t3); |
| 739 __ li(t3, 0x0014); | 739 __ li(t3, 0x0014); |
| 740 __ Ror(t1, a4, t3); | 740 __ Ror(t1, a4, t3); |
| 741 __ li(t3, 0x0018); | 741 __ li(t3, 0x0018); |
| 742 __ Ror(t2, a4, t3); | 742 __ Ror(t2, a4, t3); |
| 743 __ li(t3, 0x001C); | 743 __ li(t3, 0x001C); |
| 744 __ Ror(t3, a4, t3); | 744 __ Ror(t3, a4, t3); |
| 745 | 745 |
| 746 // Basic word store. | 746 // Basic word store. |
| 747 __ sw(a5, MemOperand(a0, OFFSET_OF(T, result_rotrv_4)) ); | 747 __ sw(a5, MemOperand(a0, offsetof(T, result_rotrv_4)) ); |
| 748 __ sw(a6, MemOperand(a0, OFFSET_OF(T, result_rotrv_8)) ); | 748 __ sw(a6, MemOperand(a0, offsetof(T, result_rotrv_8)) ); |
| 749 __ sw(a7, MemOperand(a0, OFFSET_OF(T, result_rotrv_12)) ); | 749 __ sw(a7, MemOperand(a0, offsetof(T, result_rotrv_12)) ); |
| 750 __ sw(t0, MemOperand(a0, OFFSET_OF(T, result_rotrv_16)) ); | 750 __ sw(t0, MemOperand(a0, offsetof(T, result_rotrv_16)) ); |
| 751 __ sw(t1, MemOperand(a0, OFFSET_OF(T, result_rotrv_20)) ); | 751 __ sw(t1, MemOperand(a0, offsetof(T, result_rotrv_20)) ); |
| 752 __ sw(t2, MemOperand(a0, OFFSET_OF(T, result_rotrv_24)) ); | 752 __ sw(t2, MemOperand(a0, offsetof(T, result_rotrv_24)) ); |
| 753 __ sw(t3, MemOperand(a0, OFFSET_OF(T, result_rotrv_28)) ); | 753 __ sw(t3, MemOperand(a0, offsetof(T, result_rotrv_28)) ); |
| 754 | 754 |
| 755 __ jr(ra); | 755 __ jr(ra); |
| 756 __ nop(); | 756 __ nop(); |
| 757 | 757 |
| 758 CodeDesc desc; | 758 CodeDesc desc; |
| 759 assm.GetCode(&desc); | 759 assm.GetCode(&desc); |
| 760 Handle<Code> code = isolate->factory()->NewCode( | 760 Handle<Code> code = isolate->factory()->NewCode( |
| 761 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 761 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 762 F3 f = FUNCTION_CAST<F3>(code->entry()); | 762 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 763 t.input = 0x12345678; | 763 t.input = 0x12345678; |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 831 T t; | 831 T t; |
| 832 | 832 |
| 833 Assembler assm(isolate, NULL, 0); | 833 Assembler assm(isolate, NULL, 0); |
| 834 Label L, C; | 834 Label L, C; |
| 835 | 835 |
| 836 if (kArchVariant == kMips64r2) { | 836 if (kArchVariant == kMips64r2) { |
| 837 // Rewritten for FR=1 FPU mode: | 837 // Rewritten for FR=1 FPU mode: |
| 838 // - 32 FP regs of 64-bits each, no odd/even pairs. | 838 // - 32 FP regs of 64-bits each, no odd/even pairs. |
| 839 // - Note that cvt_l_d/cvt_d_l ARE legal in FR=1 mode. | 839 // - Note that cvt_l_d/cvt_d_l ARE legal in FR=1 mode. |
| 840 // Load all structure elements to registers. | 840 // Load all structure elements to registers. |
| 841 __ ldc1(f0, MemOperand(a0, OFFSET_OF(T, a))); | 841 __ ldc1(f0, MemOperand(a0, offsetof(T, a))); |
| 842 | 842 |
| 843 // Save the raw bits of the double. | 843 // Save the raw bits of the double. |
| 844 __ mfc1(a4, f0); | 844 __ mfc1(a4, f0); |
| 845 __ mfhc1(a5, f0); | 845 __ mfhc1(a5, f0); |
| 846 __ sw(a4, MemOperand(a0, OFFSET_OF(T, dbl_mant))); | 846 __ sw(a4, MemOperand(a0, offsetof(T, dbl_mant))); |
| 847 __ sw(a5, MemOperand(a0, OFFSET_OF(T, dbl_exp))); | 847 __ sw(a5, MemOperand(a0, offsetof(T, dbl_exp))); |
| 848 | 848 |
| 849 // Convert double in f0 to long, save hi/lo parts. | 849 // Convert double in f0 to long, save hi/lo parts. |
| 850 __ cvt_l_d(f0, f0); | 850 __ cvt_l_d(f0, f0); |
| 851 __ mfc1(a4, f0); // f0 LS 32 bits of long. | 851 __ mfc1(a4, f0); // f0 LS 32 bits of long. |
| 852 __ mfhc1(a5, f0); // f0 MS 32 bits of long. | 852 __ mfhc1(a5, f0); // f0 MS 32 bits of long. |
| 853 __ sw(a4, MemOperand(a0, OFFSET_OF(T, long_lo))); | 853 __ sw(a4, MemOperand(a0, offsetof(T, long_lo))); |
| 854 __ sw(a5, MemOperand(a0, OFFSET_OF(T, long_hi))); | 854 __ sw(a5, MemOperand(a0, offsetof(T, long_hi))); |
| 855 | 855 |
| 856 // Combine the high/low ints, convert back to double. | 856 // Combine the high/low ints, convert back to double. |
| 857 __ dsll32(a6, a5, 0); // Move a5 to high bits of a6. | 857 __ dsll32(a6, a5, 0); // Move a5 to high bits of a6. |
| 858 __ or_(a6, a6, a4); | 858 __ or_(a6, a6, a4); |
| 859 __ dmtc1(a6, f1); | 859 __ dmtc1(a6, f1); |
| 860 __ cvt_d_l(f1, f1); | 860 __ cvt_d_l(f1, f1); |
| 861 __ sdc1(f1, MemOperand(a0, OFFSET_OF(T, a_converted))); | 861 __ sdc1(f1, MemOperand(a0, offsetof(T, a_converted))); |
| 862 | 862 |
| 863 | 863 |
| 864 // Convert the b long integers to double b. | 864 // Convert the b long integers to double b. |
| 865 __ lw(a4, MemOperand(a0, OFFSET_OF(T, b_long_lo))); | 865 __ lw(a4, MemOperand(a0, offsetof(T, b_long_lo))); |
| 866 __ lw(a5, MemOperand(a0, OFFSET_OF(T, b_long_hi))); | 866 __ lw(a5, MemOperand(a0, offsetof(T, b_long_hi))); |
| 867 __ mtc1(a4, f8); // f8 LS 32-bits. | 867 __ mtc1(a4, f8); // f8 LS 32-bits. |
| 868 __ mthc1(a5, f8); // f8 MS 32-bits. | 868 __ mthc1(a5, f8); // f8 MS 32-bits. |
| 869 __ cvt_d_l(f10, f8); | 869 __ cvt_d_l(f10, f8); |
| 870 __ sdc1(f10, MemOperand(a0, OFFSET_OF(T, b))); | 870 __ sdc1(f10, MemOperand(a0, offsetof(T, b))); |
| 871 | 871 |
| 872 // Convert double b back to long-int. | 872 // Convert double b back to long-int. |
| 873 __ ldc1(f31, MemOperand(a0, OFFSET_OF(T, b))); | 873 __ ldc1(f31, MemOperand(a0, offsetof(T, b))); |
| 874 __ cvt_l_d(f31, f31); | 874 __ cvt_l_d(f31, f31); |
| 875 __ dmfc1(a7, f31); | 875 __ dmfc1(a7, f31); |
| 876 __ sd(a7, MemOperand(a0, OFFSET_OF(T, b_long_as_int64))); | 876 __ sd(a7, MemOperand(a0, offsetof(T, b_long_as_int64))); |
| 877 | 877 |
| 878 | 878 |
| 879 __ jr(ra); | 879 __ jr(ra); |
| 880 __ nop(); | 880 __ nop(); |
| 881 | 881 |
| 882 CodeDesc desc; | 882 CodeDesc desc; |
| 883 assm.GetCode(&desc); | 883 assm.GetCode(&desc); |
| 884 Handle<Code> code = isolate->factory()->NewCode( | 884 Handle<Code> code = isolate->factory()->NewCode( |
| 885 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 885 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 886 F3 f = FUNCTION_CAST<F3>(code->entry()); | 886 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 929 int32_t swr_0; | 929 int32_t swr_0; |
| 930 int32_t swr_1; | 930 int32_t swr_1; |
| 931 int32_t swr_2; | 931 int32_t swr_2; |
| 932 int32_t swr_3; | 932 int32_t swr_3; |
| 933 } T; | 933 } T; |
| 934 T t; | 934 T t; |
| 935 | 935 |
| 936 Assembler assm(isolate, NULL, 0); | 936 Assembler assm(isolate, NULL, 0); |
| 937 | 937 |
| 938 // Test all combinations of LWL and vAddr. | 938 // Test all combinations of LWL and vAddr. |
| 939 __ lw(a4, MemOperand(a0, OFFSET_OF(T, reg_init))); | 939 __ lw(a4, MemOperand(a0, offsetof(T, reg_init))); |
| 940 __ lwl(a4, MemOperand(a0, OFFSET_OF(T, mem_init))); | 940 __ lwl(a4, MemOperand(a0, offsetof(T, mem_init))); |
| 941 __ sw(a4, MemOperand(a0, OFFSET_OF(T, lwl_0))); | 941 __ sw(a4, MemOperand(a0, offsetof(T, lwl_0))); |
| 942 | 942 |
| 943 __ lw(a5, MemOperand(a0, OFFSET_OF(T, reg_init))); | 943 __ lw(a5, MemOperand(a0, offsetof(T, reg_init))); |
| 944 __ lwl(a5, MemOperand(a0, OFFSET_OF(T, mem_init) + 1)); | 944 __ lwl(a5, MemOperand(a0, offsetof(T, mem_init) + 1)); |
| 945 __ sw(a5, MemOperand(a0, OFFSET_OF(T, lwl_1))); | 945 __ sw(a5, MemOperand(a0, offsetof(T, lwl_1))); |
| 946 | 946 |
| 947 __ lw(a6, MemOperand(a0, OFFSET_OF(T, reg_init))); | 947 __ lw(a6, MemOperand(a0, offsetof(T, reg_init))); |
| 948 __ lwl(a6, MemOperand(a0, OFFSET_OF(T, mem_init) + 2)); | 948 __ lwl(a6, MemOperand(a0, offsetof(T, mem_init) + 2)); |
| 949 __ sw(a6, MemOperand(a0, OFFSET_OF(T, lwl_2))); | 949 __ sw(a6, MemOperand(a0, offsetof(T, lwl_2))); |
| 950 | 950 |
| 951 __ lw(a7, MemOperand(a0, OFFSET_OF(T, reg_init))); | 951 __ lw(a7, MemOperand(a0, offsetof(T, reg_init))); |
| 952 __ lwl(a7, MemOperand(a0, OFFSET_OF(T, mem_init) + 3)); | 952 __ lwl(a7, MemOperand(a0, offsetof(T, mem_init) + 3)); |
| 953 __ sw(a7, MemOperand(a0, OFFSET_OF(T, lwl_3))); | 953 __ sw(a7, MemOperand(a0, offsetof(T, lwl_3))); |
| 954 | 954 |
| 955 // Test all combinations of LWR and vAddr. | 955 // Test all combinations of LWR and vAddr. |
| 956 __ lw(a4, MemOperand(a0, OFFSET_OF(T, reg_init))); | 956 __ lw(a4, MemOperand(a0, offsetof(T, reg_init))); |
| 957 __ lwr(a4, MemOperand(a0, OFFSET_OF(T, mem_init))); | 957 __ lwr(a4, MemOperand(a0, offsetof(T, mem_init))); |
| 958 __ sw(a4, MemOperand(a0, OFFSET_OF(T, lwr_0))); | 958 __ sw(a4, MemOperand(a0, offsetof(T, lwr_0))); |
| 959 | 959 |
| 960 __ lw(a5, MemOperand(a0, OFFSET_OF(T, reg_init))); | 960 __ lw(a5, MemOperand(a0, offsetof(T, reg_init))); |
| 961 __ lwr(a5, MemOperand(a0, OFFSET_OF(T, mem_init) + 1)); | 961 __ lwr(a5, MemOperand(a0, offsetof(T, mem_init) + 1)); |
| 962 __ sw(a5, MemOperand(a0, OFFSET_OF(T, lwr_1))); | 962 __ sw(a5, MemOperand(a0, offsetof(T, lwr_1))); |
| 963 | 963 |
| 964 __ lw(a6, MemOperand(a0, OFFSET_OF(T, reg_init))); | 964 __ lw(a6, MemOperand(a0, offsetof(T, reg_init))); |
| 965 __ lwr(a6, MemOperand(a0, OFFSET_OF(T, mem_init) + 2)); | 965 __ lwr(a6, MemOperand(a0, offsetof(T, mem_init) + 2)); |
| 966 __ sw(a6, MemOperand(a0, OFFSET_OF(T, lwr_2)) ); | 966 __ sw(a6, MemOperand(a0, offsetof(T, lwr_2)) ); |
| 967 | 967 |
| 968 __ lw(a7, MemOperand(a0, OFFSET_OF(T, reg_init))); | 968 __ lw(a7, MemOperand(a0, offsetof(T, reg_init))); |
| 969 __ lwr(a7, MemOperand(a0, OFFSET_OF(T, mem_init) + 3)); | 969 __ lwr(a7, MemOperand(a0, offsetof(T, mem_init) + 3)); |
| 970 __ sw(a7, MemOperand(a0, OFFSET_OF(T, lwr_3)) ); | 970 __ sw(a7, MemOperand(a0, offsetof(T, lwr_3)) ); |
| 971 | 971 |
| 972 // Test all combinations of SWL and vAddr. | 972 // Test all combinations of SWL and vAddr. |
| 973 __ lw(a4, MemOperand(a0, OFFSET_OF(T, mem_init))); | 973 __ lw(a4, MemOperand(a0, offsetof(T, mem_init))); |
| 974 __ sw(a4, MemOperand(a0, OFFSET_OF(T, swl_0))); | 974 __ sw(a4, MemOperand(a0, offsetof(T, swl_0))); |
| 975 __ lw(a4, MemOperand(a0, OFFSET_OF(T, reg_init))); | 975 __ lw(a4, MemOperand(a0, offsetof(T, reg_init))); |
| 976 __ swl(a4, MemOperand(a0, OFFSET_OF(T, swl_0))); | 976 __ swl(a4, MemOperand(a0, offsetof(T, swl_0))); |
| 977 | 977 |
| 978 __ lw(a5, MemOperand(a0, OFFSET_OF(T, mem_init))); | 978 __ lw(a5, MemOperand(a0, offsetof(T, mem_init))); |
| 979 __ sw(a5, MemOperand(a0, OFFSET_OF(T, swl_1))); | 979 __ sw(a5, MemOperand(a0, offsetof(T, swl_1))); |
| 980 __ lw(a5, MemOperand(a0, OFFSET_OF(T, reg_init))); | 980 __ lw(a5, MemOperand(a0, offsetof(T, reg_init))); |
| 981 __ swl(a5, MemOperand(a0, OFFSET_OF(T, swl_1) + 1)); | 981 __ swl(a5, MemOperand(a0, offsetof(T, swl_1) + 1)); |
| 982 | 982 |
| 983 __ lw(a6, MemOperand(a0, OFFSET_OF(T, mem_init))); | 983 __ lw(a6, MemOperand(a0, offsetof(T, mem_init))); |
| 984 __ sw(a6, MemOperand(a0, OFFSET_OF(T, swl_2))); | 984 __ sw(a6, MemOperand(a0, offsetof(T, swl_2))); |
| 985 __ lw(a6, MemOperand(a0, OFFSET_OF(T, reg_init))); | 985 __ lw(a6, MemOperand(a0, offsetof(T, reg_init))); |
| 986 __ swl(a6, MemOperand(a0, OFFSET_OF(T, swl_2) + 2)); | 986 __ swl(a6, MemOperand(a0, offsetof(T, swl_2) + 2)); |
| 987 | 987 |
| 988 __ lw(a7, MemOperand(a0, OFFSET_OF(T, mem_init))); | 988 __ lw(a7, MemOperand(a0, offsetof(T, mem_init))); |
| 989 __ sw(a7, MemOperand(a0, OFFSET_OF(T, swl_3))); | 989 __ sw(a7, MemOperand(a0, offsetof(T, swl_3))); |
| 990 __ lw(a7, MemOperand(a0, OFFSET_OF(T, reg_init))); | 990 __ lw(a7, MemOperand(a0, offsetof(T, reg_init))); |
| 991 __ swl(a7, MemOperand(a0, OFFSET_OF(T, swl_3) + 3)); | 991 __ swl(a7, MemOperand(a0, offsetof(T, swl_3) + 3)); |
| 992 | 992 |
| 993 // Test all combinations of SWR and vAddr. | 993 // Test all combinations of SWR and vAddr. |
| 994 __ lw(a4, MemOperand(a0, OFFSET_OF(T, mem_init))); | 994 __ lw(a4, MemOperand(a0, offsetof(T, mem_init))); |
| 995 __ sw(a4, MemOperand(a0, OFFSET_OF(T, swr_0))); | 995 __ sw(a4, MemOperand(a0, offsetof(T, swr_0))); |
| 996 __ lw(a4, MemOperand(a0, OFFSET_OF(T, reg_init))); | 996 __ lw(a4, MemOperand(a0, offsetof(T, reg_init))); |
| 997 __ swr(a4, MemOperand(a0, OFFSET_OF(T, swr_0))); | 997 __ swr(a4, MemOperand(a0, offsetof(T, swr_0))); |
| 998 | 998 |
| 999 __ lw(a5, MemOperand(a0, OFFSET_OF(T, mem_init))); | 999 __ lw(a5, MemOperand(a0, offsetof(T, mem_init))); |
| 1000 __ sw(a5, MemOperand(a0, OFFSET_OF(T, swr_1))); | 1000 __ sw(a5, MemOperand(a0, offsetof(T, swr_1))); |
| 1001 __ lw(a5, MemOperand(a0, OFFSET_OF(T, reg_init))); | 1001 __ lw(a5, MemOperand(a0, offsetof(T, reg_init))); |
| 1002 __ swr(a5, MemOperand(a0, OFFSET_OF(T, swr_1) + 1)); | 1002 __ swr(a5, MemOperand(a0, offsetof(T, swr_1) + 1)); |
| 1003 | 1003 |
| 1004 __ lw(a6, MemOperand(a0, OFFSET_OF(T, mem_init))); | 1004 __ lw(a6, MemOperand(a0, offsetof(T, mem_init))); |
| 1005 __ sw(a6, MemOperand(a0, OFFSET_OF(T, swr_2))); | 1005 __ sw(a6, MemOperand(a0, offsetof(T, swr_2))); |
| 1006 __ lw(a6, MemOperand(a0, OFFSET_OF(T, reg_init))); | 1006 __ lw(a6, MemOperand(a0, offsetof(T, reg_init))); |
| 1007 __ swr(a6, MemOperand(a0, OFFSET_OF(T, swr_2) + 2)); | 1007 __ swr(a6, MemOperand(a0, offsetof(T, swr_2) + 2)); |
| 1008 | 1008 |
| 1009 __ lw(a7, MemOperand(a0, OFFSET_OF(T, mem_init))); | 1009 __ lw(a7, MemOperand(a0, offsetof(T, mem_init))); |
| 1010 __ sw(a7, MemOperand(a0, OFFSET_OF(T, swr_3))); | 1010 __ sw(a7, MemOperand(a0, offsetof(T, swr_3))); |
| 1011 __ lw(a7, MemOperand(a0, OFFSET_OF(T, reg_init))); | 1011 __ lw(a7, MemOperand(a0, offsetof(T, reg_init))); |
| 1012 __ swr(a7, MemOperand(a0, OFFSET_OF(T, swr_3) + 3)); | 1012 __ swr(a7, MemOperand(a0, offsetof(T, swr_3) + 3)); |
| 1013 | 1013 |
| 1014 __ jr(ra); | 1014 __ jr(ra); |
| 1015 __ nop(); | 1015 __ nop(); |
| 1016 | 1016 |
| 1017 CodeDesc desc; | 1017 CodeDesc desc; |
| 1018 assm.GetCode(&desc); | 1018 assm.GetCode(&desc); |
| 1019 Handle<Code> code = isolate->factory()->NewCode( | 1019 Handle<Code> code = isolate->factory()->NewCode( |
| 1020 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 1020 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 1021 F3 f = FUNCTION_CAST<F3>(code->entry()); | 1021 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 1022 t.reg_init = 0xaabbccdd; | 1022 t.reg_init = 0xaabbccdd; |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1060 int32_t y2; | 1060 int32_t y2; |
| 1061 int32_t y3; | 1061 int32_t y3; |
| 1062 int32_t y4; | 1062 int32_t y4; |
| 1063 } T; | 1063 } T; |
| 1064 T t; | 1064 T t; |
| 1065 | 1065 |
| 1066 MacroAssembler assm(isolate, NULL, 0); | 1066 MacroAssembler assm(isolate, NULL, 0); |
| 1067 | 1067 |
| 1068 __ mov(t2, fp); // Save frame pointer. | 1068 __ mov(t2, fp); // Save frame pointer. |
| 1069 __ mov(fp, a0); // Access struct T by fp. | 1069 __ mov(fp, a0); // Access struct T by fp. |
| 1070 __ lw(a4, MemOperand(a0, OFFSET_OF(T, y))); | 1070 __ lw(a4, MemOperand(a0, offsetof(T, y))); |
| 1071 __ lw(a7, MemOperand(a0, OFFSET_OF(T, y4))); | 1071 __ lw(a7, MemOperand(a0, offsetof(T, y4))); |
| 1072 | 1072 |
| 1073 __ addu(a5, a4, a7); | 1073 __ addu(a5, a4, a7); |
| 1074 __ subu(t0, a4, a7); | 1074 __ subu(t0, a4, a7); |
| 1075 __ nop(); | 1075 __ nop(); |
| 1076 __ push(a4); // These instructions disappear after opt. | 1076 __ push(a4); // These instructions disappear after opt. |
| 1077 __ Pop(); | 1077 __ Pop(); |
| 1078 __ addu(a4, a4, a4); | 1078 __ addu(a4, a4, a4); |
| 1079 __ nop(); | 1079 __ nop(); |
| 1080 __ Pop(); // These instructions disappear after opt. | 1080 __ Pop(); // These instructions disappear after opt. |
| 1081 __ push(a7); | 1081 __ push(a7); |
| 1082 __ nop(); | 1082 __ nop(); |
| 1083 __ push(a7); // These instructions disappear after opt. | 1083 __ push(a7); // These instructions disappear after opt. |
| 1084 __ pop(a7); | 1084 __ pop(a7); |
| 1085 __ nop(); | 1085 __ nop(); |
| 1086 __ push(a7); | 1086 __ push(a7); |
| 1087 __ pop(t0); | 1087 __ pop(t0); |
| 1088 __ nop(); | 1088 __ nop(); |
| 1089 __ sw(a4, MemOperand(fp, OFFSET_OF(T, y))); | 1089 __ sw(a4, MemOperand(fp, offsetof(T, y))); |
| 1090 __ lw(a4, MemOperand(fp, OFFSET_OF(T, y))); | 1090 __ lw(a4, MemOperand(fp, offsetof(T, y))); |
| 1091 __ nop(); | 1091 __ nop(); |
| 1092 __ sw(a4, MemOperand(fp, OFFSET_OF(T, y))); | 1092 __ sw(a4, MemOperand(fp, offsetof(T, y))); |
| 1093 __ lw(a5, MemOperand(fp, OFFSET_OF(T, y))); | 1093 __ lw(a5, MemOperand(fp, offsetof(T, y))); |
| 1094 __ nop(); | 1094 __ nop(); |
| 1095 __ push(a5); | 1095 __ push(a5); |
| 1096 __ lw(a5, MemOperand(fp, OFFSET_OF(T, y))); | 1096 __ lw(a5, MemOperand(fp, offsetof(T, y))); |
| 1097 __ pop(a5); | 1097 __ pop(a5); |
| 1098 __ nop(); | 1098 __ nop(); |
| 1099 __ push(a5); | 1099 __ push(a5); |
| 1100 __ lw(a6, MemOperand(fp, OFFSET_OF(T, y))); | 1100 __ lw(a6, MemOperand(fp, offsetof(T, y))); |
| 1101 __ pop(a5); | 1101 __ pop(a5); |
| 1102 __ nop(); | 1102 __ nop(); |
| 1103 __ push(a5); | 1103 __ push(a5); |
| 1104 __ lw(a6, MemOperand(fp, OFFSET_OF(T, y))); | 1104 __ lw(a6, MemOperand(fp, offsetof(T, y))); |
| 1105 __ pop(a6); | 1105 __ pop(a6); |
| 1106 __ nop(); | 1106 __ nop(); |
| 1107 __ push(a6); | 1107 __ push(a6); |
| 1108 __ lw(a6, MemOperand(fp, OFFSET_OF(T, y))); | 1108 __ lw(a6, MemOperand(fp, offsetof(T, y))); |
| 1109 __ pop(a5); | 1109 __ pop(a5); |
| 1110 __ nop(); | 1110 __ nop(); |
| 1111 __ push(a5); | 1111 __ push(a5); |
| 1112 __ lw(a6, MemOperand(fp, OFFSET_OF(T, y))); | 1112 __ lw(a6, MemOperand(fp, offsetof(T, y))); |
| 1113 __ pop(a7); | 1113 __ pop(a7); |
| 1114 __ nop(); | 1114 __ nop(); |
| 1115 | 1115 |
| 1116 __ mov(fp, t2); | 1116 __ mov(fp, t2); |
| 1117 __ jr(ra); | 1117 __ jr(ra); |
| 1118 __ nop(); | 1118 __ nop(); |
| 1119 | 1119 |
| 1120 CodeDesc desc; | 1120 CodeDesc desc; |
| 1121 assm.GetCode(&desc); | 1121 assm.GetCode(&desc); |
| 1122 Handle<Code> code = isolate->factory()->NewCode( | 1122 Handle<Code> code = isolate->factory()->NewCode( |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1147 double cvt_small_out; | 1147 double cvt_small_out; |
| 1148 uint32_t trunc_big_out; | 1148 uint32_t trunc_big_out; |
| 1149 uint32_t trunc_small_out; | 1149 uint32_t trunc_small_out; |
| 1150 uint32_t cvt_big_in; | 1150 uint32_t cvt_big_in; |
| 1151 uint32_t cvt_small_in; | 1151 uint32_t cvt_small_in; |
| 1152 } T; | 1152 } T; |
| 1153 T t; | 1153 T t; |
| 1154 | 1154 |
| 1155 MacroAssembler assm(isolate, NULL, 0); | 1155 MacroAssembler assm(isolate, NULL, 0); |
| 1156 | 1156 |
| 1157 __ sw(a4, MemOperand(a0, OFFSET_OF(T, cvt_small_in))); | 1157 __ sw(a4, MemOperand(a0, offsetof(T, cvt_small_in))); |
| 1158 __ Cvt_d_uw(f10, a4, f22); | 1158 __ Cvt_d_uw(f10, a4, f22); |
| 1159 __ sdc1(f10, MemOperand(a0, OFFSET_OF(T, cvt_small_out))); | 1159 __ sdc1(f10, MemOperand(a0, offsetof(T, cvt_small_out))); |
| 1160 | 1160 |
| 1161 __ Trunc_uw_d(f10, f10, f22); | 1161 __ Trunc_uw_d(f10, f10, f22); |
| 1162 __ swc1(f10, MemOperand(a0, OFFSET_OF(T, trunc_small_out))); | 1162 __ swc1(f10, MemOperand(a0, offsetof(T, trunc_small_out))); |
| 1163 | 1163 |
| 1164 __ sw(a4, MemOperand(a0, OFFSET_OF(T, cvt_big_in))); | 1164 __ sw(a4, MemOperand(a0, offsetof(T, cvt_big_in))); |
| 1165 __ Cvt_d_uw(f8, a4, f22); | 1165 __ Cvt_d_uw(f8, a4, f22); |
| 1166 __ sdc1(f8, MemOperand(a0, OFFSET_OF(T, cvt_big_out))); | 1166 __ sdc1(f8, MemOperand(a0, offsetof(T, cvt_big_out))); |
| 1167 | 1167 |
| 1168 __ Trunc_uw_d(f8, f8, f22); | 1168 __ Trunc_uw_d(f8, f8, f22); |
| 1169 __ swc1(f8, MemOperand(a0, OFFSET_OF(T, trunc_big_out))); | 1169 __ swc1(f8, MemOperand(a0, offsetof(T, trunc_big_out))); |
| 1170 | 1170 |
| 1171 __ jr(ra); | 1171 __ jr(ra); |
| 1172 __ nop(); | 1172 __ nop(); |
| 1173 | 1173 |
| 1174 CodeDesc desc; | 1174 CodeDesc desc; |
| 1175 assm.GetCode(&desc); | 1175 assm.GetCode(&desc); |
| 1176 Handle<Code> code = isolate->factory()->NewCode( | 1176 Handle<Code> code = isolate->factory()->NewCode( |
| 1177 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 1177 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 1178 F3 f = FUNCTION_CAST<F3>(code->entry()); | 1178 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 1179 | 1179 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1229 | 1229 |
| 1230 #undef ROUND_STRUCT_ELEMENT | 1230 #undef ROUND_STRUCT_ELEMENT |
| 1231 | 1231 |
| 1232 MacroAssembler assm(isolate, NULL, 0); | 1232 MacroAssembler assm(isolate, NULL, 0); |
| 1233 | 1233 |
| 1234 // Save FCSR. | 1234 // Save FCSR. |
| 1235 __ cfc1(a1, FCSR); | 1235 __ cfc1(a1, FCSR); |
| 1236 // Disable FPU exceptions. | 1236 // Disable FPU exceptions. |
| 1237 __ ctc1(zero_reg, FCSR); | 1237 __ ctc1(zero_reg, FCSR); |
| 1238 #define RUN_ROUND_TEST(x) \ | 1238 #define RUN_ROUND_TEST(x) \ |
| 1239 __ ldc1(f0, MemOperand(a0, OFFSET_OF(T, round_up_in))); \ | 1239 __ ldc1(f0, MemOperand(a0, offsetof(T, round_up_in))); \ |
| 1240 __ x##_w_d(f0, f0); \ | 1240 __ x##_w_d(f0, f0); \ |
| 1241 __ swc1(f0, MemOperand(a0, OFFSET_OF(T, x##_up_out))); \ | 1241 __ swc1(f0, MemOperand(a0, offsetof(T, x##_up_out))); \ |
| 1242 \ | 1242 \ |
| 1243 __ ldc1(f0, MemOperand(a0, OFFSET_OF(T, round_down_in))); \ | 1243 __ ldc1(f0, MemOperand(a0, offsetof(T, round_down_in))); \ |
| 1244 __ x##_w_d(f0, f0); \ | 1244 __ x##_w_d(f0, f0); \ |
| 1245 __ swc1(f0, MemOperand(a0, OFFSET_OF(T, x##_down_out))); \ | 1245 __ swc1(f0, MemOperand(a0, offsetof(T, x##_down_out))); \ |
| 1246 \ | 1246 \ |
| 1247 __ ldc1(f0, MemOperand(a0, OFFSET_OF(T, neg_round_up_in))); \ | 1247 __ ldc1(f0, MemOperand(a0, offsetof(T, neg_round_up_in))); \ |
| 1248 __ x##_w_d(f0, f0); \ | 1248 __ x##_w_d(f0, f0); \ |
| 1249 __ swc1(f0, MemOperand(a0, OFFSET_OF(T, neg_##x##_up_out))); \ | 1249 __ swc1(f0, MemOperand(a0, offsetof(T, neg_##x##_up_out))); \ |
| 1250 \ | 1250 \ |
| 1251 __ ldc1(f0, MemOperand(a0, OFFSET_OF(T, neg_round_down_in))); \ | 1251 __ ldc1(f0, MemOperand(a0, offsetof(T, neg_round_down_in))); \ |
| 1252 __ x##_w_d(f0, f0); \ | 1252 __ x##_w_d(f0, f0); \ |
| 1253 __ swc1(f0, MemOperand(a0, OFFSET_OF(T, neg_##x##_down_out))); \ | 1253 __ swc1(f0, MemOperand(a0, offsetof(T, neg_##x##_down_out))); \ |
| 1254 \ | 1254 \ |
| 1255 __ ldc1(f0, MemOperand(a0, OFFSET_OF(T, err1_in))); \ | 1255 __ ldc1(f0, MemOperand(a0, offsetof(T, err1_in))); \ |
| 1256 __ ctc1(zero_reg, FCSR); \ | 1256 __ ctc1(zero_reg, FCSR); \ |
| 1257 __ x##_w_d(f0, f0); \ | 1257 __ x##_w_d(f0, f0); \ |
| 1258 __ cfc1(a2, FCSR); \ | 1258 __ cfc1(a2, FCSR); \ |
| 1259 __ sw(a2, MemOperand(a0, OFFSET_OF(T, x##_err1_out))); \ | 1259 __ sw(a2, MemOperand(a0, offsetof(T, x##_err1_out))); \ |
| 1260 \ | 1260 \ |
| 1261 __ ldc1(f0, MemOperand(a0, OFFSET_OF(T, err2_in))); \ | 1261 __ ldc1(f0, MemOperand(a0, offsetof(T, err2_in))); \ |
| 1262 __ ctc1(zero_reg, FCSR); \ | 1262 __ ctc1(zero_reg, FCSR); \ |
| 1263 __ x##_w_d(f0, f0); \ | 1263 __ x##_w_d(f0, f0); \ |
| 1264 __ cfc1(a2, FCSR); \ | 1264 __ cfc1(a2, FCSR); \ |
| 1265 __ sw(a2, MemOperand(a0, OFFSET_OF(T, x##_err2_out))); \ | 1265 __ sw(a2, MemOperand(a0, offsetof(T, x##_err2_out))); \ |
| 1266 \ | 1266 \ |
| 1267 __ ldc1(f0, MemOperand(a0, OFFSET_OF(T, err3_in))); \ | 1267 __ ldc1(f0, MemOperand(a0, offsetof(T, err3_in))); \ |
| 1268 __ ctc1(zero_reg, FCSR); \ | 1268 __ ctc1(zero_reg, FCSR); \ |
| 1269 __ x##_w_d(f0, f0); \ | 1269 __ x##_w_d(f0, f0); \ |
| 1270 __ cfc1(a2, FCSR); \ | 1270 __ cfc1(a2, FCSR); \ |
| 1271 __ sw(a2, MemOperand(a0, OFFSET_OF(T, x##_err3_out))); \ | 1271 __ sw(a2, MemOperand(a0, offsetof(T, x##_err3_out))); \ |
| 1272 \ | 1272 \ |
| 1273 __ ldc1(f0, MemOperand(a0, OFFSET_OF(T, err4_in))); \ | 1273 __ ldc1(f0, MemOperand(a0, offsetof(T, err4_in))); \ |
| 1274 __ ctc1(zero_reg, FCSR); \ | 1274 __ ctc1(zero_reg, FCSR); \ |
| 1275 __ x##_w_d(f0, f0); \ | 1275 __ x##_w_d(f0, f0); \ |
| 1276 __ cfc1(a2, FCSR); \ | 1276 __ cfc1(a2, FCSR); \ |
| 1277 __ sw(a2, MemOperand(a0, OFFSET_OF(T, x##_err4_out))); \ | 1277 __ sw(a2, MemOperand(a0, offsetof(T, x##_err4_out))); \ |
| 1278 __ swc1(f0, MemOperand(a0, OFFSET_OF(T, x##_invalid_result))); | 1278 __ swc1(f0, MemOperand(a0, offsetof(T, x##_invalid_result))); |
| 1279 | 1279 |
| 1280 RUN_ROUND_TEST(round) | 1280 RUN_ROUND_TEST(round) |
| 1281 RUN_ROUND_TEST(floor) | 1281 RUN_ROUND_TEST(floor) |
| 1282 RUN_ROUND_TEST(ceil) | 1282 RUN_ROUND_TEST(ceil) |
| 1283 RUN_ROUND_TEST(trunc) | 1283 RUN_ROUND_TEST(trunc) |
| 1284 RUN_ROUND_TEST(cvt) | 1284 RUN_ROUND_TEST(cvt) |
| 1285 | 1285 |
| 1286 // Restore FCSR. | 1286 // Restore FCSR. |
| 1287 __ ctc1(a1, FCSR); | 1287 __ ctc1(a1, FCSR); |
| 1288 | 1288 |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1356 int64_t r6; | 1356 int64_t r6; |
| 1357 uint32_t ui; | 1357 uint32_t ui; |
| 1358 int32_t si; | 1358 int32_t si; |
| 1359 } T; | 1359 } T; |
| 1360 T t; | 1360 T t; |
| 1361 | 1361 |
| 1362 Assembler assm(isolate, NULL, 0); | 1362 Assembler assm(isolate, NULL, 0); |
| 1363 Label L, C; | 1363 Label L, C; |
| 1364 | 1364 |
| 1365 // Basic 32-bit word load/store, with un-signed data. | 1365 // Basic 32-bit word load/store, with un-signed data. |
| 1366 __ lw(a4, MemOperand(a0, OFFSET_OF(T, ui))); | 1366 __ lw(a4, MemOperand(a0, offsetof(T, ui))); |
| 1367 __ sw(a4, MemOperand(a0, OFFSET_OF(T, r1))); | 1367 __ sw(a4, MemOperand(a0, offsetof(T, r1))); |
| 1368 | 1368 |
| 1369 // Check that the data got zero-extended into 64-bit a4. | 1369 // Check that the data got zero-extended into 64-bit a4. |
| 1370 __ sd(a4, MemOperand(a0, OFFSET_OF(T, r2))); | 1370 __ sd(a4, MemOperand(a0, offsetof(T, r2))); |
| 1371 | 1371 |
| 1372 // Basic 32-bit word load/store, with SIGNED data. | 1372 // Basic 32-bit word load/store, with SIGNED data. |
| 1373 __ lw(a5, MemOperand(a0, OFFSET_OF(T, si))); | 1373 __ lw(a5, MemOperand(a0, offsetof(T, si))); |
| 1374 __ sw(a5, MemOperand(a0, OFFSET_OF(T, r3))); | 1374 __ sw(a5, MemOperand(a0, offsetof(T, r3))); |
| 1375 | 1375 |
| 1376 // Check that the data got sign-extended into 64-bit a4. | 1376 // Check that the data got sign-extended into 64-bit a4. |
| 1377 __ sd(a5, MemOperand(a0, OFFSET_OF(T, r4))); | 1377 __ sd(a5, MemOperand(a0, offsetof(T, r4))); |
| 1378 | 1378 |
| 1379 // 32-bit UNSIGNED word load/store, with SIGNED data. | 1379 // 32-bit UNSIGNED word load/store, with SIGNED data. |
| 1380 __ lwu(a6, MemOperand(a0, OFFSET_OF(T, si))); | 1380 __ lwu(a6, MemOperand(a0, offsetof(T, si))); |
| 1381 __ sw(a6, MemOperand(a0, OFFSET_OF(T, r5))); | 1381 __ sw(a6, MemOperand(a0, offsetof(T, r5))); |
| 1382 | 1382 |
| 1383 // Check that the data got zero-extended into 64-bit a4. | 1383 // Check that the data got zero-extended into 64-bit a4. |
| 1384 __ sd(a6, MemOperand(a0, OFFSET_OF(T, r6))); | 1384 __ sd(a6, MemOperand(a0, offsetof(T, r6))); |
| 1385 | 1385 |
| 1386 // lh with positive data. | 1386 // lh with positive data. |
| 1387 __ lh(a5, MemOperand(a0, OFFSET_OF(T, ui))); | 1387 __ lh(a5, MemOperand(a0, offsetof(T, ui))); |
| 1388 __ sw(a5, MemOperand(a0, OFFSET_OF(T, r2))); | 1388 __ sw(a5, MemOperand(a0, offsetof(T, r2))); |
| 1389 | 1389 |
| 1390 // lh with negative data. | 1390 // lh with negative data. |
| 1391 __ lh(a6, MemOperand(a0, OFFSET_OF(T, si))); | 1391 __ lh(a6, MemOperand(a0, offsetof(T, si))); |
| 1392 __ sw(a6, MemOperand(a0, OFFSET_OF(T, r3))); | 1392 __ sw(a6, MemOperand(a0, offsetof(T, r3))); |
| 1393 | 1393 |
| 1394 // lhu with negative data. | 1394 // lhu with negative data. |
| 1395 __ lhu(a7, MemOperand(a0, OFFSET_OF(T, si))); | 1395 __ lhu(a7, MemOperand(a0, offsetof(T, si))); |
| 1396 __ sw(a7, MemOperand(a0, OFFSET_OF(T, r4))); | 1396 __ sw(a7, MemOperand(a0, offsetof(T, r4))); |
| 1397 | 1397 |
| 1398 // lb with negative data. | 1398 // lb with negative data. |
| 1399 __ lb(t0, MemOperand(a0, OFFSET_OF(T, si))); | 1399 __ lb(t0, MemOperand(a0, offsetof(T, si))); |
| 1400 __ sw(t0, MemOperand(a0, OFFSET_OF(T, r5))); | 1400 __ sw(t0, MemOperand(a0, offsetof(T, r5))); |
| 1401 | 1401 |
| 1402 // // sh writes only 1/2 of word. | 1402 // // sh writes only 1/2 of word. |
| 1403 __ lui(t1, 0x3333); | 1403 __ lui(t1, 0x3333); |
| 1404 __ ori(t1, t1, 0x3333); | 1404 __ ori(t1, t1, 0x3333); |
| 1405 __ sw(t1, MemOperand(a0, OFFSET_OF(T, r6))); | 1405 __ sw(t1, MemOperand(a0, offsetof(T, r6))); |
| 1406 __ lhu(t1, MemOperand(a0, OFFSET_OF(T, si))); | 1406 __ lhu(t1, MemOperand(a0, offsetof(T, si))); |
| 1407 __ sh(t1, MemOperand(a0, OFFSET_OF(T, r6))); | 1407 __ sh(t1, MemOperand(a0, offsetof(T, r6))); |
| 1408 | 1408 |
| 1409 __ jr(ra); | 1409 __ jr(ra); |
| 1410 __ nop(); | 1410 __ nop(); |
| 1411 | 1411 |
| 1412 CodeDesc desc; | 1412 CodeDesc desc; |
| 1413 assm.GetCode(&desc); | 1413 assm.GetCode(&desc); |
| 1414 Handle<Code> code = isolate->factory()->NewCode( | 1414 Handle<Code> code = isolate->factory()->NewCode( |
| 1415 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 1415 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 1416 F3 f = FUNCTION_CAST<F3>(code->entry()); | 1416 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 1417 t.ui = 0x44332211; | 1417 t.ui = 0x44332211; |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1459 float i; | 1459 float i; |
| 1460 float j; | 1460 float j; |
| 1461 float k; | 1461 float k; |
| 1462 float l; | 1462 float l; |
| 1463 } Test; | 1463 } Test; |
| 1464 | 1464 |
| 1465 Test test; | 1465 Test test; |
| 1466 // Integer part of test. | 1466 // Integer part of test. |
| 1467 __ addiu(t1, zero_reg, 1); // t1 = 1 | 1467 __ addiu(t1, zero_reg, 1); // t1 = 1 |
| 1468 __ seleqz(t3, t1, zero_reg); // t3 = 1 | 1468 __ seleqz(t3, t1, zero_reg); // t3 = 1 |
| 1469 __ sw(t3, MemOperand(a0, OFFSET_OF(Test, a))); // a = 1 | 1469 __ sw(t3, MemOperand(a0, offsetof(Test, a))); // a = 1 |
| 1470 __ seleqz(t2, t1, t1); // t2 = 0 | 1470 __ seleqz(t2, t1, t1); // t2 = 0 |
| 1471 __ sw(t2, MemOperand(a0, OFFSET_OF(Test, b))); // b = 0 | 1471 __ sw(t2, MemOperand(a0, offsetof(Test, b))); // b = 0 |
| 1472 __ selnez(t3, t1, zero_reg); // t3 = 1; | 1472 __ selnez(t3, t1, zero_reg); // t3 = 1; |
| 1473 __ sw(t3, MemOperand(a0, OFFSET_OF(Test, c))); // c = 0 | 1473 __ sw(t3, MemOperand(a0, offsetof(Test, c))); // c = 0 |
| 1474 __ selnez(t3, t1, t1); // t3 = 1 | 1474 __ selnez(t3, t1, t1); // t3 = 1 |
| 1475 __ sw(t3, MemOperand(a0, OFFSET_OF(Test, d))); // d = 1 | 1475 __ sw(t3, MemOperand(a0, offsetof(Test, d))); // d = 1 |
| 1476 // Floating point part of test. | 1476 // Floating point part of test. |
| 1477 __ ldc1(f0, MemOperand(a0, OFFSET_OF(Test, e)) ); // src | 1477 __ ldc1(f0, MemOperand(a0, offsetof(Test, e)) ); // src |
| 1478 __ ldc1(f2, MemOperand(a0, OFFSET_OF(Test, f)) ); // test | 1478 __ ldc1(f2, MemOperand(a0, offsetof(Test, f)) ); // test |
| 1479 __ lwc1(f8, MemOperand(a0, OFFSET_OF(Test, i)) ); // src | 1479 __ lwc1(f8, MemOperand(a0, offsetof(Test, i)) ); // src |
| 1480 __ lwc1(f10, MemOperand(a0, OFFSET_OF(Test, j)) ); // test | 1480 __ lwc1(f10, MemOperand(a0, offsetof(Test, j)) ); // test |
| 1481 __ seleqz_d(f4, f0, f2); | 1481 __ seleqz_d(f4, f0, f2); |
| 1482 __ selnez_d(f6, f0, f2); | 1482 __ selnez_d(f6, f0, f2); |
| 1483 __ seleqz_s(f12, f8, f10); | 1483 __ seleqz_s(f12, f8, f10); |
| 1484 __ selnez_s(f14, f8, f10); | 1484 __ selnez_s(f14, f8, f10); |
| 1485 __ sdc1(f4, MemOperand(a0, OFFSET_OF(Test, g)) ); // src | 1485 __ sdc1(f4, MemOperand(a0, offsetof(Test, g)) ); // src |
| 1486 __ sdc1(f6, MemOperand(a0, OFFSET_OF(Test, h)) ); // src | 1486 __ sdc1(f6, MemOperand(a0, offsetof(Test, h)) ); // src |
| 1487 __ swc1(f12, MemOperand(a0, OFFSET_OF(Test, k)) ); // src | 1487 __ swc1(f12, MemOperand(a0, offsetof(Test, k)) ); // src |
| 1488 __ swc1(f14, MemOperand(a0, OFFSET_OF(Test, l)) ); // src | 1488 __ swc1(f14, MemOperand(a0, offsetof(Test, l)) ); // src |
| 1489 __ jr(ra); | 1489 __ jr(ra); |
| 1490 __ nop(); | 1490 __ nop(); |
| 1491 CodeDesc desc; | 1491 CodeDesc desc; |
| 1492 assm.GetCode(&desc); | 1492 assm.GetCode(&desc); |
| 1493 Handle<Code> code = isolate->factory()->NewCode( | 1493 Handle<Code> code = isolate->factory()->NewCode( |
| 1494 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 1494 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 1495 F3 f = FUNCTION_CAST<F3>(code->entry()); | 1495 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 1496 | 1496 |
| 1497 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 1497 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); |
| 1498 | 1498 |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1567 double inputsa[tableLength] = {2.0, 3.0, dblNaN, 3.0, dblNaN}; | 1567 double inputsa[tableLength] = {2.0, 3.0, dblNaN, 3.0, dblNaN}; |
| 1568 double inputsb[tableLength] = {3.0, 2.0, 3.0, dblNaN, dblNaN}; | 1568 double inputsb[tableLength] = {3.0, 2.0, 3.0, dblNaN, dblNaN}; |
| 1569 double outputsdmin[tableLength] = {2.0, 2.0, 3.0, 3.0, dblNaN}; | 1569 double outputsdmin[tableLength] = {2.0, 2.0, 3.0, 3.0, dblNaN}; |
| 1570 double outputsdmax[tableLength] = {3.0, 3.0, 3.0, 3.0, dblNaN}; | 1570 double outputsdmax[tableLength] = {3.0, 3.0, 3.0, 3.0, dblNaN}; |
| 1571 | 1571 |
| 1572 float inputse[tableLength] = {2.0, 3.0, fltNaN, 3.0, fltNaN}; | 1572 float inputse[tableLength] = {2.0, 3.0, fltNaN, 3.0, fltNaN}; |
| 1573 float inputsf[tableLength] = {3.0, 2.0, 3.0, fltNaN, fltNaN}; | 1573 float inputsf[tableLength] = {3.0, 2.0, 3.0, fltNaN, fltNaN}; |
| 1574 float outputsfmin[tableLength] = {2.0, 2.0, 3.0, 3.0, fltNaN}; | 1574 float outputsfmin[tableLength] = {2.0, 2.0, 3.0, 3.0, fltNaN}; |
| 1575 float outputsfmax[tableLength] = {3.0, 3.0, 3.0, 3.0, fltNaN}; | 1575 float outputsfmax[tableLength] = {3.0, 3.0, 3.0, 3.0, fltNaN}; |
| 1576 | 1576 |
| 1577 __ ldc1(f4, MemOperand(a0, OFFSET_OF(TestFloat, a))); | 1577 __ ldc1(f4, MemOperand(a0, offsetof(TestFloat, a))); |
| 1578 __ ldc1(f8, MemOperand(a0, OFFSET_OF(TestFloat, b))); | 1578 __ ldc1(f8, MemOperand(a0, offsetof(TestFloat, b))); |
| 1579 __ lwc1(f2, MemOperand(a0, OFFSET_OF(TestFloat, e))); | 1579 __ lwc1(f2, MemOperand(a0, offsetof(TestFloat, e))); |
| 1580 __ lwc1(f6, MemOperand(a0, OFFSET_OF(TestFloat, f))); | 1580 __ lwc1(f6, MemOperand(a0, offsetof(TestFloat, f))); |
| 1581 __ min_d(f10, f4, f8); | 1581 __ min_d(f10, f4, f8); |
| 1582 __ max_d(f12, f4, f8); | 1582 __ max_d(f12, f4, f8); |
| 1583 __ min_s(f14, f2, f6); | 1583 __ min_s(f14, f2, f6); |
| 1584 __ max_s(f16, f2, f6); | 1584 __ max_s(f16, f2, f6); |
| 1585 __ sdc1(f10, MemOperand(a0, OFFSET_OF(TestFloat, c))); | 1585 __ sdc1(f10, MemOperand(a0, offsetof(TestFloat, c))); |
| 1586 __ sdc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, d))); | 1586 __ sdc1(f12, MemOperand(a0, offsetof(TestFloat, d))); |
| 1587 __ swc1(f14, MemOperand(a0, OFFSET_OF(TestFloat, g))); | 1587 __ swc1(f14, MemOperand(a0, offsetof(TestFloat, g))); |
| 1588 __ swc1(f16, MemOperand(a0, OFFSET_OF(TestFloat, h))); | 1588 __ swc1(f16, MemOperand(a0, offsetof(TestFloat, h))); |
| 1589 __ jr(ra); | 1589 __ jr(ra); |
| 1590 __ nop(); | 1590 __ nop(); |
| 1591 | 1591 |
| 1592 CodeDesc desc; | 1592 CodeDesc desc; |
| 1593 assm.GetCode(&desc); | 1593 assm.GetCode(&desc); |
| 1594 Handle<Code> code = isolate->factory()->NewCode( | 1594 Handle<Code> code = isolate->factory()->NewCode( |
| 1595 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 1595 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 1596 F3 f = FUNCTION_CAST<F3>(code->entry()); | 1596 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 1597 for (int i = 0; i < tableLength; i++) { | 1597 for (int i = 0; i < tableLength; i++) { |
| 1598 test.a = inputsa[i]; | 1598 test.a = inputsa[i]; |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1689 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, | 1689 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, |
| 1690 -3.0, -3.0, -3.0, -4.0, -4.0, -4.0, | 1690 -3.0, -3.0, -3.0, -4.0, -4.0, -4.0, |
| 1691 37778931862957161709568.0, 37778931862957161709569.0, | 1691 37778931862957161709568.0, 37778931862957161709569.0, |
| 1692 37778931862957161709580.0, 37778931862957161709581.0, | 1692 37778931862957161709580.0, 37778931862957161709581.0, |
| 1693 37778931862957161709582.0, 37778931862957161709583.0, | 1693 37778931862957161709582.0, 37778931862957161709583.0, |
| 1694 37778931862957161709584.0, 37778931862957161709585.0, | 1694 37778931862957161709584.0, 37778931862957161709585.0, |
| 1695 37778931862957161709586.0, 37778931862957161709587.0}; | 1695 37778931862957161709586.0, 37778931862957161709587.0}; |
| 1696 int fcsr_inputs[4] = | 1696 int fcsr_inputs[4] = |
| 1697 {kRoundToNearest, kRoundToZero, kRoundToPlusInf, kRoundToMinusInf}; | 1697 {kRoundToNearest, kRoundToZero, kRoundToPlusInf, kRoundToMinusInf}; |
| 1698 double* outputs[4] = {outputs_RN, outputs_RZ, outputs_RP, outputs_RM}; | 1698 double* outputs[4] = {outputs_RN, outputs_RZ, outputs_RP, outputs_RM}; |
| 1699 __ ldc1(f4, MemOperand(a0, OFFSET_OF(TestFloat, a)) ); | 1699 __ ldc1(f4, MemOperand(a0, offsetof(TestFloat, a)) ); |
| 1700 __ lw(t0, MemOperand(a0, OFFSET_OF(TestFloat, fcsr)) ); | 1700 __ lw(t0, MemOperand(a0, offsetof(TestFloat, fcsr)) ); |
| 1701 __ ctc1(t0, FCSR); | 1701 __ ctc1(t0, FCSR); |
| 1702 __ rint_d(f8, f4); | 1702 __ rint_d(f8, f4); |
| 1703 __ sdc1(f8, MemOperand(a0, OFFSET_OF(TestFloat, b)) ); | 1703 __ sdc1(f8, MemOperand(a0, offsetof(TestFloat, b)) ); |
| 1704 __ jr(ra); | 1704 __ jr(ra); |
| 1705 __ nop(); | 1705 __ nop(); |
| 1706 | 1706 |
| 1707 CodeDesc desc; | 1707 CodeDesc desc; |
| 1708 assm.GetCode(&desc); | 1708 assm.GetCode(&desc); |
| 1709 Handle<Code> code = isolate->factory()->NewCode( | 1709 Handle<Code> code = isolate->factory()->NewCode( |
| 1710 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 1710 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 1711 F3 f = FUNCTION_CAST<F3>(code->entry()); | 1711 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 1712 | 1712 |
| 1713 for (int j = 0; j < 4; j++) { | 1713 for (int j = 0; j < 4; j++) { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1732 typedef struct test { | 1732 typedef struct test { |
| 1733 double dd; | 1733 double dd; |
| 1734 double ds; | 1734 double ds; |
| 1735 double dt; | 1735 double dt; |
| 1736 float fd; | 1736 float fd; |
| 1737 float fs; | 1737 float fs; |
| 1738 float ft; | 1738 float ft; |
| 1739 } Test; | 1739 } Test; |
| 1740 | 1740 |
| 1741 Test test; | 1741 Test test; |
| 1742 __ ldc1(f0, MemOperand(a0, OFFSET_OF(Test, dd)) ); // test | 1742 __ ldc1(f0, MemOperand(a0, offsetof(Test, dd)) ); // test |
| 1743 __ ldc1(f2, MemOperand(a0, OFFSET_OF(Test, ds)) ); // src1 | 1743 __ ldc1(f2, MemOperand(a0, offsetof(Test, ds)) ); // src1 |
| 1744 __ ldc1(f4, MemOperand(a0, OFFSET_OF(Test, dt)) ); // src2 | 1744 __ ldc1(f4, MemOperand(a0, offsetof(Test, dt)) ); // src2 |
| 1745 __ lwc1(f6, MemOperand(a0, OFFSET_OF(Test, fd)) ); // test | 1745 __ lwc1(f6, MemOperand(a0, offsetof(Test, fd)) ); // test |
| 1746 __ lwc1(f8, MemOperand(a0, OFFSET_OF(Test, fs)) ); // src1 | 1746 __ lwc1(f8, MemOperand(a0, offsetof(Test, fs)) ); // src1 |
| 1747 __ lwc1(f10, MemOperand(a0, OFFSET_OF(Test, ft)) ); // src2 | 1747 __ lwc1(f10, MemOperand(a0, offsetof(Test, ft)) ); // src2 |
| 1748 __ sel_d(f0, f2, f4); | 1748 __ sel_d(f0, f2, f4); |
| 1749 __ sel_s(f6, f8, f10); | 1749 __ sel_s(f6, f8, f10); |
| 1750 __ sdc1(f0, MemOperand(a0, OFFSET_OF(Test, dd)) ); | 1750 __ sdc1(f0, MemOperand(a0, offsetof(Test, dd)) ); |
| 1751 __ swc1(f6, MemOperand(a0, OFFSET_OF(Test, fd)) ); | 1751 __ swc1(f6, MemOperand(a0, offsetof(Test, fd)) ); |
| 1752 __ jr(ra); | 1752 __ jr(ra); |
| 1753 __ nop(); | 1753 __ nop(); |
| 1754 CodeDesc desc; | 1754 CodeDesc desc; |
| 1755 assm.GetCode(&desc); | 1755 assm.GetCode(&desc); |
| 1756 Handle<Code> code = isolate->factory()->NewCode( | 1756 Handle<Code> code = isolate->factory()->NewCode( |
| 1757 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 1757 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 1758 F3 f = FUNCTION_CAST<F3>(code->entry()); | 1758 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 1759 | 1759 |
| 1760 const int test_size = 3; | 1760 const int test_size = 3; |
| 1761 const int input_size = 5; | 1761 const int input_size = 5; |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1866 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, | 1866 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, |
| 1867 -3.0, -3.0, -3.0, -4.0, -4.0, -4.0, | 1867 -3.0, -3.0, -3.0, -4.0, -4.0, -4.0, |
| 1868 37778931862957161709568.0, 37778931862957161709569.0, | 1868 37778931862957161709568.0, 37778931862957161709569.0, |
| 1869 37778931862957161709580.0, 37778931862957161709581.0, | 1869 37778931862957161709580.0, 37778931862957161709581.0, |
| 1870 37778931862957161709582.0, 37778931862957161709583.0, | 1870 37778931862957161709582.0, 37778931862957161709583.0, |
| 1871 37778931862957161709584.0, 37778931862957161709585.0, | 1871 37778931862957161709584.0, 37778931862957161709585.0, |
| 1872 37778931862957161709586.0, 37778931862957161709587.0}; | 1872 37778931862957161709586.0, 37778931862957161709587.0}; |
| 1873 int fcsr_inputs[4] = | 1873 int fcsr_inputs[4] = |
| 1874 {kRoundToNearest, kRoundToZero, kRoundToPlusInf, kRoundToMinusInf}; | 1874 {kRoundToNearest, kRoundToZero, kRoundToPlusInf, kRoundToMinusInf}; |
| 1875 float* outputs[4] = {outputs_RN, outputs_RZ, outputs_RP, outputs_RM}; | 1875 float* outputs[4] = {outputs_RN, outputs_RZ, outputs_RP, outputs_RM}; |
| 1876 __ lwc1(f4, MemOperand(a0, OFFSET_OF(TestFloat, a)) ); | 1876 __ lwc1(f4, MemOperand(a0, offsetof(TestFloat, a)) ); |
| 1877 __ lw(t0, MemOperand(a0, OFFSET_OF(TestFloat, fcsr)) ); | 1877 __ lw(t0, MemOperand(a0, offsetof(TestFloat, fcsr)) ); |
| 1878 __ cfc1(t1, FCSR); | 1878 __ cfc1(t1, FCSR); |
| 1879 __ ctc1(t0, FCSR); | 1879 __ ctc1(t0, FCSR); |
| 1880 __ rint_s(f8, f4); | 1880 __ rint_s(f8, f4); |
| 1881 __ swc1(f8, MemOperand(a0, OFFSET_OF(TestFloat, b)) ); | 1881 __ swc1(f8, MemOperand(a0, offsetof(TestFloat, b)) ); |
| 1882 __ ctc1(t1, FCSR); | 1882 __ ctc1(t1, FCSR); |
| 1883 __ jr(ra); | 1883 __ jr(ra); |
| 1884 __ nop(); | 1884 __ nop(); |
| 1885 | 1885 |
| 1886 CodeDesc desc; | 1886 CodeDesc desc; |
| 1887 assm.GetCode(&desc); | 1887 assm.GetCode(&desc); |
| 1888 Handle<Code> code = isolate->factory()->NewCode( | 1888 Handle<Code> code = isolate->factory()->NewCode( |
| 1889 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 1889 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 1890 F3 f = FUNCTION_CAST<F3>(code->entry()); | 1890 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 1891 | 1891 |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1963 9.8, -8.9, 9.8, | 1963 9.8, -8.9, 9.8, |
| 1964 -9.8, -8.9, -9.8 | 1964 -9.8, -8.9, -9.8 |
| 1965 }; | 1965 }; |
| 1966 float resf1[tableLength] = { | 1966 float resf1[tableLength] = { |
| 1967 5.3, 5.3, 6.1, | 1967 5.3, 5.3, 6.1, |
| 1968 -10.0, 9.8, 9.8, | 1968 -10.0, 9.8, 9.8, |
| 1969 -10.0, 9.8, 9.8, | 1969 -10.0, 9.8, 9.8, |
| 1970 -10.0, -11.2, -9.8 | 1970 -10.0, -11.2, -9.8 |
| 1971 }; | 1971 }; |
| 1972 | 1972 |
| 1973 __ ldc1(f2, MemOperand(a0, OFFSET_OF(TestFloat, a)) ); | 1973 __ ldc1(f2, MemOperand(a0, offsetof(TestFloat, a)) ); |
| 1974 __ ldc1(f4, MemOperand(a0, OFFSET_OF(TestFloat, b)) ); | 1974 __ ldc1(f4, MemOperand(a0, offsetof(TestFloat, b)) ); |
| 1975 __ lwc1(f8, MemOperand(a0, OFFSET_OF(TestFloat, c)) ); | 1975 __ lwc1(f8, MemOperand(a0, offsetof(TestFloat, c)) ); |
| 1976 __ lwc1(f10, MemOperand(a0, OFFSET_OF(TestFloat, d)) ); | 1976 __ lwc1(f10, MemOperand(a0, offsetof(TestFloat, d)) ); |
| 1977 __ mina_d(f6, f2, f4); | 1977 __ mina_d(f6, f2, f4); |
| 1978 __ mina_s(f12, f8, f10); | 1978 __ mina_s(f12, f8, f10); |
| 1979 __ maxa_d(f14, f2, f4); | 1979 __ maxa_d(f14, f2, f4); |
| 1980 __ maxa_s(f16, f8, f10); | 1980 __ maxa_s(f16, f8, f10); |
| 1981 __ swc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, resf)) ); | 1981 __ swc1(f12, MemOperand(a0, offsetof(TestFloat, resf)) ); |
| 1982 __ sdc1(f6, MemOperand(a0, OFFSET_OF(TestFloat, resd)) ); | 1982 __ sdc1(f6, MemOperand(a0, offsetof(TestFloat, resd)) ); |
| 1983 __ swc1(f16, MemOperand(a0, OFFSET_OF(TestFloat, resf1)) ); | 1983 __ swc1(f16, MemOperand(a0, offsetof(TestFloat, resf1)) ); |
| 1984 __ sdc1(f14, MemOperand(a0, OFFSET_OF(TestFloat, resd1)) ); | 1984 __ sdc1(f14, MemOperand(a0, offsetof(TestFloat, resd1)) ); |
| 1985 __ jr(ra); | 1985 __ jr(ra); |
| 1986 __ nop(); | 1986 __ nop(); |
| 1987 | 1987 |
| 1988 CodeDesc desc; | 1988 CodeDesc desc; |
| 1989 assm.GetCode(&desc); | 1989 assm.GetCode(&desc); |
| 1990 Handle<Code> code = isolate->factory()->NewCode( | 1990 Handle<Code> code = isolate->factory()->NewCode( |
| 1991 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 1991 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 1992 F3 f = FUNCTION_CAST<F3>(code->entry()); | 1992 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 1993 for (int i = 0; i < tableLength; i++) { | 1993 for (int i = 0; i < tableLength; i++) { |
| 1994 test.a = inputsa[i]; | 1994 test.a = inputsa[i]; |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2035 2147483648.0, | 2035 2147483648.0, |
| 2036 std::numeric_limits<float>::quiet_NaN(), | 2036 std::numeric_limits<float>::quiet_NaN(), |
| 2037 std::numeric_limits<float>::infinity() | 2037 std::numeric_limits<float>::infinity() |
| 2038 }; | 2038 }; |
| 2039 double outputs[tableLength] = { | 2039 double outputs[tableLength] = { |
| 2040 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, | 2040 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, |
| 2041 -2.0, -2.0, -2.0, -3.0, -3.0, -3.0, | 2041 -2.0, -2.0, -2.0, -3.0, -3.0, -3.0, |
| 2042 2147483648.0, dFPU64InvalidResult, | 2042 2147483648.0, dFPU64InvalidResult, |
| 2043 dFPU64InvalidResult}; | 2043 dFPU64InvalidResult}; |
| 2044 | 2044 |
| 2045 __ ldc1(f4, MemOperand(a0, OFFSET_OF(Test, a)) ); | 2045 __ ldc1(f4, MemOperand(a0, offsetof(Test, a)) ); |
| 2046 __ lwc1(f6, MemOperand(a0, OFFSET_OF(Test, b)) ); | 2046 __ lwc1(f6, MemOperand(a0, offsetof(Test, b)) ); |
| 2047 __ trunc_l_d(f8, f4); | 2047 __ trunc_l_d(f8, f4); |
| 2048 __ trunc_l_s(f10, f6); | 2048 __ trunc_l_s(f10, f6); |
| 2049 __ sdc1(f8, MemOperand(a0, OFFSET_OF(Test, c)) ); | 2049 __ sdc1(f8, MemOperand(a0, offsetof(Test, c)) ); |
| 2050 __ sdc1(f10, MemOperand(a0, OFFSET_OF(Test, d)) ); | 2050 __ sdc1(f10, MemOperand(a0, offsetof(Test, d)) ); |
| 2051 __ jr(ra); | 2051 __ jr(ra); |
| 2052 __ nop(); | 2052 __ nop(); |
| 2053 Test test; | 2053 Test test; |
| 2054 CodeDesc desc; | 2054 CodeDesc desc; |
| 2055 assm.GetCode(&desc); | 2055 assm.GetCode(&desc); |
| 2056 Handle<Code> code = isolate->factory()->NewCode( | 2056 Handle<Code> code = isolate->factory()->NewCode( |
| 2057 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2057 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2058 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2058 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2059 for (int i = 0; i < tableLength; i++) { | 2059 for (int i = 0; i < tableLength; i++) { |
| 2060 test.a = inputs_D[i]; | 2060 test.a = inputs_D[i]; |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2097 4.8, 4.8, -4.8, -0.29 | 2097 4.8, 4.8, -4.8, -0.29 |
| 2098 }; | 2098 }; |
| 2099 | 2099 |
| 2100 float outputs_S[tableLength] = { | 2100 float outputs_S[tableLength] = { |
| 2101 4.8, 4.8, -4.8, -0.29 | 2101 4.8, 4.8, -4.8, -0.29 |
| 2102 }; | 2102 }; |
| 2103 double outputs_D[tableLength] = { | 2103 double outputs_D[tableLength] = { |
| 2104 5.3, -5.3, 5.3, -2.9 | 2104 5.3, -5.3, 5.3, -2.9 |
| 2105 }; | 2105 }; |
| 2106 | 2106 |
| 2107 __ ldc1(f2, MemOperand(a0, OFFSET_OF(TestFloat, a)) ); | 2107 __ ldc1(f2, MemOperand(a0, offsetof(TestFloat, a)) ); |
| 2108 __ lwc1(f6, MemOperand(a0, OFFSET_OF(TestFloat, c)) ); | 2108 __ lwc1(f6, MemOperand(a0, offsetof(TestFloat, c)) ); |
| 2109 __ lw(t0, MemOperand(a0, OFFSET_OF(TestFloat, rt)) ); | 2109 __ lw(t0, MemOperand(a0, offsetof(TestFloat, rt)) ); |
| 2110 __ li(t1, 0x0); | 2110 __ li(t1, 0x0); |
| 2111 __ mtc1(t1, f12); | 2111 __ mtc1(t1, f12); |
| 2112 __ mtc1(t1, f10); | 2112 __ mtc1(t1, f10); |
| 2113 __ mtc1(t1, f16); | 2113 __ mtc1(t1, f16); |
| 2114 __ mtc1(t1, f14); | 2114 __ mtc1(t1, f14); |
| 2115 __ sdc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, bold)) ); | 2115 __ sdc1(f12, MemOperand(a0, offsetof(TestFloat, bold)) ); |
| 2116 __ swc1(f10, MemOperand(a0, OFFSET_OF(TestFloat, dold)) ); | 2116 __ swc1(f10, MemOperand(a0, offsetof(TestFloat, dold)) ); |
| 2117 __ sdc1(f16, MemOperand(a0, OFFSET_OF(TestFloat, bold1)) ); | 2117 __ sdc1(f16, MemOperand(a0, offsetof(TestFloat, bold1)) ); |
| 2118 __ swc1(f14, MemOperand(a0, OFFSET_OF(TestFloat, dold1)) ); | 2118 __ swc1(f14, MemOperand(a0, offsetof(TestFloat, dold1)) ); |
| 2119 __ movz_s(f10, f6, t0); | 2119 __ movz_s(f10, f6, t0); |
| 2120 __ movz_d(f12, f2, t0); | 2120 __ movz_d(f12, f2, t0); |
| 2121 __ movn_s(f14, f6, t0); | 2121 __ movn_s(f14, f6, t0); |
| 2122 __ movn_d(f16, f2, t0); | 2122 __ movn_d(f16, f2, t0); |
| 2123 __ swc1(f10, MemOperand(a0, OFFSET_OF(TestFloat, d)) ); | 2123 __ swc1(f10, MemOperand(a0, offsetof(TestFloat, d)) ); |
| 2124 __ sdc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, b)) ); | 2124 __ sdc1(f12, MemOperand(a0, offsetof(TestFloat, b)) ); |
| 2125 __ swc1(f14, MemOperand(a0, OFFSET_OF(TestFloat, d1)) ); | 2125 __ swc1(f14, MemOperand(a0, offsetof(TestFloat, d1)) ); |
| 2126 __ sdc1(f16, MemOperand(a0, OFFSET_OF(TestFloat, b1)) ); | 2126 __ sdc1(f16, MemOperand(a0, offsetof(TestFloat, b1)) ); |
| 2127 __ jr(ra); | 2127 __ jr(ra); |
| 2128 __ nop(); | 2128 __ nop(); |
| 2129 | 2129 |
| 2130 CodeDesc desc; | 2130 CodeDesc desc; |
| 2131 assm.GetCode(&desc); | 2131 assm.GetCode(&desc); |
| 2132 Handle<Code> code = isolate->factory()->NewCode( | 2132 Handle<Code> code = isolate->factory()->NewCode( |
| 2133 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2133 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2134 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2134 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2135 for (int i = 0; i < tableLength; i++) { | 2135 for (int i = 0; i < tableLength; i++) { |
| 2136 test.a = inputs_D[i]; | 2136 test.a = inputs_D[i]; |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2196 | 2196 |
| 2197 for (int j = 0; j< 8; j++) { | 2197 for (int j = 0; j< 8; j++) { |
| 2198 test.cc = condition_flags[j]; | 2198 test.cc = condition_flags[j]; |
| 2199 if (test.cc == 0) { | 2199 if (test.cc == 0) { |
| 2200 test.fcsr = 1 << 23; | 2200 test.fcsr = 1 << 23; |
| 2201 } else { | 2201 } else { |
| 2202 test.fcsr = 1 << (24+condition_flags[j]); | 2202 test.fcsr = 1 << (24+condition_flags[j]); |
| 2203 } | 2203 } |
| 2204 HandleScope scope(isolate); | 2204 HandleScope scope(isolate); |
| 2205 MacroAssembler assm(isolate, NULL, 0); | 2205 MacroAssembler assm(isolate, NULL, 0); |
| 2206 __ ldc1(f2, MemOperand(a0, OFFSET_OF(TestFloat, srcd)) ); | 2206 __ ldc1(f2, MemOperand(a0, offsetof(TestFloat, srcd)) ); |
| 2207 __ lwc1(f4, MemOperand(a0, OFFSET_OF(TestFloat, srcf)) ); | 2207 __ lwc1(f4, MemOperand(a0, offsetof(TestFloat, srcf)) ); |
| 2208 __ lw(t1, MemOperand(a0, OFFSET_OF(TestFloat, fcsr)) ); | 2208 __ lw(t1, MemOperand(a0, offsetof(TestFloat, fcsr)) ); |
| 2209 __ cfc1(t0, FCSR); | 2209 __ cfc1(t0, FCSR); |
| 2210 __ ctc1(t1, FCSR); | 2210 __ ctc1(t1, FCSR); |
| 2211 __ li(t2, 0x0); | 2211 __ li(t2, 0x0); |
| 2212 __ mtc1(t2, f12); | 2212 __ mtc1(t2, f12); |
| 2213 __ mtc1(t2, f10); | 2213 __ mtc1(t2, f10); |
| 2214 __ sdc1(f10, MemOperand(a0, OFFSET_OF(TestFloat, dstdold)) ); | 2214 __ sdc1(f10, MemOperand(a0, offsetof(TestFloat, dstdold)) ); |
| 2215 __ swc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, dstfold)) ); | 2215 __ swc1(f12, MemOperand(a0, offsetof(TestFloat, dstfold)) ); |
| 2216 __ movt_s(f12, f4, test.cc); | 2216 __ movt_s(f12, f4, test.cc); |
| 2217 __ movt_d(f10, f2, test.cc); | 2217 __ movt_d(f10, f2, test.cc); |
| 2218 __ swc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, dstf)) ); | 2218 __ swc1(f12, MemOperand(a0, offsetof(TestFloat, dstf)) ); |
| 2219 __ sdc1(f10, MemOperand(a0, OFFSET_OF(TestFloat, dstd)) ); | 2219 __ sdc1(f10, MemOperand(a0, offsetof(TestFloat, dstd)) ); |
| 2220 __ sdc1(f10, MemOperand(a0, OFFSET_OF(TestFloat, dstdold1)) ); | 2220 __ sdc1(f10, MemOperand(a0, offsetof(TestFloat, dstdold1)) ); |
| 2221 __ swc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, dstfold1)) ); | 2221 __ swc1(f12, MemOperand(a0, offsetof(TestFloat, dstfold1)) ); |
| 2222 __ movf_s(f12, f4, test.cc); | 2222 __ movf_s(f12, f4, test.cc); |
| 2223 __ movf_d(f10, f2, test.cc); | 2223 __ movf_d(f10, f2, test.cc); |
| 2224 __ swc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, dstf1)) ); | 2224 __ swc1(f12, MemOperand(a0, offsetof(TestFloat, dstf1)) ); |
| 2225 __ sdc1(f10, MemOperand(a0, OFFSET_OF(TestFloat, dstd1)) ); | 2225 __ sdc1(f10, MemOperand(a0, offsetof(TestFloat, dstd1)) ); |
| 2226 __ ctc1(t0, FCSR); | 2226 __ ctc1(t0, FCSR); |
| 2227 __ jr(ra); | 2227 __ jr(ra); |
| 2228 __ nop(); | 2228 __ nop(); |
| 2229 | 2229 |
| 2230 CodeDesc desc; | 2230 CodeDesc desc; |
| 2231 assm.GetCode(&desc); | 2231 assm.GetCode(&desc); |
| 2232 Handle<Code> code = isolate->factory()->NewCode( | 2232 Handle<Code> code = isolate->factory()->NewCode( |
| 2233 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2233 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2234 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2234 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2235 | 2235 |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2296 double outputs_RM[tableLength] = { | 2296 double outputs_RM[tableLength] = { |
| 2297 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, | 2297 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, |
| 2298 -3.0, -3.0, -3.0, -4.0, -4.0, -4.0, | 2298 -3.0, -3.0, -3.0, -4.0, -4.0, -4.0, |
| 2299 2147483637.0, 2147483638.0, 2147483639.0, | 2299 2147483637.0, 2147483638.0, 2147483639.0, |
| 2300 2147483640.0, 2147483641.0, 2147483642.0, | 2300 2147483640.0, 2147483641.0, 2147483642.0, |
| 2301 2147483643.0, 2147483644.0, 2147483645.0, | 2301 2147483643.0, 2147483644.0, 2147483645.0, |
| 2302 2147483646.0, 2147483647.0, kFPUInvalidResult}; | 2302 2147483646.0, 2147483647.0, kFPUInvalidResult}; |
| 2303 int fcsr_inputs[4] = | 2303 int fcsr_inputs[4] = |
| 2304 {kRoundToNearest, kRoundToZero, kRoundToPlusInf, kRoundToMinusInf}; | 2304 {kRoundToNearest, kRoundToZero, kRoundToPlusInf, kRoundToMinusInf}; |
| 2305 double* outputs[4] = {outputs_RN, outputs_RZ, outputs_RP, outputs_RM}; | 2305 double* outputs[4] = {outputs_RN, outputs_RZ, outputs_RP, outputs_RM}; |
| 2306 __ ldc1(f4, MemOperand(a0, OFFSET_OF(Test, a)) ); | 2306 __ ldc1(f4, MemOperand(a0, offsetof(Test, a)) ); |
| 2307 __ lw(t0, MemOperand(a0, OFFSET_OF(Test, fcsr)) ); | 2307 __ lw(t0, MemOperand(a0, offsetof(Test, fcsr)) ); |
| 2308 __ cfc1(t1, FCSR); | 2308 __ cfc1(t1, FCSR); |
| 2309 __ ctc1(t0, FCSR); | 2309 __ ctc1(t0, FCSR); |
| 2310 __ cvt_w_d(f8, f4); | 2310 __ cvt_w_d(f8, f4); |
| 2311 __ swc1(f8, MemOperand(a0, OFFSET_OF(Test, b)) ); | 2311 __ swc1(f8, MemOperand(a0, offsetof(Test, b)) ); |
| 2312 __ ctc1(t1, FCSR); | 2312 __ ctc1(t1, FCSR); |
| 2313 __ jr(ra); | 2313 __ jr(ra); |
| 2314 __ nop(); | 2314 __ nop(); |
| 2315 Test test; | 2315 Test test; |
| 2316 CodeDesc desc; | 2316 CodeDesc desc; |
| 2317 assm.GetCode(&desc); | 2317 assm.GetCode(&desc); |
| 2318 Handle<Code> code = isolate->factory()->NewCode( | 2318 Handle<Code> code = isolate->factory()->NewCode( |
| 2319 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2319 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2320 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2320 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2321 for (int j = 0; j < 4; j++) { | 2321 for (int j = 0; j < 4; j++) { |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2355 2147483648.0, | 2355 2147483648.0, |
| 2356 std::numeric_limits<float>::quiet_NaN(), | 2356 std::numeric_limits<float>::quiet_NaN(), |
| 2357 std::numeric_limits<float>::infinity() | 2357 std::numeric_limits<float>::infinity() |
| 2358 }; | 2358 }; |
| 2359 double outputs[tableLength] = { | 2359 double outputs[tableLength] = { |
| 2360 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, | 2360 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, |
| 2361 -2.0, -2.0, -2.0, -3.0, -3.0, -3.0, | 2361 -2.0, -2.0, -2.0, -3.0, -3.0, -3.0, |
| 2362 kFPUInvalidResult, kFPUInvalidResult, | 2362 kFPUInvalidResult, kFPUInvalidResult, |
| 2363 kFPUInvalidResult}; | 2363 kFPUInvalidResult}; |
| 2364 | 2364 |
| 2365 __ ldc1(f4, MemOperand(a0, OFFSET_OF(Test, a)) ); | 2365 __ ldc1(f4, MemOperand(a0, offsetof(Test, a)) ); |
| 2366 __ lwc1(f6, MemOperand(a0, OFFSET_OF(Test, b)) ); | 2366 __ lwc1(f6, MemOperand(a0, offsetof(Test, b)) ); |
| 2367 __ trunc_w_d(f8, f4); | 2367 __ trunc_w_d(f8, f4); |
| 2368 __ trunc_w_s(f10, f6); | 2368 __ trunc_w_s(f10, f6); |
| 2369 __ swc1(f8, MemOperand(a0, OFFSET_OF(Test, c)) ); | 2369 __ swc1(f8, MemOperand(a0, offsetof(Test, c)) ); |
| 2370 __ swc1(f10, MemOperand(a0, OFFSET_OF(Test, d)) ); | 2370 __ swc1(f10, MemOperand(a0, offsetof(Test, d)) ); |
| 2371 __ jr(ra); | 2371 __ jr(ra); |
| 2372 __ nop(); | 2372 __ nop(); |
| 2373 Test test; | 2373 Test test; |
| 2374 CodeDesc desc; | 2374 CodeDesc desc; |
| 2375 assm.GetCode(&desc); | 2375 assm.GetCode(&desc); |
| 2376 Handle<Code> code = isolate->factory()->NewCode( | 2376 Handle<Code> code = isolate->factory()->NewCode( |
| 2377 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2377 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2378 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2378 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2379 for (int i = 0; i < tableLength; i++) { | 2379 for (int i = 0; i < tableLength; i++) { |
| 2380 test.a = inputs_D[i]; | 2380 test.a = inputs_D[i]; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2412 2147483648.0, | 2412 2147483648.0, |
| 2413 std::numeric_limits<float>::quiet_NaN(), | 2413 std::numeric_limits<float>::quiet_NaN(), |
| 2414 std::numeric_limits<float>::infinity() | 2414 std::numeric_limits<float>::infinity() |
| 2415 }; | 2415 }; |
| 2416 double outputs[tableLength] = { | 2416 double outputs[tableLength] = { |
| 2417 2.0, 3.0, 2.0, 3.0, 4.0, 4.0, | 2417 2.0, 3.0, 2.0, 3.0, 4.0, 4.0, |
| 2418 -2.0, -3.0, -2.0, -3.0, -4.0, -4.0, | 2418 -2.0, -3.0, -2.0, -3.0, -4.0, -4.0, |
| 2419 kFPUInvalidResult, kFPUInvalidResult, | 2419 kFPUInvalidResult, kFPUInvalidResult, |
| 2420 kFPUInvalidResult}; | 2420 kFPUInvalidResult}; |
| 2421 | 2421 |
| 2422 __ ldc1(f4, MemOperand(a0, OFFSET_OF(Test, a)) ); | 2422 __ ldc1(f4, MemOperand(a0, offsetof(Test, a)) ); |
| 2423 __ lwc1(f6, MemOperand(a0, OFFSET_OF(Test, b)) ); | 2423 __ lwc1(f6, MemOperand(a0, offsetof(Test, b)) ); |
| 2424 __ round_w_d(f8, f4); | 2424 __ round_w_d(f8, f4); |
| 2425 __ round_w_s(f10, f6); | 2425 __ round_w_s(f10, f6); |
| 2426 __ swc1(f8, MemOperand(a0, OFFSET_OF(Test, c)) ); | 2426 __ swc1(f8, MemOperand(a0, offsetof(Test, c)) ); |
| 2427 __ swc1(f10, MemOperand(a0, OFFSET_OF(Test, d)) ); | 2427 __ swc1(f10, MemOperand(a0, offsetof(Test, d)) ); |
| 2428 __ jr(ra); | 2428 __ jr(ra); |
| 2429 __ nop(); | 2429 __ nop(); |
| 2430 Test test; | 2430 Test test; |
| 2431 CodeDesc desc; | 2431 CodeDesc desc; |
| 2432 assm.GetCode(&desc); | 2432 assm.GetCode(&desc); |
| 2433 Handle<Code> code = isolate->factory()->NewCode( | 2433 Handle<Code> code = isolate->factory()->NewCode( |
| 2434 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2434 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2435 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2435 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2436 for (int i = 0; i < tableLength; i++) { | 2436 for (int i = 0; i < tableLength; i++) { |
| 2437 test.a = inputs_D[i]; | 2437 test.a = inputs_D[i]; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2469 2147483648.0, | 2469 2147483648.0, |
| 2470 std::numeric_limits<float>::quiet_NaN(), | 2470 std::numeric_limits<float>::quiet_NaN(), |
| 2471 std::numeric_limits<float>::infinity() | 2471 std::numeric_limits<float>::infinity() |
| 2472 }; | 2472 }; |
| 2473 double outputs[tableLength] = { | 2473 double outputs[tableLength] = { |
| 2474 2.0, 3.0, 2.0, 3.0, 4.0, 4.0, | 2474 2.0, 3.0, 2.0, 3.0, 4.0, 4.0, |
| 2475 -2.0, -3.0, -2.0, -3.0, -4.0, -4.0, | 2475 -2.0, -3.0, -2.0, -3.0, -4.0, -4.0, |
| 2476 2147483648.0, dFPU64InvalidResult, | 2476 2147483648.0, dFPU64InvalidResult, |
| 2477 dFPU64InvalidResult}; | 2477 dFPU64InvalidResult}; |
| 2478 | 2478 |
| 2479 __ ldc1(f4, MemOperand(a0, OFFSET_OF(Test, a)) ); | 2479 __ ldc1(f4, MemOperand(a0, offsetof(Test, a)) ); |
| 2480 __ lwc1(f6, MemOperand(a0, OFFSET_OF(Test, b)) ); | 2480 __ lwc1(f6, MemOperand(a0, offsetof(Test, b)) ); |
| 2481 __ round_l_d(f8, f4); | 2481 __ round_l_d(f8, f4); |
| 2482 __ round_l_s(f10, f6); | 2482 __ round_l_s(f10, f6); |
| 2483 __ sdc1(f8, MemOperand(a0, OFFSET_OF(Test, c)) ); | 2483 __ sdc1(f8, MemOperand(a0, offsetof(Test, c)) ); |
| 2484 __ sdc1(f10, MemOperand(a0, OFFSET_OF(Test, d)) ); | 2484 __ sdc1(f10, MemOperand(a0, offsetof(Test, d)) ); |
| 2485 __ jr(ra); | 2485 __ jr(ra); |
| 2486 __ nop(); | 2486 __ nop(); |
| 2487 Test test; | 2487 Test test; |
| 2488 CodeDesc desc; | 2488 CodeDesc desc; |
| 2489 assm.GetCode(&desc); | 2489 assm.GetCode(&desc); |
| 2490 Handle<Code> code = isolate->factory()->NewCode( | 2490 Handle<Code> code = isolate->factory()->NewCode( |
| 2491 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2491 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2492 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2492 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2493 for (int i = 0; i < tableLength; i++) { | 2493 for (int i = 0; i < tableLength; i++) { |
| 2494 test.a = inputs_D[i]; | 2494 test.a = inputs_D[i]; |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2535 5.3, 4.8, 2.9, -5.3, -4.8, -2.9 | 2535 5.3, 4.8, 2.9, -5.3, -4.8, -2.9 |
| 2536 }; | 2536 }; |
| 2537 float inputft_S[tableLength] = { | 2537 float inputft_S[tableLength] = { |
| 2538 4.8, 5.3, 2.9, 4.8, 5.3, 2.9, | 2538 4.8, 5.3, 2.9, 4.8, 5.3, 2.9, |
| 2539 -4.8, -5.3, -2.9, -4.8, -5.3, -2.9 | 2539 -4.8, -5.3, -2.9, -4.8, -5.3, -2.9 |
| 2540 }; | 2540 }; |
| 2541 float outputs_S[tableLength] = { | 2541 float outputs_S[tableLength] = { |
| 2542 0.5, -0.5, 0.0, -10.1, -10.1, -5.8, | 2542 0.5, -0.5, 0.0, -10.1, -10.1, -5.8, |
| 2543 10.1, 10.1, 5.8, -0.5, 0.5, 0.0 | 2543 10.1, 10.1, 5.8, -0.5, 0.5, 0.0 |
| 2544 }; | 2544 }; |
| 2545 __ lwc1(f2, MemOperand(a0, OFFSET_OF(TestFloat, a)) ); | 2545 __ lwc1(f2, MemOperand(a0, offsetof(TestFloat, a)) ); |
| 2546 __ lwc1(f4, MemOperand(a0, OFFSET_OF(TestFloat, b)) ); | 2546 __ lwc1(f4, MemOperand(a0, offsetof(TestFloat, b)) ); |
| 2547 __ ldc1(f8, MemOperand(a0, OFFSET_OF(TestFloat, c)) ); | 2547 __ ldc1(f8, MemOperand(a0, offsetof(TestFloat, c)) ); |
| 2548 __ ldc1(f10, MemOperand(a0, OFFSET_OF(TestFloat, d)) ); | 2548 __ ldc1(f10, MemOperand(a0, offsetof(TestFloat, d)) ); |
| 2549 __ sub_s(f6, f2, f4); | 2549 __ sub_s(f6, f2, f4); |
| 2550 __ sub_d(f12, f8, f10); | 2550 __ sub_d(f12, f8, f10); |
| 2551 __ swc1(f6, MemOperand(a0, OFFSET_OF(TestFloat, resultS)) ); | 2551 __ swc1(f6, MemOperand(a0, offsetof(TestFloat, resultS)) ); |
| 2552 __ sdc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, resultD)) ); | 2552 __ sdc1(f12, MemOperand(a0, offsetof(TestFloat, resultD)) ); |
| 2553 __ jr(ra); | 2553 __ jr(ra); |
| 2554 __ nop(); | 2554 __ nop(); |
| 2555 | 2555 |
| 2556 CodeDesc desc; | 2556 CodeDesc desc; |
| 2557 assm.GetCode(&desc); | 2557 assm.GetCode(&desc); |
| 2558 Handle<Code> code = isolate->factory()->NewCode( | 2558 Handle<Code> code = isolate->factory()->NewCode( |
| 2559 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2559 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2560 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2560 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2561 for (int i = 0; i < tableLength; i++) { | 2561 for (int i = 0; i < tableLength; i++) { |
| 2562 test.a = inputfs_S[i]; | 2562 test.a = inputfs_S[i]; |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2602 }; | 2602 }; |
| 2603 float inputs_S[tableLength] = { | 2603 float inputs_S[tableLength] = { |
| 2604 0.0, 4.0, 2.0, 4e-28 | 2604 0.0, 4.0, 2.0, 4e-28 |
| 2605 }; | 2605 }; |
| 2606 | 2606 |
| 2607 float outputs_S[tableLength] = { | 2607 float outputs_S[tableLength] = { |
| 2608 0.0, 2.0, sqrt2_s, 2e-14 | 2608 0.0, 2.0, sqrt2_s, 2e-14 |
| 2609 }; | 2609 }; |
| 2610 | 2610 |
| 2611 | 2611 |
| 2612 __ lwc1(f2, MemOperand(a0, OFFSET_OF(TestFloat, a)) ); | 2612 __ lwc1(f2, MemOperand(a0, offsetof(TestFloat, a)) ); |
| 2613 __ ldc1(f8, MemOperand(a0, OFFSET_OF(TestFloat, c)) ); | 2613 __ ldc1(f8, MemOperand(a0, offsetof(TestFloat, c)) ); |
| 2614 __ sqrt_s(f6, f2); | 2614 __ sqrt_s(f6, f2); |
| 2615 __ sqrt_d(f12, f8); | 2615 __ sqrt_d(f12, f8); |
| 2616 __ rsqrt_d(f14, f8); | 2616 __ rsqrt_d(f14, f8); |
| 2617 __ rsqrt_s(f16, f2); | 2617 __ rsqrt_s(f16, f2); |
| 2618 __ recip_d(f18, f8); | 2618 __ recip_d(f18, f8); |
| 2619 __ recip_s(f20, f2); | 2619 __ recip_s(f20, f2); |
| 2620 __ swc1(f6, MemOperand(a0, OFFSET_OF(TestFloat, resultS)) ); | 2620 __ swc1(f6, MemOperand(a0, offsetof(TestFloat, resultS)) ); |
| 2621 __ sdc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, resultD)) ); | 2621 __ sdc1(f12, MemOperand(a0, offsetof(TestFloat, resultD)) ); |
| 2622 __ swc1(f16, MemOperand(a0, OFFSET_OF(TestFloat, resultS1)) ); | 2622 __ swc1(f16, MemOperand(a0, offsetof(TestFloat, resultS1)) ); |
| 2623 __ sdc1(f14, MemOperand(a0, OFFSET_OF(TestFloat, resultD1)) ); | 2623 __ sdc1(f14, MemOperand(a0, offsetof(TestFloat, resultD1)) ); |
| 2624 __ swc1(f20, MemOperand(a0, OFFSET_OF(TestFloat, resultS2)) ); | 2624 __ swc1(f20, MemOperand(a0, offsetof(TestFloat, resultS2)) ); |
| 2625 __ sdc1(f18, MemOperand(a0, OFFSET_OF(TestFloat, resultD2)) ); | 2625 __ sdc1(f18, MemOperand(a0, offsetof(TestFloat, resultD2)) ); |
| 2626 __ jr(ra); | 2626 __ jr(ra); |
| 2627 __ nop(); | 2627 __ nop(); |
| 2628 | 2628 |
| 2629 CodeDesc desc; | 2629 CodeDesc desc; |
| 2630 assm.GetCode(&desc); | 2630 assm.GetCode(&desc); |
| 2631 Handle<Code> code = isolate->factory()->NewCode( | 2631 Handle<Code> code = isolate->factory()->NewCode( |
| 2632 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2632 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2633 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2633 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2634 | 2634 |
| 2635 for (int i = 0; i < tableLength; i++) { | 2635 for (int i = 0; i < tableLength; i++) { |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2688 double outputs_D[tableLength] = { | 2688 double outputs_D[tableLength] = { |
| 2689 -4.0, 2.0 | 2689 -4.0, 2.0 |
| 2690 }; | 2690 }; |
| 2691 float inputs_S[tableLength] = { | 2691 float inputs_S[tableLength] = { |
| 2692 4.0, -2.0 | 2692 4.0, -2.0 |
| 2693 }; | 2693 }; |
| 2694 | 2694 |
| 2695 float outputs_S[tableLength] = { | 2695 float outputs_S[tableLength] = { |
| 2696 -4.0, 2.0 | 2696 -4.0, 2.0 |
| 2697 }; | 2697 }; |
| 2698 __ lwc1(f2, MemOperand(a0, OFFSET_OF(TestFloat, a)) ); | 2698 __ lwc1(f2, MemOperand(a0, offsetof(TestFloat, a)) ); |
| 2699 __ ldc1(f8, MemOperand(a0, OFFSET_OF(TestFloat, c)) ); | 2699 __ ldc1(f8, MemOperand(a0, offsetof(TestFloat, c)) ); |
| 2700 __ neg_s(f6, f2); | 2700 __ neg_s(f6, f2); |
| 2701 __ neg_d(f12, f8); | 2701 __ neg_d(f12, f8); |
| 2702 __ swc1(f6, MemOperand(a0, OFFSET_OF(TestFloat, resultS)) ); | 2702 __ swc1(f6, MemOperand(a0, offsetof(TestFloat, resultS)) ); |
| 2703 __ sdc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, resultD)) ); | 2703 __ sdc1(f12, MemOperand(a0, offsetof(TestFloat, resultD)) ); |
| 2704 __ jr(ra); | 2704 __ jr(ra); |
| 2705 __ nop(); | 2705 __ nop(); |
| 2706 | 2706 |
| 2707 CodeDesc desc; | 2707 CodeDesc desc; |
| 2708 assm.GetCode(&desc); | 2708 assm.GetCode(&desc); |
| 2709 Handle<Code> code = isolate->factory()->NewCode( | 2709 Handle<Code> code = isolate->factory()->NewCode( |
| 2710 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2710 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2711 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2711 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2712 for (int i = 0; i < tableLength; i++) { | 2712 for (int i = 0; i < tableLength; i++) { |
| 2713 test.a = inputs_S[i]; | 2713 test.a = inputs_S[i]; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 2744 4.8, 4.8, -4.8, -0.29 | 2744 4.8, 4.8, -4.8, -0.29 |
| 2745 }; | 2745 }; |
| 2746 | 2746 |
| 2747 float inputfs_S[tableLength] = { | 2747 float inputfs_S[tableLength] = { |
| 2748 5.3, -5.3, 5.3, -2.9 | 2748 5.3, -5.3, 5.3, -2.9 |
| 2749 }; | 2749 }; |
| 2750 float inputft_S[tableLength] = { | 2750 float inputft_S[tableLength] = { |
| 2751 4.8, 4.8, -4.8, -0.29 | 2751 4.8, 4.8, -4.8, -0.29 |
| 2752 }; | 2752 }; |
| 2753 | 2753 |
| 2754 __ lwc1(f2, MemOperand(a0, OFFSET_OF(TestFloat, a)) ); | 2754 __ lwc1(f2, MemOperand(a0, offsetof(TestFloat, a)) ); |
| 2755 __ lwc1(f4, MemOperand(a0, OFFSET_OF(TestFloat, b)) ); | 2755 __ lwc1(f4, MemOperand(a0, offsetof(TestFloat, b)) ); |
| 2756 __ ldc1(f6, MemOperand(a0, OFFSET_OF(TestFloat, c)) ); | 2756 __ ldc1(f6, MemOperand(a0, offsetof(TestFloat, c)) ); |
| 2757 __ ldc1(f8, MemOperand(a0, OFFSET_OF(TestFloat, d)) ); | 2757 __ ldc1(f8, MemOperand(a0, offsetof(TestFloat, d)) ); |
| 2758 __ mul_s(f10, f2, f4); | 2758 __ mul_s(f10, f2, f4); |
| 2759 __ mul_d(f12, f6, f8); | 2759 __ mul_d(f12, f6, f8); |
| 2760 __ swc1(f10, MemOperand(a0, OFFSET_OF(TestFloat, resultS)) ); | 2760 __ swc1(f10, MemOperand(a0, offsetof(TestFloat, resultS)) ); |
| 2761 __ sdc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, resultD)) ); | 2761 __ sdc1(f12, MemOperand(a0, offsetof(TestFloat, resultD)) ); |
| 2762 __ jr(ra); | 2762 __ jr(ra); |
| 2763 __ nop(); | 2763 __ nop(); |
| 2764 | 2764 |
| 2765 CodeDesc desc; | 2765 CodeDesc desc; |
| 2766 assm.GetCode(&desc); | 2766 assm.GetCode(&desc); |
| 2767 Handle<Code> code = isolate->factory()->NewCode( | 2767 Handle<Code> code = isolate->factory()->NewCode( |
| 2768 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2768 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2769 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2769 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2770 for (int i = 0; i < tableLength; i++) { | 2770 for (int i = 0; i < tableLength; i++) { |
| 2771 test.a = inputfs_S[i]; | 2771 test.a = inputfs_S[i]; |
| (...skipping 29 matching lines...) Expand all Loading... |
| 2801 4.8, 4.8, -4.8, -0.29 | 2801 4.8, 4.8, -4.8, -0.29 |
| 2802 }; | 2802 }; |
| 2803 | 2803 |
| 2804 float outputs_S[tableLength] = { | 2804 float outputs_S[tableLength] = { |
| 2805 4.8, 4.8, -4.8, -0.29 | 2805 4.8, 4.8, -4.8, -0.29 |
| 2806 }; | 2806 }; |
| 2807 double outputs_D[tableLength] = { | 2807 double outputs_D[tableLength] = { |
| 2808 5.3, -5.3, 5.3, -2.9 | 2808 5.3, -5.3, 5.3, -2.9 |
| 2809 }; | 2809 }; |
| 2810 | 2810 |
| 2811 __ ldc1(f2, MemOperand(a0, OFFSET_OF(TestFloat, a)) ); | 2811 __ ldc1(f2, MemOperand(a0, offsetof(TestFloat, a)) ); |
| 2812 __ lwc1(f6, MemOperand(a0, OFFSET_OF(TestFloat, c)) ); | 2812 __ lwc1(f6, MemOperand(a0, offsetof(TestFloat, c)) ); |
| 2813 __ mov_s(f18, f6); | 2813 __ mov_s(f18, f6); |
| 2814 __ mov_d(f20, f2); | 2814 __ mov_d(f20, f2); |
| 2815 __ swc1(f18, MemOperand(a0, OFFSET_OF(TestFloat, d)) ); | 2815 __ swc1(f18, MemOperand(a0, offsetof(TestFloat, d)) ); |
| 2816 __ sdc1(f20, MemOperand(a0, OFFSET_OF(TestFloat, b)) ); | 2816 __ sdc1(f20, MemOperand(a0, offsetof(TestFloat, b)) ); |
| 2817 __ jr(ra); | 2817 __ jr(ra); |
| 2818 __ nop(); | 2818 __ nop(); |
| 2819 | 2819 |
| 2820 CodeDesc desc; | 2820 CodeDesc desc; |
| 2821 assm.GetCode(&desc); | 2821 assm.GetCode(&desc); |
| 2822 Handle<Code> code = isolate->factory()->NewCode( | 2822 Handle<Code> code = isolate->factory()->NewCode( |
| 2823 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2823 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2824 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2824 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2825 for (int i = 0; i < tableLength; i++) { | 2825 for (int i = 0; i < tableLength; i++) { |
| 2826 test.a = inputs_D[i]; | 2826 test.a = inputs_D[i]; |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2859 2147483648.0, | 2859 2147483648.0, |
| 2860 std::numeric_limits<float>::quiet_NaN(), | 2860 std::numeric_limits<float>::quiet_NaN(), |
| 2861 std::numeric_limits<float>::infinity() | 2861 std::numeric_limits<float>::infinity() |
| 2862 }; | 2862 }; |
| 2863 double outputs[tableLength] = { | 2863 double outputs[tableLength] = { |
| 2864 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, | 2864 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, |
| 2865 -3.0, -3.0, -3.0, -4.0, -4.0, -4.0, | 2865 -3.0, -3.0, -3.0, -4.0, -4.0, -4.0, |
| 2866 kFPUInvalidResult, kFPUInvalidResult, | 2866 kFPUInvalidResult, kFPUInvalidResult, |
| 2867 kFPUInvalidResult}; | 2867 kFPUInvalidResult}; |
| 2868 | 2868 |
| 2869 __ ldc1(f4, MemOperand(a0, OFFSET_OF(Test, a)) ); | 2869 __ ldc1(f4, MemOperand(a0, offsetof(Test, a)) ); |
| 2870 __ lwc1(f6, MemOperand(a0, OFFSET_OF(Test, b)) ); | 2870 __ lwc1(f6, MemOperand(a0, offsetof(Test, b)) ); |
| 2871 __ floor_w_d(f8, f4); | 2871 __ floor_w_d(f8, f4); |
| 2872 __ floor_w_s(f10, f6); | 2872 __ floor_w_s(f10, f6); |
| 2873 __ swc1(f8, MemOperand(a0, OFFSET_OF(Test, c)) ); | 2873 __ swc1(f8, MemOperand(a0, offsetof(Test, c)) ); |
| 2874 __ swc1(f10, MemOperand(a0, OFFSET_OF(Test, d)) ); | 2874 __ swc1(f10, MemOperand(a0, offsetof(Test, d)) ); |
| 2875 __ jr(ra); | 2875 __ jr(ra); |
| 2876 __ nop(); | 2876 __ nop(); |
| 2877 Test test; | 2877 Test test; |
| 2878 CodeDesc desc; | 2878 CodeDesc desc; |
| 2879 assm.GetCode(&desc); | 2879 assm.GetCode(&desc); |
| 2880 Handle<Code> code = isolate->factory()->NewCode( | 2880 Handle<Code> code = isolate->factory()->NewCode( |
| 2881 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2881 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2882 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2882 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2883 for (int i = 0; i < tableLength; i++) { | 2883 for (int i = 0; i < tableLength; i++) { |
| 2884 test.a = inputs_D[i]; | 2884 test.a = inputs_D[i]; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2916 2147483648.0, | 2916 2147483648.0, |
| 2917 std::numeric_limits<float>::quiet_NaN(), | 2917 std::numeric_limits<float>::quiet_NaN(), |
| 2918 std::numeric_limits<float>::infinity() | 2918 std::numeric_limits<float>::infinity() |
| 2919 }; | 2919 }; |
| 2920 double outputs[tableLength] = { | 2920 double outputs[tableLength] = { |
| 2921 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, | 2921 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, |
| 2922 -3.0, -3.0, -3.0, -4.0, -4.0, -4.0, | 2922 -3.0, -3.0, -3.0, -4.0, -4.0, -4.0, |
| 2923 2147483648.0, dFPU64InvalidResult, | 2923 2147483648.0, dFPU64InvalidResult, |
| 2924 dFPU64InvalidResult}; | 2924 dFPU64InvalidResult}; |
| 2925 | 2925 |
| 2926 __ ldc1(f4, MemOperand(a0, OFFSET_OF(Test, a)) ); | 2926 __ ldc1(f4, MemOperand(a0, offsetof(Test, a)) ); |
| 2927 __ lwc1(f6, MemOperand(a0, OFFSET_OF(Test, b)) ); | 2927 __ lwc1(f6, MemOperand(a0, offsetof(Test, b)) ); |
| 2928 __ floor_l_d(f8, f4); | 2928 __ floor_l_d(f8, f4); |
| 2929 __ floor_l_s(f10, f6); | 2929 __ floor_l_s(f10, f6); |
| 2930 __ sdc1(f8, MemOperand(a0, OFFSET_OF(Test, c)) ); | 2930 __ sdc1(f8, MemOperand(a0, offsetof(Test, c)) ); |
| 2931 __ sdc1(f10, MemOperand(a0, OFFSET_OF(Test, d)) ); | 2931 __ sdc1(f10, MemOperand(a0, offsetof(Test, d)) ); |
| 2932 __ jr(ra); | 2932 __ jr(ra); |
| 2933 __ nop(); | 2933 __ nop(); |
| 2934 Test test; | 2934 Test test; |
| 2935 CodeDesc desc; | 2935 CodeDesc desc; |
| 2936 assm.GetCode(&desc); | 2936 assm.GetCode(&desc); |
| 2937 Handle<Code> code = isolate->factory()->NewCode( | 2937 Handle<Code> code = isolate->factory()->NewCode( |
| 2938 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2938 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2939 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2939 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2940 for (int i = 0; i < tableLength; i++) { | 2940 for (int i = 0; i < tableLength; i++) { |
| 2941 test.a = inputs_D[i]; | 2941 test.a = inputs_D[i]; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2973 2147483648.0, | 2973 2147483648.0, |
| 2974 std::numeric_limits<float>::quiet_NaN(), | 2974 std::numeric_limits<float>::quiet_NaN(), |
| 2975 std::numeric_limits<float>::infinity() | 2975 std::numeric_limits<float>::infinity() |
| 2976 }; | 2976 }; |
| 2977 double outputs[tableLength] = { | 2977 double outputs[tableLength] = { |
| 2978 3.0, 3.0, 3.0, 4.0, 4.0, 4.0, | 2978 3.0, 3.0, 3.0, 4.0, 4.0, 4.0, |
| 2979 -2.0, -2.0, -2.0, -3.0, -3.0, -3.0, | 2979 -2.0, -2.0, -2.0, -3.0, -3.0, -3.0, |
| 2980 kFPUInvalidResult, kFPUInvalidResult, | 2980 kFPUInvalidResult, kFPUInvalidResult, |
| 2981 kFPUInvalidResult}; | 2981 kFPUInvalidResult}; |
| 2982 | 2982 |
| 2983 __ ldc1(f4, MemOperand(a0, OFFSET_OF(Test, a)) ); | 2983 __ ldc1(f4, MemOperand(a0, offsetof(Test, a)) ); |
| 2984 __ lwc1(f6, MemOperand(a0, OFFSET_OF(Test, b)) ); | 2984 __ lwc1(f6, MemOperand(a0, offsetof(Test, b)) ); |
| 2985 __ ceil_w_d(f8, f4); | 2985 __ ceil_w_d(f8, f4); |
| 2986 __ ceil_w_s(f10, f6); | 2986 __ ceil_w_s(f10, f6); |
| 2987 __ swc1(f8, MemOperand(a0, OFFSET_OF(Test, c)) ); | 2987 __ swc1(f8, MemOperand(a0, offsetof(Test, c)) ); |
| 2988 __ swc1(f10, MemOperand(a0, OFFSET_OF(Test, d)) ); | 2988 __ swc1(f10, MemOperand(a0, offsetof(Test, d)) ); |
| 2989 __ jr(ra); | 2989 __ jr(ra); |
| 2990 __ nop(); | 2990 __ nop(); |
| 2991 Test test; | 2991 Test test; |
| 2992 CodeDesc desc; | 2992 CodeDesc desc; |
| 2993 assm.GetCode(&desc); | 2993 assm.GetCode(&desc); |
| 2994 Handle<Code> code = isolate->factory()->NewCode( | 2994 Handle<Code> code = isolate->factory()->NewCode( |
| 2995 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2995 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2996 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2996 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2997 for (int i = 0; i < tableLength; i++) { | 2997 for (int i = 0; i < tableLength; i++) { |
| 2998 test.a = inputs_D[i]; | 2998 test.a = inputs_D[i]; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3030 2147483648.0, | 3030 2147483648.0, |
| 3031 std::numeric_limits<float>::quiet_NaN(), | 3031 std::numeric_limits<float>::quiet_NaN(), |
| 3032 std::numeric_limits<float>::infinity() | 3032 std::numeric_limits<float>::infinity() |
| 3033 }; | 3033 }; |
| 3034 double outputs[tableLength] = { | 3034 double outputs[tableLength] = { |
| 3035 3.0, 3.0, 3.0, 4.0, 4.0, 4.0, | 3035 3.0, 3.0, 3.0, 4.0, 4.0, 4.0, |
| 3036 -2.0, -2.0, -2.0, -3.0, -3.0, -3.0, | 3036 -2.0, -2.0, -2.0, -3.0, -3.0, -3.0, |
| 3037 2147483648.0, dFPU64InvalidResult, | 3037 2147483648.0, dFPU64InvalidResult, |
| 3038 dFPU64InvalidResult}; | 3038 dFPU64InvalidResult}; |
| 3039 | 3039 |
| 3040 __ ldc1(f4, MemOperand(a0, OFFSET_OF(Test, a)) ); | 3040 __ ldc1(f4, MemOperand(a0, offsetof(Test, a)) ); |
| 3041 __ lwc1(f6, MemOperand(a0, OFFSET_OF(Test, b)) ); | 3041 __ lwc1(f6, MemOperand(a0, offsetof(Test, b)) ); |
| 3042 __ ceil_l_d(f8, f4); | 3042 __ ceil_l_d(f8, f4); |
| 3043 __ ceil_l_s(f10, f6); | 3043 __ ceil_l_s(f10, f6); |
| 3044 __ sdc1(f8, MemOperand(a0, OFFSET_OF(Test, c)) ); | 3044 __ sdc1(f8, MemOperand(a0, offsetof(Test, c)) ); |
| 3045 __ sdc1(f10, MemOperand(a0, OFFSET_OF(Test, d)) ); | 3045 __ sdc1(f10, MemOperand(a0, offsetof(Test, d)) ); |
| 3046 __ jr(ra); | 3046 __ jr(ra); |
| 3047 __ nop(); | 3047 __ nop(); |
| 3048 Test test; | 3048 Test test; |
| 3049 CodeDesc desc; | 3049 CodeDesc desc; |
| 3050 assm.GetCode(&desc); | 3050 assm.GetCode(&desc); |
| 3051 Handle<Code> code = isolate->factory()->NewCode( | 3051 Handle<Code> code = isolate->factory()->NewCode( |
| 3052 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 3052 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 3053 F3 f = FUNCTION_CAST<F3>(code->entry()); | 3053 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 3054 for (int i = 0; i < tableLength; i++) { | 3054 for (int i = 0; i < tableLength; i++) { |
| 3055 test.a = inputs_D[i]; | 3055 test.a = inputs_D[i]; |
| (...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3298 int64_t r2; | 3298 int64_t r2; |
| 3299 int64_t r3; | 3299 int64_t r3; |
| 3300 int64_t r4; | 3300 int64_t r4; |
| 3301 int64_t r5; | 3301 int64_t r5; |
| 3302 int64_t r6; | 3302 int64_t r6; |
| 3303 } T; | 3303 } T; |
| 3304 T t; | 3304 T t; |
| 3305 | 3305 |
| 3306 Assembler assm(isolate, NULL, 0); | 3306 Assembler assm(isolate, NULL, 0); |
| 3307 | 3307 |
| 3308 __ ld(a4, MemOperand(a0, OFFSET_OF(T, r1))); | 3308 __ ld(a4, MemOperand(a0, offsetof(T, r1))); |
| 3309 __ nop(); | 3309 __ nop(); |
| 3310 __ bitswap(a6, a4); | 3310 __ bitswap(a6, a4); |
| 3311 __ sd(a6, MemOperand(a0, OFFSET_OF(T, r1))); | 3311 __ sd(a6, MemOperand(a0, offsetof(T, r1))); |
| 3312 | 3312 |
| 3313 __ ld(a4, MemOperand(a0, OFFSET_OF(T, r2))); | 3313 __ ld(a4, MemOperand(a0, offsetof(T, r2))); |
| 3314 __ nop(); | 3314 __ nop(); |
| 3315 __ bitswap(a6, a4); | 3315 __ bitswap(a6, a4); |
| 3316 __ sd(a6, MemOperand(a0, OFFSET_OF(T, r2))); | 3316 __ sd(a6, MemOperand(a0, offsetof(T, r2))); |
| 3317 | 3317 |
| 3318 __ ld(a4, MemOperand(a0, OFFSET_OF(T, r3))); | 3318 __ ld(a4, MemOperand(a0, offsetof(T, r3))); |
| 3319 __ nop(); | 3319 __ nop(); |
| 3320 __ bitswap(a6, a4); | 3320 __ bitswap(a6, a4); |
| 3321 __ sd(a6, MemOperand(a0, OFFSET_OF(T, r3))); | 3321 __ sd(a6, MemOperand(a0, offsetof(T, r3))); |
| 3322 | 3322 |
| 3323 __ ld(a4, MemOperand(a0, OFFSET_OF(T, r4))); | 3323 __ ld(a4, MemOperand(a0, offsetof(T, r4))); |
| 3324 __ nop(); | 3324 __ nop(); |
| 3325 __ bitswap(a6, a4); | 3325 __ bitswap(a6, a4); |
| 3326 __ sd(a6, MemOperand(a0, OFFSET_OF(T, r4))); | 3326 __ sd(a6, MemOperand(a0, offsetof(T, r4))); |
| 3327 | 3327 |
| 3328 __ ld(a4, MemOperand(a0, OFFSET_OF(T, r5))); | 3328 __ ld(a4, MemOperand(a0, offsetof(T, r5))); |
| 3329 __ nop(); | 3329 __ nop(); |
| 3330 __ dbitswap(a6, a4); | 3330 __ dbitswap(a6, a4); |
| 3331 __ sd(a6, MemOperand(a0, OFFSET_OF(T, r5))); | 3331 __ sd(a6, MemOperand(a0, offsetof(T, r5))); |
| 3332 | 3332 |
| 3333 __ ld(a4, MemOperand(a0, OFFSET_OF(T, r6))); | 3333 __ ld(a4, MemOperand(a0, offsetof(T, r6))); |
| 3334 __ nop(); | 3334 __ nop(); |
| 3335 __ dbitswap(a6, a4); | 3335 __ dbitswap(a6, a4); |
| 3336 __ sd(a6, MemOperand(a0, OFFSET_OF(T, r6))); | 3336 __ sd(a6, MemOperand(a0, offsetof(T, r6))); |
| 3337 | 3337 |
| 3338 __ jr(ra); | 3338 __ jr(ra); |
| 3339 __ nop(); | 3339 __ nop(); |
| 3340 | 3340 |
| 3341 CodeDesc desc; | 3341 CodeDesc desc; |
| 3342 assm.GetCode(&desc); | 3342 assm.GetCode(&desc); |
| 3343 Handle<Code> code = isolate->factory()->NewCode( | 3343 Handle<Code> code = isolate->factory()->NewCode( |
| 3344 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 3344 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 3345 F3 f = FUNCTION_CAST<F3>(code->entry()); | 3345 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 3346 t.r1 = 0x00102100781A15C3; | 3346 t.r1 = 0x00102100781A15C3; |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3389 float fPosInf; | 3389 float fPosInf; |
| 3390 float fPosNorm; | 3390 float fPosNorm; |
| 3391 float fPosSubnorm; | 3391 float fPosSubnorm; |
| 3392 float fPosZero; } T; | 3392 float fPosZero; } T; |
| 3393 T t; | 3393 T t; |
| 3394 | 3394 |
| 3395 // Create a function that accepts &t, and loads, manipulates, and stores | 3395 // Create a function that accepts &t, and loads, manipulates, and stores |
| 3396 // the doubles t.a ... t.f. | 3396 // the doubles t.a ... t.f. |
| 3397 MacroAssembler assm(isolate, NULL, 0); | 3397 MacroAssembler assm(isolate, NULL, 0); |
| 3398 | 3398 |
| 3399 __ ldc1(f4, MemOperand(a0, OFFSET_OF(T, dSignalingNan))); | 3399 __ ldc1(f4, MemOperand(a0, offsetof(T, dSignalingNan))); |
| 3400 __ class_d(f6, f4); | 3400 __ class_d(f6, f4); |
| 3401 __ sdc1(f6, MemOperand(a0, OFFSET_OF(T, dSignalingNan))); | 3401 __ sdc1(f6, MemOperand(a0, offsetof(T, dSignalingNan))); |
| 3402 | 3402 |
| 3403 __ ldc1(f4, MemOperand(a0, OFFSET_OF(T, dQuietNan))); | 3403 __ ldc1(f4, MemOperand(a0, offsetof(T, dQuietNan))); |
| 3404 __ class_d(f6, f4); | 3404 __ class_d(f6, f4); |
| 3405 __ sdc1(f6, MemOperand(a0, OFFSET_OF(T, dQuietNan))); | 3405 __ sdc1(f6, MemOperand(a0, offsetof(T, dQuietNan))); |
| 3406 | 3406 |
| 3407 __ ldc1(f4, MemOperand(a0, OFFSET_OF(T, dNegInf))); | 3407 __ ldc1(f4, MemOperand(a0, offsetof(T, dNegInf))); |
| 3408 __ class_d(f6, f4); | 3408 __ class_d(f6, f4); |
| 3409 __ sdc1(f6, MemOperand(a0, OFFSET_OF(T, dNegInf))); | 3409 __ sdc1(f6, MemOperand(a0, offsetof(T, dNegInf))); |
| 3410 | 3410 |
| 3411 __ ldc1(f4, MemOperand(a0, OFFSET_OF(T, dNegNorm))); | 3411 __ ldc1(f4, MemOperand(a0, offsetof(T, dNegNorm))); |
| 3412 __ class_d(f6, f4); | 3412 __ class_d(f6, f4); |
| 3413 __ sdc1(f6, MemOperand(a0, OFFSET_OF(T, dNegNorm))); | 3413 __ sdc1(f6, MemOperand(a0, offsetof(T, dNegNorm))); |
| 3414 | 3414 |
| 3415 __ ldc1(f4, MemOperand(a0, OFFSET_OF(T, dNegSubnorm))); | 3415 __ ldc1(f4, MemOperand(a0, offsetof(T, dNegSubnorm))); |
| 3416 __ class_d(f6, f4); | 3416 __ class_d(f6, f4); |
| 3417 __ sdc1(f6, MemOperand(a0, OFFSET_OF(T, dNegSubnorm))); | 3417 __ sdc1(f6, MemOperand(a0, offsetof(T, dNegSubnorm))); |
| 3418 | 3418 |
| 3419 __ ldc1(f4, MemOperand(a0, OFFSET_OF(T, dNegZero))); | 3419 __ ldc1(f4, MemOperand(a0, offsetof(T, dNegZero))); |
| 3420 __ class_d(f6, f4); | 3420 __ class_d(f6, f4); |
| 3421 __ sdc1(f6, MemOperand(a0, OFFSET_OF(T, dNegZero))); | 3421 __ sdc1(f6, MemOperand(a0, offsetof(T, dNegZero))); |
| 3422 | 3422 |
| 3423 __ ldc1(f4, MemOperand(a0, OFFSET_OF(T, dPosInf))); | 3423 __ ldc1(f4, MemOperand(a0, offsetof(T, dPosInf))); |
| 3424 __ class_d(f6, f4); | 3424 __ class_d(f6, f4); |
| 3425 __ sdc1(f6, MemOperand(a0, OFFSET_OF(T, dPosInf))); | 3425 __ sdc1(f6, MemOperand(a0, offsetof(T, dPosInf))); |
| 3426 | 3426 |
| 3427 __ ldc1(f4, MemOperand(a0, OFFSET_OF(T, dPosNorm))); | 3427 __ ldc1(f4, MemOperand(a0, offsetof(T, dPosNorm))); |
| 3428 __ class_d(f6, f4); | 3428 __ class_d(f6, f4); |
| 3429 __ sdc1(f6, MemOperand(a0, OFFSET_OF(T, dPosNorm))); | 3429 __ sdc1(f6, MemOperand(a0, offsetof(T, dPosNorm))); |
| 3430 | 3430 |
| 3431 __ ldc1(f4, MemOperand(a0, OFFSET_OF(T, dPosSubnorm))); | 3431 __ ldc1(f4, MemOperand(a0, offsetof(T, dPosSubnorm))); |
| 3432 __ class_d(f6, f4); | 3432 __ class_d(f6, f4); |
| 3433 __ sdc1(f6, MemOperand(a0, OFFSET_OF(T, dPosSubnorm))); | 3433 __ sdc1(f6, MemOperand(a0, offsetof(T, dPosSubnorm))); |
| 3434 | 3434 |
| 3435 __ ldc1(f4, MemOperand(a0, OFFSET_OF(T, dPosZero))); | 3435 __ ldc1(f4, MemOperand(a0, offsetof(T, dPosZero))); |
| 3436 __ class_d(f6, f4); | 3436 __ class_d(f6, f4); |
| 3437 __ sdc1(f6, MemOperand(a0, OFFSET_OF(T, dPosZero))); | 3437 __ sdc1(f6, MemOperand(a0, offsetof(T, dPosZero))); |
| 3438 | 3438 |
| 3439 // Testing instruction CLASS.S | 3439 // Testing instruction CLASS.S |
| 3440 __ lwc1(f4, MemOperand(a0, OFFSET_OF(T, fSignalingNan))); | 3440 __ lwc1(f4, MemOperand(a0, offsetof(T, fSignalingNan))); |
| 3441 __ class_s(f6, f4); | 3441 __ class_s(f6, f4); |
| 3442 __ swc1(f6, MemOperand(a0, OFFSET_OF(T, fSignalingNan))); | 3442 __ swc1(f6, MemOperand(a0, offsetof(T, fSignalingNan))); |
| 3443 | 3443 |
| 3444 __ lwc1(f4, MemOperand(a0, OFFSET_OF(T, fQuietNan))); | 3444 __ lwc1(f4, MemOperand(a0, offsetof(T, fQuietNan))); |
| 3445 __ class_s(f6, f4); | 3445 __ class_s(f6, f4); |
| 3446 __ swc1(f6, MemOperand(a0, OFFSET_OF(T, fQuietNan))); | 3446 __ swc1(f6, MemOperand(a0, offsetof(T, fQuietNan))); |
| 3447 | 3447 |
| 3448 __ lwc1(f4, MemOperand(a0, OFFSET_OF(T, fNegInf))); | 3448 __ lwc1(f4, MemOperand(a0, offsetof(T, fNegInf))); |
| 3449 __ class_s(f6, f4); | 3449 __ class_s(f6, f4); |
| 3450 __ swc1(f6, MemOperand(a0, OFFSET_OF(T, fNegInf))); | 3450 __ swc1(f6, MemOperand(a0, offsetof(T, fNegInf))); |
| 3451 | 3451 |
| 3452 __ lwc1(f4, MemOperand(a0, OFFSET_OF(T, fNegNorm))); | 3452 __ lwc1(f4, MemOperand(a0, offsetof(T, fNegNorm))); |
| 3453 __ class_s(f6, f4); | 3453 __ class_s(f6, f4); |
| 3454 __ swc1(f6, MemOperand(a0, OFFSET_OF(T, fNegNorm))); | 3454 __ swc1(f6, MemOperand(a0, offsetof(T, fNegNorm))); |
| 3455 | 3455 |
| 3456 __ lwc1(f4, MemOperand(a0, OFFSET_OF(T, fNegSubnorm))); | 3456 __ lwc1(f4, MemOperand(a0, offsetof(T, fNegSubnorm))); |
| 3457 __ class_s(f6, f4); | 3457 __ class_s(f6, f4); |
| 3458 __ swc1(f6, MemOperand(a0, OFFSET_OF(T, fNegSubnorm))); | 3458 __ swc1(f6, MemOperand(a0, offsetof(T, fNegSubnorm))); |
| 3459 | 3459 |
| 3460 __ lwc1(f4, MemOperand(a0, OFFSET_OF(T, fNegZero))); | 3460 __ lwc1(f4, MemOperand(a0, offsetof(T, fNegZero))); |
| 3461 __ class_s(f6, f4); | 3461 __ class_s(f6, f4); |
| 3462 __ swc1(f6, MemOperand(a0, OFFSET_OF(T, fNegZero))); | 3462 __ swc1(f6, MemOperand(a0, offsetof(T, fNegZero))); |
| 3463 | 3463 |
| 3464 __ lwc1(f4, MemOperand(a0, OFFSET_OF(T, fPosInf))); | 3464 __ lwc1(f4, MemOperand(a0, offsetof(T, fPosInf))); |
| 3465 __ class_s(f6, f4); | 3465 __ class_s(f6, f4); |
| 3466 __ swc1(f6, MemOperand(a0, OFFSET_OF(T, fPosInf))); | 3466 __ swc1(f6, MemOperand(a0, offsetof(T, fPosInf))); |
| 3467 | 3467 |
| 3468 __ lwc1(f4, MemOperand(a0, OFFSET_OF(T, fPosNorm))); | 3468 __ lwc1(f4, MemOperand(a0, offsetof(T, fPosNorm))); |
| 3469 __ class_s(f6, f4); | 3469 __ class_s(f6, f4); |
| 3470 __ swc1(f6, MemOperand(a0, OFFSET_OF(T, fPosNorm))); | 3470 __ swc1(f6, MemOperand(a0, offsetof(T, fPosNorm))); |
| 3471 | 3471 |
| 3472 __ lwc1(f4, MemOperand(a0, OFFSET_OF(T, fPosSubnorm))); | 3472 __ lwc1(f4, MemOperand(a0, offsetof(T, fPosSubnorm))); |
| 3473 __ class_s(f6, f4); | 3473 __ class_s(f6, f4); |
| 3474 __ swc1(f6, MemOperand(a0, OFFSET_OF(T, fPosSubnorm))); | 3474 __ swc1(f6, MemOperand(a0, offsetof(T, fPosSubnorm))); |
| 3475 | 3475 |
| 3476 __ lwc1(f4, MemOperand(a0, OFFSET_OF(T, fPosZero))); | 3476 __ lwc1(f4, MemOperand(a0, offsetof(T, fPosZero))); |
| 3477 __ class_s(f6, f4); | 3477 __ class_s(f6, f4); |
| 3478 __ swc1(f6, MemOperand(a0, OFFSET_OF(T, fPosZero))); | 3478 __ swc1(f6, MemOperand(a0, offsetof(T, fPosZero))); |
| 3479 | 3479 |
| 3480 __ jr(ra); | 3480 __ jr(ra); |
| 3481 __ nop(); | 3481 __ nop(); |
| 3482 | 3482 |
| 3483 CodeDesc desc; | 3483 CodeDesc desc; |
| 3484 assm.GetCode(&desc); | 3484 assm.GetCode(&desc); |
| 3485 Handle<Code> code = isolate->factory()->NewCode( | 3485 Handle<Code> code = isolate->factory()->NewCode( |
| 3486 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 3486 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 3487 F3 f = FUNCTION_CAST<F3>(code->entry()); | 3487 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 3488 | 3488 |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3545 int64_t fir; | 3545 int64_t fir; |
| 3546 double a; | 3546 double a; |
| 3547 float b; | 3547 float b; |
| 3548 double fcsr; | 3548 double fcsr; |
| 3549 } TestFloat; | 3549 } TestFloat; |
| 3550 | 3550 |
| 3551 TestFloat test; | 3551 TestFloat test; |
| 3552 | 3552 |
| 3553 // Save FIR. | 3553 // Save FIR. |
| 3554 __ cfc1(a1, FCSR); | 3554 __ cfc1(a1, FCSR); |
| 3555 __ sd(a1, MemOperand(a0, OFFSET_OF(TestFloat, fcsr))); | 3555 __ sd(a1, MemOperand(a0, offsetof(TestFloat, fcsr))); |
| 3556 // Disable FPU exceptions. | 3556 // Disable FPU exceptions. |
| 3557 __ ctc1(zero_reg, FCSR); | 3557 __ ctc1(zero_reg, FCSR); |
| 3558 | 3558 |
| 3559 __ ldc1(f4, MemOperand(a0, OFFSET_OF(TestFloat, a))); | 3559 __ ldc1(f4, MemOperand(a0, offsetof(TestFloat, a))); |
| 3560 __ abs_d(f10, f4); | 3560 __ abs_d(f10, f4); |
| 3561 __ sdc1(f10, MemOperand(a0, OFFSET_OF(TestFloat, a))); | 3561 __ sdc1(f10, MemOperand(a0, offsetof(TestFloat, a))); |
| 3562 | 3562 |
| 3563 __ lwc1(f4, MemOperand(a0, OFFSET_OF(TestFloat, b))); | 3563 __ lwc1(f4, MemOperand(a0, offsetof(TestFloat, b))); |
| 3564 __ abs_s(f10, f4); | 3564 __ abs_s(f10, f4); |
| 3565 __ swc1(f10, MemOperand(a0, OFFSET_OF(TestFloat, b))); | 3565 __ swc1(f10, MemOperand(a0, offsetof(TestFloat, b))); |
| 3566 | 3566 |
| 3567 // Restore FCSR. | 3567 // Restore FCSR. |
| 3568 __ ctc1(a1, FCSR); | 3568 __ ctc1(a1, FCSR); |
| 3569 | 3569 |
| 3570 __ jr(ra); | 3570 __ jr(ra); |
| 3571 __ nop(); | 3571 __ nop(); |
| 3572 | 3572 |
| 3573 CodeDesc desc; | 3573 CodeDesc desc; |
| 3574 assm.GetCode(&desc); | 3574 assm.GetCode(&desc); |
| 3575 Handle<Code> code = isolate->factory()->NewCode( | 3575 Handle<Code> code = isolate->factory()->NewCode( |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3643 double a; | 3643 double a; |
| 3644 double b; | 3644 double b; |
| 3645 double c; | 3645 double c; |
| 3646 float fa; | 3646 float fa; |
| 3647 float fb; | 3647 float fb; |
| 3648 float fc; | 3648 float fc; |
| 3649 } TestFloat; | 3649 } TestFloat; |
| 3650 | 3650 |
| 3651 TestFloat test; | 3651 TestFloat test; |
| 3652 | 3652 |
| 3653 __ ldc1(f4, MemOperand(a0, OFFSET_OF(TestFloat, a))); | 3653 __ ldc1(f4, MemOperand(a0, offsetof(TestFloat, a))); |
| 3654 __ ldc1(f8, MemOperand(a0, OFFSET_OF(TestFloat, b))); | 3654 __ ldc1(f8, MemOperand(a0, offsetof(TestFloat, b))); |
| 3655 __ add_d(f10, f8, f4); | 3655 __ add_d(f10, f8, f4); |
| 3656 __ sdc1(f10, MemOperand(a0, OFFSET_OF(TestFloat, c))); | 3656 __ sdc1(f10, MemOperand(a0, offsetof(TestFloat, c))); |
| 3657 | 3657 |
| 3658 __ lwc1(f4, MemOperand(a0, OFFSET_OF(TestFloat, fa))); | 3658 __ lwc1(f4, MemOperand(a0, offsetof(TestFloat, fa))); |
| 3659 __ lwc1(f8, MemOperand(a0, OFFSET_OF(TestFloat, fb))); | 3659 __ lwc1(f8, MemOperand(a0, offsetof(TestFloat, fb))); |
| 3660 __ add_s(f10, f8, f4); | 3660 __ add_s(f10, f8, f4); |
| 3661 __ swc1(f10, MemOperand(a0, OFFSET_OF(TestFloat, fc))); | 3661 __ swc1(f10, MemOperand(a0, offsetof(TestFloat, fc))); |
| 3662 | 3662 |
| 3663 __ jr(ra); | 3663 __ jr(ra); |
| 3664 __ nop(); | 3664 __ nop(); |
| 3665 | 3665 |
| 3666 CodeDesc desc; | 3666 CodeDesc desc; |
| 3667 assm.GetCode(&desc); | 3667 assm.GetCode(&desc); |
| 3668 Handle<Code> code = isolate->factory()->NewCode( | 3668 Handle<Code> code = isolate->factory()->NewCode( |
| 3669 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 3669 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 3670 F3 f = FUNCTION_CAST<F3>(code->entry()); | 3670 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 3671 test.a = 2.0; | 3671 test.a = 2.0; |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3729 uint32_t fOlt; | 3729 uint32_t fOlt; |
| 3730 uint32_t fUlt; | 3730 uint32_t fUlt; |
| 3731 uint32_t fOle; | 3731 uint32_t fOle; |
| 3732 uint32_t fUle; | 3732 uint32_t fUle; |
| 3733 } TestFloat; | 3733 } TestFloat; |
| 3734 | 3734 |
| 3735 TestFloat test; | 3735 TestFloat test; |
| 3736 | 3736 |
| 3737 __ li(t1, 1); | 3737 __ li(t1, 1); |
| 3738 | 3738 |
| 3739 __ ldc1(f4, MemOperand(a0, OFFSET_OF(TestFloat, dOp1))); | 3739 __ ldc1(f4, MemOperand(a0, offsetof(TestFloat, dOp1))); |
| 3740 __ ldc1(f6, MemOperand(a0, OFFSET_OF(TestFloat, dOp2))); | 3740 __ ldc1(f6, MemOperand(a0, offsetof(TestFloat, dOp2))); |
| 3741 | 3741 |
| 3742 __ lwc1(f14, MemOperand(a0, OFFSET_OF(TestFloat, fOp1))); | 3742 __ lwc1(f14, MemOperand(a0, offsetof(TestFloat, fOp1))); |
| 3743 __ lwc1(f16, MemOperand(a0, OFFSET_OF(TestFloat, fOp2))); | 3743 __ lwc1(f16, MemOperand(a0, offsetof(TestFloat, fOp2))); |
| 3744 | 3744 |
| 3745 __ mov(t2, zero_reg); | 3745 __ mov(t2, zero_reg); |
| 3746 __ mov(t3, zero_reg); | 3746 __ mov(t3, zero_reg); |
| 3747 __ c_d(F, f4, f6, 0); | 3747 __ c_d(F, f4, f6, 0); |
| 3748 __ c_s(F, f14, f16, 2); | 3748 __ c_s(F, f14, f16, 2); |
| 3749 __ movt(t2, t1, 0); | 3749 __ movt(t2, t1, 0); |
| 3750 __ movt(t3, t1, 2); | 3750 __ movt(t3, t1, 2); |
| 3751 __ sw(t2, MemOperand(a0, OFFSET_OF(TestFloat, dF)) ); | 3751 __ sw(t2, MemOperand(a0, offsetof(TestFloat, dF)) ); |
| 3752 __ sw(t3, MemOperand(a0, OFFSET_OF(TestFloat, fF)) ); | 3752 __ sw(t3, MemOperand(a0, offsetof(TestFloat, fF)) ); |
| 3753 | 3753 |
| 3754 __ mov(t2, zero_reg); | 3754 __ mov(t2, zero_reg); |
| 3755 __ mov(t3, zero_reg); | 3755 __ mov(t3, zero_reg); |
| 3756 __ c_d(UN, f4, f6, 2); | 3756 __ c_d(UN, f4, f6, 2); |
| 3757 __ c_s(UN, f14, f16, 4); | 3757 __ c_s(UN, f14, f16, 4); |
| 3758 __ movt(t2, t1, 2); | 3758 __ movt(t2, t1, 2); |
| 3759 __ movt(t3, t1, 4); | 3759 __ movt(t3, t1, 4); |
| 3760 __ sw(t2, MemOperand(a0, OFFSET_OF(TestFloat, dUn)) ); | 3760 __ sw(t2, MemOperand(a0, offsetof(TestFloat, dUn)) ); |
| 3761 __ sw(t3, MemOperand(a0, OFFSET_OF(TestFloat, fUn)) ); | 3761 __ sw(t3, MemOperand(a0, offsetof(TestFloat, fUn)) ); |
| 3762 | 3762 |
| 3763 __ mov(t2, zero_reg); | 3763 __ mov(t2, zero_reg); |
| 3764 __ mov(t3, zero_reg); | 3764 __ mov(t3, zero_reg); |
| 3765 __ c_d(EQ, f4, f6, 4); | 3765 __ c_d(EQ, f4, f6, 4); |
| 3766 __ c_s(EQ, f14, f16, 6); | 3766 __ c_s(EQ, f14, f16, 6); |
| 3767 __ movt(t2, t1, 4); | 3767 __ movt(t2, t1, 4); |
| 3768 __ movt(t3, t1, 6); | 3768 __ movt(t3, t1, 6); |
| 3769 __ sw(t2, MemOperand(a0, OFFSET_OF(TestFloat, dEq)) ); | 3769 __ sw(t2, MemOperand(a0, offsetof(TestFloat, dEq)) ); |
| 3770 __ sw(t3, MemOperand(a0, OFFSET_OF(TestFloat, fEq)) ); | 3770 __ sw(t3, MemOperand(a0, offsetof(TestFloat, fEq)) ); |
| 3771 | 3771 |
| 3772 __ mov(t2, zero_reg); | 3772 __ mov(t2, zero_reg); |
| 3773 __ mov(t3, zero_reg); | 3773 __ mov(t3, zero_reg); |
| 3774 __ c_d(UEQ, f4, f6, 6); | 3774 __ c_d(UEQ, f4, f6, 6); |
| 3775 __ c_s(UEQ, f14, f16, 0); | 3775 __ c_s(UEQ, f14, f16, 0); |
| 3776 __ movt(t2, t1, 6); | 3776 __ movt(t2, t1, 6); |
| 3777 __ movt(t3, t1, 0); | 3777 __ movt(t3, t1, 0); |
| 3778 __ sw(t2, MemOperand(a0, OFFSET_OF(TestFloat, dUeq)) ); | 3778 __ sw(t2, MemOperand(a0, offsetof(TestFloat, dUeq)) ); |
| 3779 __ sw(t3, MemOperand(a0, OFFSET_OF(TestFloat, fUeq)) ); | 3779 __ sw(t3, MemOperand(a0, offsetof(TestFloat, fUeq)) ); |
| 3780 | 3780 |
| 3781 __ mov(t2, zero_reg); | 3781 __ mov(t2, zero_reg); |
| 3782 __ mov(t3, zero_reg); | 3782 __ mov(t3, zero_reg); |
| 3783 __ c_d(OLT, f4, f6, 0); | 3783 __ c_d(OLT, f4, f6, 0); |
| 3784 __ c_s(OLT, f14, f16, 2); | 3784 __ c_s(OLT, f14, f16, 2); |
| 3785 __ movt(t2, t1, 0); | 3785 __ movt(t2, t1, 0); |
| 3786 __ movt(t3, t1, 2); | 3786 __ movt(t3, t1, 2); |
| 3787 __ sw(t2, MemOperand(a0, OFFSET_OF(TestFloat, dOlt)) ); | 3787 __ sw(t2, MemOperand(a0, offsetof(TestFloat, dOlt)) ); |
| 3788 __ sw(t3, MemOperand(a0, OFFSET_OF(TestFloat, fOlt)) ); | 3788 __ sw(t3, MemOperand(a0, offsetof(TestFloat, fOlt)) ); |
| 3789 | 3789 |
| 3790 __ mov(t2, zero_reg); | 3790 __ mov(t2, zero_reg); |
| 3791 __ mov(t3, zero_reg); | 3791 __ mov(t3, zero_reg); |
| 3792 __ c_d(ULT, f4, f6, 2); | 3792 __ c_d(ULT, f4, f6, 2); |
| 3793 __ c_s(ULT, f14, f16, 4); | 3793 __ c_s(ULT, f14, f16, 4); |
| 3794 __ movt(t2, t1, 2); | 3794 __ movt(t2, t1, 2); |
| 3795 __ movt(t3, t1, 4); | 3795 __ movt(t3, t1, 4); |
| 3796 __ sw(t2, MemOperand(a0, OFFSET_OF(TestFloat, dUlt)) ); | 3796 __ sw(t2, MemOperand(a0, offsetof(TestFloat, dUlt)) ); |
| 3797 __ sw(t3, MemOperand(a0, OFFSET_OF(TestFloat, fUlt)) ); | 3797 __ sw(t3, MemOperand(a0, offsetof(TestFloat, fUlt)) ); |
| 3798 | 3798 |
| 3799 __ mov(t2, zero_reg); | 3799 __ mov(t2, zero_reg); |
| 3800 __ mov(t3, zero_reg); | 3800 __ mov(t3, zero_reg); |
| 3801 __ c_d(OLE, f4, f6, 4); | 3801 __ c_d(OLE, f4, f6, 4); |
| 3802 __ c_s(OLE, f14, f16, 6); | 3802 __ c_s(OLE, f14, f16, 6); |
| 3803 __ movt(t2, t1, 4); | 3803 __ movt(t2, t1, 4); |
| 3804 __ movt(t3, t1, 6); | 3804 __ movt(t3, t1, 6); |
| 3805 __ sw(t2, MemOperand(a0, OFFSET_OF(TestFloat, dOle)) ); | 3805 __ sw(t2, MemOperand(a0, offsetof(TestFloat, dOle)) ); |
| 3806 __ sw(t3, MemOperand(a0, OFFSET_OF(TestFloat, fOle)) ); | 3806 __ sw(t3, MemOperand(a0, offsetof(TestFloat, fOle)) ); |
| 3807 | 3807 |
| 3808 __ mov(t2, zero_reg); | 3808 __ mov(t2, zero_reg); |
| 3809 __ mov(t3, zero_reg); | 3809 __ mov(t3, zero_reg); |
| 3810 __ c_d(ULE, f4, f6, 6); | 3810 __ c_d(ULE, f4, f6, 6); |
| 3811 __ c_s(ULE, f14, f16, 0); | 3811 __ c_s(ULE, f14, f16, 0); |
| 3812 __ movt(t2, t1, 6); | 3812 __ movt(t2, t1, 6); |
| 3813 __ movt(t3, t1, 0); | 3813 __ movt(t3, t1, 0); |
| 3814 __ sw(t2, MemOperand(a0, OFFSET_OF(TestFloat, dUle)) ); | 3814 __ sw(t2, MemOperand(a0, offsetof(TestFloat, dUle)) ); |
| 3815 __ sw(t3, MemOperand(a0, OFFSET_OF(TestFloat, fUle)) ); | 3815 __ sw(t3, MemOperand(a0, offsetof(TestFloat, fUle)) ); |
| 3816 | 3816 |
| 3817 __ jr(ra); | 3817 __ jr(ra); |
| 3818 __ nop(); | 3818 __ nop(); |
| 3819 | 3819 |
| 3820 CodeDesc desc; | 3820 CodeDesc desc; |
| 3821 assm.GetCode(&desc); | 3821 assm.GetCode(&desc); |
| 3822 Handle<Code> code = isolate->factory()->NewCode( | 3822 Handle<Code> code = isolate->factory()->NewCode( |
| 3823 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 3823 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 3824 F3 f = FUNCTION_CAST<F3>(code->entry()); | 3824 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 3825 test.dOp1 = 2.0; | 3825 test.dOp1 = 2.0; |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3946 float fUle; | 3946 float fUle; |
| 3947 float fOr; | 3947 float fOr; |
| 3948 float fUne; | 3948 float fUne; |
| 3949 float fNe; | 3949 float fNe; |
| 3950 } TestFloat; | 3950 } TestFloat; |
| 3951 | 3951 |
| 3952 TestFloat test; | 3952 TestFloat test; |
| 3953 | 3953 |
| 3954 __ li(t1, 1); | 3954 __ li(t1, 1); |
| 3955 | 3955 |
| 3956 __ ldc1(f4, MemOperand(a0, OFFSET_OF(TestFloat, dOp1))); | 3956 __ ldc1(f4, MemOperand(a0, offsetof(TestFloat, dOp1))); |
| 3957 __ ldc1(f6, MemOperand(a0, OFFSET_OF(TestFloat, dOp2))); | 3957 __ ldc1(f6, MemOperand(a0, offsetof(TestFloat, dOp2))); |
| 3958 | 3958 |
| 3959 __ lwc1(f14, MemOperand(a0, OFFSET_OF(TestFloat, fOp1))); | 3959 __ lwc1(f14, MemOperand(a0, offsetof(TestFloat, fOp1))); |
| 3960 __ lwc1(f16, MemOperand(a0, OFFSET_OF(TestFloat, fOp2))); | 3960 __ lwc1(f16, MemOperand(a0, offsetof(TestFloat, fOp2))); |
| 3961 | 3961 |
| 3962 __ cmp_d(F, f2, f4, f6); | 3962 __ cmp_d(F, f2, f4, f6); |
| 3963 __ cmp_s(F, f12, f14, f16); | 3963 __ cmp_s(F, f12, f14, f16); |
| 3964 __ sdc1(f2, MemOperand(a0, OFFSET_OF(TestFloat, dF)) ); | 3964 __ sdc1(f2, MemOperand(a0, offsetof(TestFloat, dF)) ); |
| 3965 __ swc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, fF)) ); | 3965 __ swc1(f12, MemOperand(a0, offsetof(TestFloat, fF)) ); |
| 3966 | 3966 |
| 3967 __ cmp_d(UN, f2, f4, f6); | 3967 __ cmp_d(UN, f2, f4, f6); |
| 3968 __ cmp_s(UN, f12, f14, f16); | 3968 __ cmp_s(UN, f12, f14, f16); |
| 3969 __ sdc1(f2, MemOperand(a0, OFFSET_OF(TestFloat, dUn)) ); | 3969 __ sdc1(f2, MemOperand(a0, offsetof(TestFloat, dUn)) ); |
| 3970 __ swc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, fUn)) ); | 3970 __ swc1(f12, MemOperand(a0, offsetof(TestFloat, fUn)) ); |
| 3971 | 3971 |
| 3972 __ cmp_d(EQ, f2, f4, f6); | 3972 __ cmp_d(EQ, f2, f4, f6); |
| 3973 __ cmp_s(EQ, f12, f14, f16); | 3973 __ cmp_s(EQ, f12, f14, f16); |
| 3974 __ sdc1(f2, MemOperand(a0, OFFSET_OF(TestFloat, dEq)) ); | 3974 __ sdc1(f2, MemOperand(a0, offsetof(TestFloat, dEq)) ); |
| 3975 __ swc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, fEq)) ); | 3975 __ swc1(f12, MemOperand(a0, offsetof(TestFloat, fEq)) ); |
| 3976 | 3976 |
| 3977 __ cmp_d(UEQ, f2, f4, f6); | 3977 __ cmp_d(UEQ, f2, f4, f6); |
| 3978 __ cmp_s(UEQ, f12, f14, f16); | 3978 __ cmp_s(UEQ, f12, f14, f16); |
| 3979 __ sdc1(f2, MemOperand(a0, OFFSET_OF(TestFloat, dUeq)) ); | 3979 __ sdc1(f2, MemOperand(a0, offsetof(TestFloat, dUeq)) ); |
| 3980 __ swc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, fUeq)) ); | 3980 __ swc1(f12, MemOperand(a0, offsetof(TestFloat, fUeq)) ); |
| 3981 | 3981 |
| 3982 __ cmp_d(LT, f2, f4, f6); | 3982 __ cmp_d(LT, f2, f4, f6); |
| 3983 __ cmp_s(LT, f12, f14, f16); | 3983 __ cmp_s(LT, f12, f14, f16); |
| 3984 __ sdc1(f2, MemOperand(a0, OFFSET_OF(TestFloat, dOlt)) ); | 3984 __ sdc1(f2, MemOperand(a0, offsetof(TestFloat, dOlt)) ); |
| 3985 __ swc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, fOlt)) ); | 3985 __ swc1(f12, MemOperand(a0, offsetof(TestFloat, fOlt)) ); |
| 3986 | 3986 |
| 3987 __ cmp_d(ULT, f2, f4, f6); | 3987 __ cmp_d(ULT, f2, f4, f6); |
| 3988 __ cmp_s(ULT, f12, f14, f16); | 3988 __ cmp_s(ULT, f12, f14, f16); |
| 3989 __ sdc1(f2, MemOperand(a0, OFFSET_OF(TestFloat, dUlt)) ); | 3989 __ sdc1(f2, MemOperand(a0, offsetof(TestFloat, dUlt)) ); |
| 3990 __ swc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, fUlt)) ); | 3990 __ swc1(f12, MemOperand(a0, offsetof(TestFloat, fUlt)) ); |
| 3991 | 3991 |
| 3992 __ cmp_d(LE, f2, f4, f6); | 3992 __ cmp_d(LE, f2, f4, f6); |
| 3993 __ cmp_s(LE, f12, f14, f16); | 3993 __ cmp_s(LE, f12, f14, f16); |
| 3994 __ sdc1(f2, MemOperand(a0, OFFSET_OF(TestFloat, dOle)) ); | 3994 __ sdc1(f2, MemOperand(a0, offsetof(TestFloat, dOle)) ); |
| 3995 __ swc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, fOle)) ); | 3995 __ swc1(f12, MemOperand(a0, offsetof(TestFloat, fOle)) ); |
| 3996 | 3996 |
| 3997 __ cmp_d(ULE, f2, f4, f6); | 3997 __ cmp_d(ULE, f2, f4, f6); |
| 3998 __ cmp_s(ULE, f12, f14, f16); | 3998 __ cmp_s(ULE, f12, f14, f16); |
| 3999 __ sdc1(f2, MemOperand(a0, OFFSET_OF(TestFloat, dUle)) ); | 3999 __ sdc1(f2, MemOperand(a0, offsetof(TestFloat, dUle)) ); |
| 4000 __ swc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, fUle)) ); | 4000 __ swc1(f12, MemOperand(a0, offsetof(TestFloat, fUle)) ); |
| 4001 | 4001 |
| 4002 __ cmp_d(ORD, f2, f4, f6); | 4002 __ cmp_d(ORD, f2, f4, f6); |
| 4003 __ cmp_s(ORD, f12, f14, f16); | 4003 __ cmp_s(ORD, f12, f14, f16); |
| 4004 __ sdc1(f2, MemOperand(a0, OFFSET_OF(TestFloat, dOr)) ); | 4004 __ sdc1(f2, MemOperand(a0, offsetof(TestFloat, dOr)) ); |
| 4005 __ swc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, fOr)) ); | 4005 __ swc1(f12, MemOperand(a0, offsetof(TestFloat, fOr)) ); |
| 4006 | 4006 |
| 4007 __ cmp_d(UNE, f2, f4, f6); | 4007 __ cmp_d(UNE, f2, f4, f6); |
| 4008 __ cmp_s(UNE, f12, f14, f16); | 4008 __ cmp_s(UNE, f12, f14, f16); |
| 4009 __ sdc1(f2, MemOperand(a0, OFFSET_OF(TestFloat, dUne)) ); | 4009 __ sdc1(f2, MemOperand(a0, offsetof(TestFloat, dUne)) ); |
| 4010 __ swc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, fUne)) ); | 4010 __ swc1(f12, MemOperand(a0, offsetof(TestFloat, fUne)) ); |
| 4011 | 4011 |
| 4012 __ cmp_d(NE, f2, f4, f6); | 4012 __ cmp_d(NE, f2, f4, f6); |
| 4013 __ cmp_s(NE, f12, f14, f16); | 4013 __ cmp_s(NE, f12, f14, f16); |
| 4014 __ sdc1(f2, MemOperand(a0, OFFSET_OF(TestFloat, dNe)) ); | 4014 __ sdc1(f2, MemOperand(a0, offsetof(TestFloat, dNe)) ); |
| 4015 __ swc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, fNe)) ); | 4015 __ swc1(f12, MemOperand(a0, offsetof(TestFloat, fNe)) ); |
| 4016 | 4016 |
| 4017 __ jr(ra); | 4017 __ jr(ra); |
| 4018 __ nop(); | 4018 __ nop(); |
| 4019 | 4019 |
| 4020 CodeDesc desc; | 4020 CodeDesc desc; |
| 4021 assm.GetCode(&desc); | 4021 assm.GetCode(&desc); |
| 4022 Handle<Code> code = isolate->factory()->NewCode( | 4022 Handle<Code> code = isolate->factory()->NewCode( |
| 4023 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 4023 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 4024 F3 f = FUNCTION_CAST<F3>(code->entry()); | 4024 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 4025 uint64_t dTrue = 0xFFFFFFFFFFFFFFFF; | 4025 uint64_t dTrue = 0xFFFFFFFFFFFFFFFF; |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4163 } TestFloat; | 4163 } TestFloat; |
| 4164 | 4164 |
| 4165 TestFloat test; | 4165 TestFloat test; |
| 4166 | 4166 |
| 4167 // Save FCSR. | 4167 // Save FCSR. |
| 4168 __ cfc1(a1, FCSR); | 4168 __ cfc1(a1, FCSR); |
| 4169 // Disable FPU exceptions. | 4169 // Disable FPU exceptions. |
| 4170 __ ctc1(zero_reg, FCSR); | 4170 __ ctc1(zero_reg, FCSR); |
| 4171 | 4171 |
| 4172 #define GENERATE_CVT_TEST(x, y, z) \ | 4172 #define GENERATE_CVT_TEST(x, y, z) \ |
| 4173 __ y##c1(f0, MemOperand(a0, OFFSET_OF(TestFloat, x##_in))); \ | 4173 __ y##c1(f0, MemOperand(a0, offsetof(TestFloat, x##_in))); \ |
| 4174 __ x(f0, f0); \ | 4174 __ x(f0, f0); \ |
| 4175 __ nop(); \ | 4175 __ nop(); \ |
| 4176 __ z##c1(f0, MemOperand(a0, OFFSET_OF(TestFloat, x##_out))); | 4176 __ z##c1(f0, MemOperand(a0, offsetof(TestFloat, x##_out))); |
| 4177 | 4177 |
| 4178 GENERATE_CVT_TEST(cvt_d_s, lw, sd) | 4178 GENERATE_CVT_TEST(cvt_d_s, lw, sd) |
| 4179 GENERATE_CVT_TEST(cvt_d_w, lw, sd) | 4179 GENERATE_CVT_TEST(cvt_d_w, lw, sd) |
| 4180 GENERATE_CVT_TEST(cvt_d_l, ld, sd) | 4180 GENERATE_CVT_TEST(cvt_d_l, ld, sd) |
| 4181 | 4181 |
| 4182 GENERATE_CVT_TEST(cvt_l_s, lw, sd) | 4182 GENERATE_CVT_TEST(cvt_l_s, lw, sd) |
| 4183 GENERATE_CVT_TEST(cvt_l_d, ld, sd) | 4183 GENERATE_CVT_TEST(cvt_l_d, ld, sd) |
| 4184 | 4184 |
| 4185 GENERATE_CVT_TEST(cvt_s_d, ld, sw) | 4185 GENERATE_CVT_TEST(cvt_s_d, ld, sw) |
| 4186 GENERATE_CVT_TEST(cvt_s_w, lw, sw) | 4186 GENERATE_CVT_TEST(cvt_s_w, lw, sw) |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4343 float fRes; | 4343 float fRes; |
| 4344 } Test; | 4344 } Test; |
| 4345 | 4345 |
| 4346 Test test; | 4346 Test test; |
| 4347 | 4347 |
| 4348 // Save FCSR. | 4348 // Save FCSR. |
| 4349 __ cfc1(a1, FCSR); | 4349 __ cfc1(a1, FCSR); |
| 4350 // Disable FPU exceptions. | 4350 // Disable FPU exceptions. |
| 4351 __ ctc1(zero_reg, FCSR); | 4351 __ ctc1(zero_reg, FCSR); |
| 4352 | 4352 |
| 4353 __ ldc1(f4, MemOperand(a0, OFFSET_OF(Test, dOp1)) ); | 4353 __ ldc1(f4, MemOperand(a0, offsetof(Test, dOp1)) ); |
| 4354 __ ldc1(f2, MemOperand(a0, OFFSET_OF(Test, dOp2)) ); | 4354 __ ldc1(f2, MemOperand(a0, offsetof(Test, dOp2)) ); |
| 4355 __ nop(); | 4355 __ nop(); |
| 4356 __ div_d(f6, f4, f2); | 4356 __ div_d(f6, f4, f2); |
| 4357 __ sdc1(f6, MemOperand(a0, OFFSET_OF(Test, dRes)) ); | 4357 __ sdc1(f6, MemOperand(a0, offsetof(Test, dRes)) ); |
| 4358 | 4358 |
| 4359 __ lwc1(f4, MemOperand(a0, OFFSET_OF(Test, fOp1)) ); | 4359 __ lwc1(f4, MemOperand(a0, offsetof(Test, fOp1)) ); |
| 4360 __ lwc1(f2, MemOperand(a0, OFFSET_OF(Test, fOp2)) ); | 4360 __ lwc1(f2, MemOperand(a0, offsetof(Test, fOp2)) ); |
| 4361 __ nop(); | 4361 __ nop(); |
| 4362 __ div_s(f6, f4, f2); | 4362 __ div_s(f6, f4, f2); |
| 4363 __ swc1(f6, MemOperand(a0, OFFSET_OF(Test, fRes)) ); | 4363 __ swc1(f6, MemOperand(a0, offsetof(Test, fRes)) ); |
| 4364 | 4364 |
| 4365 // Restore FCSR. | 4365 // Restore FCSR. |
| 4366 __ ctc1(a1, FCSR); | 4366 __ ctc1(a1, FCSR); |
| 4367 | 4367 |
| 4368 __ jr(ra); | 4368 __ jr(ra); |
| 4369 __ nop(); | 4369 __ nop(); |
| 4370 CodeDesc desc; | 4370 CodeDesc desc; |
| 4371 assm.GetCode(&desc); | 4371 assm.GetCode(&desc); |
| 4372 Handle<Code> code = isolate->factory()->NewCode( | 4372 Handle<Code> code = isolate->factory()->NewCode( |
| 4373 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 4373 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4442 test.fOp1 = std::numeric_limits<float>::quiet_NaN(); | 4442 test.fOp1 = std::numeric_limits<float>::quiet_NaN(); |
| 4443 test.fOp2 = -5.0; | 4443 test.fOp2 = -5.0; |
| 4444 | 4444 |
| 4445 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 4445 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); |
| 4446 CHECK_EQ(true, std::isnan(test.dRes)); | 4446 CHECK_EQ(true, std::isnan(test.dRes)); |
| 4447 CHECK_EQ(true, std::isnan(test.fRes)); | 4447 CHECK_EQ(true, std::isnan(test.fRes)); |
| 4448 } | 4448 } |
| 4449 | 4449 |
| 4450 | 4450 |
| 4451 #undef __ | 4451 #undef __ |
| OLD | NEW |