1// Copyright 2013 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef V8_ARM64_CODEGEN_ARM64_H_
6#define V8_ARM64_CODEGEN_ARM64_H_
7
8#include "src/ast.h"
9#include "src/macro-assembler.h"
10
11namespace v8 {
12namespace internal {
13
14class StringCharLoadGenerator : public AllStatic {
15 public:
16  // Generates the code for handling different string types and loading the
17  // indexed character into |result|.  We expect |index| as untagged input and
18  // |result| as untagged output. Register index is asserted to be a 32-bit W
19  // register.
20  static void Generate(MacroAssembler* masm,
21                       Register string,
22                       Register index,
23                       Register result,
24                       Label* call_runtime);
25
26 private:
27  DISALLOW_COPY_AND_ASSIGN(StringCharLoadGenerator);
28};
29
30
31class MathExpGenerator : public AllStatic {
32 public:
33  static void EmitMathExp(MacroAssembler* masm,
34                          DoubleRegister input,
35                          DoubleRegister result,
36                          DoubleRegister double_scratch1,
37                          DoubleRegister double_scratch2,
38                          Register temp1,
39                          Register temp2,
40                          Register temp3);
41
42 private:
43  DISALLOW_COPY_AND_ASSIGN(MathExpGenerator);
44};
45
46} }  // namespace v8::internal
47
48#endif  // V8_ARM64_CODEGEN_ARM64_H_
49