Path: blob/master/runtime/compiler/aarch64/codegen/MemoryReference.hpp
6004 views
/*******************************************************************************1* Copyright (c) 2019, 2022 IBM Corp. and others2*3* This program and the accompanying materials are made available under4* the terms of the Eclipse Public License 2.0 which accompanies this5* distribution and is available at https://www.eclipse.org/legal/epl-2.0/6* or the Apache License, Version 2.0 which accompanies this distribution and7* is available at https://www.apache.org/licenses/LICENSE-2.0.8*9* This Source Code may also be made available under the following10* Secondary Licenses when the conditions for such availability set11* forth in the Eclipse Public License, v. 2.0 are satisfied: GNU12* General Public License, version 2 with the GNU Classpath13* Exception [1] and GNU General Public License, version 2 with the14* OpenJDK Assembly Exception [2].15*16* [1] https://www.gnu.org/software/classpath/license.html17* [2] http://openjdk.java.net/legal/assembly-exception.html18*19* SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception20*******************************************************************************/2122#ifndef TR_MEMORYREFERENCE_INCL23#define TR_MEMORYREFERENCE_INCL2425#include "codegen/ARM64ShiftCode.hpp"26#include "codegen/J9MemoryReference.hpp"2728namespace TR { class Snippet; }2930namespace TR31{3233class OMR_EXTENSIBLE MemoryReference : public J9::MemoryReferenceConnector34{35private:3637MemoryReference(TR::CodeGenerator *cg)38: J9::MemoryReferenceConnector(cg) {}3940MemoryReference(41TR::Register *br,42TR::Register *ir,43TR::CodeGenerator *cg)44: J9::MemoryReferenceConnector(br, ir, cg) {}4546MemoryReference(47TR::Register *br,48TR::Register *ir,49uint8_t scale,50TR::CodeGenerator *cg)51: J9::MemoryReferenceConnector(br, ir, scale, cg) {}5253MemoryReference(54TR::Register *br,55int32_t disp,56TR::CodeGenerator *cg)57: J9::MemoryReferenceConnector(br, disp, cg) {}5859MemoryReference(60TR::Node *node,61TR::CodeGenerator *cg)62: J9::MemoryReferenceConnector(node, cg) {}6364MemoryReference(65TR::Node *node,66TR::SymbolReference *symRef,67TR::CodeGenerator *cg)68: J9::MemoryReferenceConnector(node, symRef, cg) {}6970public:7172static TR::MemoryReference *create(TR::CodeGenerator *cg);73static TR::MemoryReference *createWithIndexReg(TR::CodeGenerator *cg, TR::Register *baseReg, TR::Register *indexReg, uint8_t scale = 0, TR::ARM64ExtendCode extendCode = TR::ARM64ExtendCode::EXT_UXTX);74static TR::MemoryReference *createWithDisplacement(TR::CodeGenerator *cg, TR::Register *baseReg, int64_t displacement);75static TR::MemoryReference *createWithRootLoadOrStore(TR::CodeGenerator *cg, TR::Node *rootLoadOrStore);76static TR::MemoryReference *createWithSymRef(TR::CodeGenerator *cg, TR::Node *node, TR::SymbolReference *symRef);77};7879} // TR8081#endif828384