183a4728861129dc263ded92157f3e6389f851f19karlklose@chromium.org// Copyright 2011 the V8 project authors. All rights reserved.
23484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org// Use of this source code is governed by a BSD-style license that can be
33484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org// found in the LICENSE file.
45c838251403b0be9a882540f1922577abba4c872ager@chromium.org
55c838251403b0be9a882540f1922577abba4c872ager@chromium.org
65c838251403b0be9a882540f1922577abba4c872ager@chromium.org#ifndef V8_MIPS_CODEGEN_MIPS_H_
75c838251403b0be9a882540f1922577abba4c872ager@chromium.org#define V8_MIPS_CODEGEN_MIPS_H_
85c838251403b0be9a882540f1922577abba4c872ager@chromium.org
97516f05132429850aa326421ed3e25f23b4c071blrn@chromium.org
10196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/ast.h"
116474a1cfee1cdad45de5cc96960085e1c7daf11cmachenbach@chromium.org#include "src/macro-assembler.h"
127516f05132429850aa326421ed3e25f23b4c071blrn@chromium.org
135c838251403b0be9a882540f1922577abba4c872ager@chromium.orgnamespace v8 {
145c838251403b0be9a882540f1922577abba4c872ager@chromium.orgnamespace internal {
155c838251403b0be9a882540f1922577abba4c872ager@chromium.org
165c838251403b0be9a882540f1922577abba4c872ager@chromium.org
175c838251403b0be9a882540f1922577abba4c872ager@chromium.orgenum TypeofState { INSIDE_TYPEOF, NOT_INSIDE_TYPEOF };
187516f05132429850aa326421ed3e25f23b4c071blrn@chromium.org
195c838251403b0be9a882540f1922577abba4c872ager@chromium.org
2064e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.orgclass StringCharLoadGenerator : public AllStatic {
2164e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org public:
2264e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org  // Generates the code for handling different string types and loading the
2364e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org  // indexed character into |result|.  We expect |index| as untagged input and
2464e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org  // |result| as untagged output.
2564e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org  static void Generate(MacroAssembler* masm,
2664e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org                       Register string,
2764e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org                       Register index,
2864e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org                       Register result,
2964e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org                       Label* call_runtime);
3064e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org
3164e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org private:
3264e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org  DISALLOW_COPY_AND_ASSIGN(StringCharLoadGenerator);
3364e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org};
3464e3a4be4a99f31920128de34573c8ac9038de42ricow@chromium.org
3583130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org
3683130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.orgclass MathExpGenerator : public AllStatic {
3783130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org public:
388e36b5ba34174c8ceb04a47d7e10dcc8f43d94a4machenbach@chromium.org  // Register input isn't modified. All other registers are clobbered.
3983130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org  static void EmitMathExp(MacroAssembler* masm,
4083130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org                          DoubleRegister input,
4183130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org                          DoubleRegister result,
4283130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org                          DoubleRegister double_scratch1,
4383130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org                          DoubleRegister double_scratch2,
4483130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org                          Register temp1,
4583130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org                          Register temp2,
4683130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org                          Register temp3);
4783130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org
4883130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org private:
4983130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org  DISALLOW_COPY_AND_ASSIGN(MathExpGenerator);
5083130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org};
5183130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org
525c838251403b0be9a882540f1922577abba4c872ager@chromium.org} }  // namespace v8::internal
535c838251403b0be9a882540f1922577abba4c872ager@chromium.org
545c838251403b0be9a882540f1922577abba4c872ager@chromium.org#endif  // V8_MIPS_CODEGEN_MIPS_H_
55