1906e2fb760f52fe6e75b744b1ea42576ea5b2c29ulan@chromium.org// Copyright 2013 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.
4906e2fb760f52fe6e75b744b1ea42576ea5b2c29ulan@chromium.org
5fa0c3c69b9d632e5730bdd9c745c375beef5e54dmachenbach@chromium.org#ifndef V8_ARM64_CODEGEN_ARM64_H_
6fa0c3c69b9d632e5730bdd9c745c375beef5e54dmachenbach@chromium.org#define V8_ARM64_CODEGEN_ARM64_H_
7906e2fb760f52fe6e75b744b1ea42576ea5b2c29ulan@chromium.org
8196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/ast.h"
9a8702c210b949f35c64d8e4aa01bb6d525086c85machenbach@chromium.org#include "src/macro-assembler.h"
10906e2fb760f52fe6e75b744b1ea42576ea5b2c29ulan@chromium.org
11f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.orgnamespace v8 {
12f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.orgnamespace internal {
13906e2fb760f52fe6e75b744b1ea42576ea5b2c29ulan@chromium.org
14f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.orgclass StringCharLoadGenerator : public AllStatic {
15f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org public:
16f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org  // Generates the code for handling different string types and loading the
17f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org  // indexed character into |result|.  We expect |index| as untagged input and
18f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org  // |result| as untagged output. Register index is asserted to be a 32-bit W
19f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org  // register.
20f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org  static void Generate(MacroAssembler* masm,
21f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org                       Register string,
22f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org                       Register index,
23f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org                       Register result,
24f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org                       Label* call_runtime);
25906e2fb760f52fe6e75b744b1ea42576ea5b2c29ulan@chromium.org
26f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org private:
27f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org  DISALLOW_COPY_AND_ASSIGN(StringCharLoadGenerator);
28f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org};
29906e2fb760f52fe6e75b744b1ea42576ea5b2c29ulan@chromium.org
30906e2fb760f52fe6e75b744b1ea42576ea5b2c29ulan@chromium.org
31f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.orgclass MathExpGenerator : public AllStatic {
32f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org public:
33f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org  static void EmitMathExp(MacroAssembler* masm,
34f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org                          DoubleRegister input,
35f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org                          DoubleRegister result,
36f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org                          DoubleRegister double_scratch1,
37f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org                          DoubleRegister double_scratch2,
38f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org                          Register temp1,
39f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org                          Register temp2,
40f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org                          Register temp3);
41f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org
42f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org private:
43f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org  DISALLOW_COPY_AND_ASSIGN(MathExpGenerator);
44f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org};
45f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org
46f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org} }  // namespace v8::internal
47f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org
48fa0c3c69b9d632e5730bdd9c745c375beef5e54dmachenbach@chromium.org#endif  // V8_ARM64_CODEGEN_ARM64_H_
49