Chromium Code Reviews

Side by Side Diff: src/arm/lithium-arm.h

Issue 6625084: ARM: Improved double to integer truncation.... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | | Annotate | Revision Log
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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 1438 matching lines...)
1449 inputs_[0] = value; 1449 inputs_[0] = value;
1450 temps_[0] = temp1; 1450 temps_[0] = temp1;
1451 temps_[1] = temp2; 1451 temps_[1] = temp2;
1452 } 1452 }
1453 1453
1454 DECLARE_CONCRETE_INSTRUCTION(NumberTagD, "number-tag-d") 1454 DECLARE_CONCRETE_INSTRUCTION(NumberTagD, "number-tag-d")
1455 }; 1455 };
1456 1456
1457 1457
1458 // Sometimes truncating conversion from a tagged value to an int32. 1458 // Sometimes truncating conversion from a tagged value to an int32.
1459 class LDoubleToI: public LTemplateInstruction<1, 1, 1> { 1459 class LDoubleToI: public LTemplateInstruction<1, 1, 2> {
1460 public: 1460 public:
1461 explicit LDoubleToI(LOperand* value, LOperand* temp1) { 1461 explicit LDoubleToI(LOperand* value, LOperand* temp1, LOperand* temp2) {
Karl Klose 2011/03/09 10:37:51 explicit is not needed here.
Alexandre 2011/03/15 08:45:39 Removed.
1462 inputs_[0] = value; 1462 inputs_[0] = value;
1463 temps_[0] = temp1; 1463 temps_[0] = temp1;
1464 temps_[1] = temp2;
1464 } 1465 }
1465 1466
1466 DECLARE_CONCRETE_INSTRUCTION(DoubleToI, "double-to-i") 1467 DECLARE_CONCRETE_INSTRUCTION(DoubleToI, "double-to-i")
1467 DECLARE_HYDROGEN_ACCESSOR(Change) 1468 DECLARE_HYDROGEN_ACCESSOR(Change)
1468 1469
1469 bool truncating() { return hydrogen()->CanTruncateToInt32(); } 1470 bool truncating() { return hydrogen()->CanTruncateToInt32(); }
1470 }; 1471 };
1471 1472
1472 1473
1473 // Truncating conversion from a tagged value to an int32. 1474 // Truncating conversion from a tagged value to an int32.
1474 class LTaggedToI: public LTemplateInstruction<1, 1, 1> { 1475 class LTaggedToI: public LTemplateInstruction<1, 1, 3> {
1475 public: 1476 public:
1476 LTaggedToI(LOperand* value, LOperand* temp) { 1477 LTaggedToI(LOperand* value,
1478 LOperand* temp1,
1479 LOperand* temp2,
1480 LOperand* temp3) {
1477 inputs_[0] = value; 1481 inputs_[0] = value;
1478 temps_[0] = temp; 1482 temps_[0] = temp1;
1483 temps_[1] = temp2;
1484 temps_[2] = temp3;
1479 } 1485 }
1480 1486
1481 DECLARE_CONCRETE_INSTRUCTION(TaggedToI, "tagged-to-i") 1487 DECLARE_CONCRETE_INSTRUCTION(TaggedToI, "tagged-to-i")
1482 DECLARE_HYDROGEN_ACCESSOR(Change) 1488 DECLARE_HYDROGEN_ACCESSOR(Change)
1483 1489
1484 bool truncating() { return hydrogen()->CanTruncateToInt32(); } 1490 bool truncating() { return hydrogen()->CanTruncateToInt32(); }
1485 }; 1491 };
1486 1492
1487 1493
1488 class LSmiTag: public LTemplateInstruction<1, 1, 0> { 1494 class LSmiTag: public LTemplateInstruction<1, 1, 0> {
(...skipping 553 matching lines...)
2042 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); 2048 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder);
2043 }; 2049 };
2044 2050
2045 #undef DECLARE_HYDROGEN_ACCESSOR 2051 #undef DECLARE_HYDROGEN_ACCESSOR
2046 #undef DECLARE_INSTRUCTION 2052 #undef DECLARE_INSTRUCTION
2047 #undef DECLARE_CONCRETE_INSTRUCTION 2053 #undef DECLARE_CONCRETE_INSTRUCTION
2048 2054
2049 } } // namespace v8::internal 2055 } } // namespace v8::internal
2050 2056
2051 #endif // V8_ARM_LITHIUM_ARM_H_ 2057 #endif // V8_ARM_LITHIUM_ARM_H_
OLDNEW

Powered by Google App Engine