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

Side by Side Diff: src/a64/lithium-codegen-a64.cc

Issue 172133003: Harmony: optimize Math.clz32. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: fix Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/a64/lithium-a64.cc ('k') | src/arm/lithium-arm.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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 3834 matching lines...) Expand 10 before | Expand all | Expand 10 after
3845 3845
3846 void LCodeGen::DoMathLog(LMathLog* instr) { 3846 void LCodeGen::DoMathLog(LMathLog* instr) {
3847 ASSERT(instr->IsMarkedAsCall()); 3847 ASSERT(instr->IsMarkedAsCall());
3848 ASSERT(ToDoubleRegister(instr->value()).is(d0)); 3848 ASSERT(ToDoubleRegister(instr->value()).is(d0));
3849 __ CallCFunction(ExternalReference::math_log_double_function(isolate()), 3849 __ CallCFunction(ExternalReference::math_log_double_function(isolate()),
3850 0, 1); 3850 0, 1);
3851 ASSERT(ToDoubleRegister(instr->result()).Is(d0)); 3851 ASSERT(ToDoubleRegister(instr->result()).Is(d0));
3852 } 3852 }
3853 3853
3854 3854
3855 void LCodeGen::DoMathClz32(LMathClz32* instr) {
3856 Register input = ToRegister32(instr->value());
3857 Register result = ToRegister32(instr->result());
3858 __ Clz(result, input);
3859 }
3860
3861
3855 void LCodeGen::DoMathPowHalf(LMathPowHalf* instr) { 3862 void LCodeGen::DoMathPowHalf(LMathPowHalf* instr) {
3856 DoubleRegister input = ToDoubleRegister(instr->value()); 3863 DoubleRegister input = ToDoubleRegister(instr->value());
3857 DoubleRegister result = ToDoubleRegister(instr->result()); 3864 DoubleRegister result = ToDoubleRegister(instr->result());
3858 Label done; 3865 Label done;
3859 3866
3860 // Math.pow(x, 0.5) differs from fsqrt(x) in the following cases: 3867 // Math.pow(x, 0.5) differs from fsqrt(x) in the following cases:
3861 // Math.pow(-Infinity, 0.5) == +Infinity 3868 // Math.pow(-Infinity, 0.5) == +Infinity
3862 // Math.pow(-0.0, 0.5) == +0.0 3869 // Math.pow(-0.0, 0.5) == +0.0
3863 3870
3864 // Catch -infinity inputs first. 3871 // Catch -infinity inputs first.
(...skipping 1818 matching lines...) Expand 10 before | Expand all | Expand 10 after
5683 __ Bind(&out_of_object); 5690 __ Bind(&out_of_object);
5684 __ Ldr(result, FieldMemOperand(object, JSObject::kPropertiesOffset)); 5691 __ Ldr(result, FieldMemOperand(object, JSObject::kPropertiesOffset));
5685 // Index is equal to negated out of object property index plus 1. 5692 // Index is equal to negated out of object property index plus 1.
5686 __ Sub(result, result, Operand::UntagSmiAndScale(index, kPointerSizeLog2)); 5693 __ Sub(result, result, Operand::UntagSmiAndScale(index, kPointerSizeLog2));
5687 __ Ldr(result, FieldMemOperand(result, 5694 __ Ldr(result, FieldMemOperand(result,
5688 FixedArray::kHeaderSize - kPointerSize)); 5695 FixedArray::kHeaderSize - kPointerSize));
5689 __ Bind(&done); 5696 __ Bind(&done);
5690 } 5697 }
5691 5698
5692 } } // namespace v8::internal 5699 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/a64/lithium-a64.cc ('k') | src/arm/lithium-arm.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698