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

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

Issue 11293061: Emit VMLA for multiply-add on ARM (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Clean up and support other targets Created 8 years, 1 month 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
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 1079 matching lines...) Expand 10 before | Expand all | Expand 10 after
1090 DeoptimizeIf(lt, 1090 DeoptimizeIf(lt,
1091 instr->environment(), 1091 instr->environment(),
1092 ToRegister(instr->temp()), 1092 ToRegister(instr->temp()),
1093 Operand(zero_reg)); 1093 Operand(zero_reg));
1094 __ bind(&done); 1094 __ bind(&done);
1095 } 1095 }
1096 } 1096 }
1097 } 1097 }
1098 1098
1099 1099
1100 void LCodeGen::DoMultiplyAddD(LMultiplyAddD* instr) {
1101 XMMRegister a = ToDoubleRegister(instr->a());
1102 XMMRegister b = ToDoubleRegister(instr->b());
1103 XMMRegister c = ToDoubleRegister(instr->c());
1104
1105 // This is computed in-place.
1106 ASSERT(a.is(ToDoubleRegister(instr->result())));
1107
1108 __ mul_d(a, b);
1109 __ add_d(a, c);
1110 }
1111
1112
1100 void LCodeGen::DoBitI(LBitI* instr) { 1113 void LCodeGen::DoBitI(LBitI* instr) {
1101 LOperand* left_op = instr->left(); 1114 LOperand* left_op = instr->left();
1102 LOperand* right_op = instr->right(); 1115 LOperand* right_op = instr->right();
1103 ASSERT(left_op->IsRegister()); 1116 ASSERT(left_op->IsRegister());
1104 Register left = ToRegister(left_op); 1117 Register left = ToRegister(left_op);
1105 Register result = ToRegister(instr->result()); 1118 Register result = ToRegister(instr->result());
1106 Operand right(no_reg); 1119 Operand right(no_reg);
1107 1120
1108 if (right_op->IsStackSlot() || right_op->IsArgument()) { 1121 if (right_op->IsStackSlot() || right_op->IsArgument()) {
1109 right = Operand(EmitLoadRegister(right_op, at)); 1122 right = Operand(EmitLoadRegister(right_op, at));
(...skipping 4350 matching lines...) Expand 10 before | Expand all | Expand 10 after
5460 __ Subu(scratch, result, scratch); 5473 __ Subu(scratch, result, scratch);
5461 __ lw(result, FieldMemOperand(scratch, 5474 __ lw(result, FieldMemOperand(scratch,
5462 FixedArray::kHeaderSize - kPointerSize)); 5475 FixedArray::kHeaderSize - kPointerSize));
5463 __ bind(&done); 5476 __ bind(&done);
5464 } 5477 }
5465 5478
5466 5479
5467 #undef __ 5480 #undef __
5468 5481
5469 } } // namespace v8::internal 5482 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698