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