diff options
Diffstat (limited to 'src/jit/lowerarm.cpp')
-rw-r--r-- | src/jit/lowerarm.cpp | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/src/jit/lowerarm.cpp b/src/jit/lowerarm.cpp new file mode 100644 index 0000000000..d99347d335 --- /dev/null +++ b/src/jit/lowerarm.cpp @@ -0,0 +1,89 @@ +// +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +// + +/*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XX XX +XX Lowering for ARM XX +XX XX +XX This encapsulates all the logic for lowering trees for the ARM XX +XX architecture. For a more detailed view of what is lowering, please XX +XX take a look at Lower.cpp XX +XX XX +XX XX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +*/ + +#include "jitpch.h" +#ifdef _MSC_VER +#pragma hdrstop +#endif + +#ifndef LEGACY_BACKEND // This file is ONLY used for the RyuJIT backend that uses the linear scan register allocator + +// The ARM backend is not yet implemented, so the methods here are all NYI. +// TODO-ARM-NYI: Lowering for ARM. +#ifdef _TARGET_ARM_ + +#include "jit.h" +#include "lower.h" +#include "lsra.h" + +/* Lowering of GT_CAST nodes */ +void Lowering::LowerCast(GenTreePtr *ppTree) { } + + +void Lowering::LowerCntBlockOp(GenTreePtr *ppTree) +{ + NYI_ARM("ARM Lowering for BlockOp"); +} + +void Lowering::TreeNodeInfoInitCall(GenTree *tree, TreeNodeInfo &info, + int &srcCount, // out + int &dstCount // out + ) +{ + NYI_ARM("ARM TreeNodeInfoInit for Call"); +} + +Compiler::fgWalkResult Lowering::TreeInfoInitHelper(GenTreePtr* pTree, Compiler::fgWalkData* data) +{ + Lowering* lower = (Lowering*)data->pCallbackData; + lower->TreeNodeInfoInit(pTree, data->parent); + return Compiler::WALK_CONTINUE; +} + +void Lowering::TreeNodeInfoInit(GenTree* stmt) +{ + comp->fgWalkTreePost(&stmt->gtStmt.gtStmtExpr, &Lowering::TreeInfoInitHelper, this); +} + +void Lowering::TreeNodeInfoInit(GenTreePtr *pTree, GenTree* parent) +{ + NYI("ARM TreeNodInfoInit"); +} + +// returns true if the tree can use the read-modify-write memory instruction form +bool Lowering::isRMWRegOper(GenTreePtr tree) +{ + return false; +} + +bool Lowering::IsCallTargetInRange(void *addr) +{ + return comp->codeGen->validImmForBL ((ssize_t)addr); +} + +// return true if the immediate can be folded into an instruction, for example small enough and non-relocatable +bool Lowering:: IsContainableImmed(GenTree* parentNode, GenTree* childNode) +{ + NYI_ARM("ARM IsContainableImmed"); + return false; +} + +#endif // _TARGET_ARM_ + +#endif // !LEGACY_BACKEND |