brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · 55389ad Raw
77 lines · cpp
1//===--- loongarch.cpp - Generic JITLink loongarch edge kinds, utilities --===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// Generic utilities for graphs representing loongarch objects.10//11//===----------------------------------------------------------------------===//12 13#include "llvm/ExecutionEngine/JITLink/loongarch.h"14 15#define DEBUG_TYPE "jitlink"16 17namespace llvm {18namespace jitlink {19namespace loongarch {20 21const char NullPointerContent[8] = {0x00, 0x00, 0x00, 0x00,22                                    0x00, 0x00, 0x00, 0x00};23 24const uint8_t LA64StubContent[StubEntrySize] = {25    0x14, 0x00, 0x00, 0x1a, // pcalau12i $t8, %page20(imm)26    0x94, 0x02, 0xc0, 0x28, // ld.d $t8, $t8, %pageoff12(imm)27    0x80, 0x02, 0x00, 0x4c  // jr $t828};29 30const uint8_t LA32StubContent[StubEntrySize] = {31    0x14, 0x00, 0x00, 0x1a, // pcalau12i $t8, %page20(imm)32    0x94, 0x02, 0x80, 0x28, // ld.w $t8, $t8, %pageoff12(imm)33    0x80, 0x02, 0x00, 0x4c  // jr $t834};35 36const char *getEdgeKindName(Edge::Kind K) {37#define KIND_NAME_CASE(K)                                                      \38  case K:                                                                      \39    return #K;40 41  switch (K) {42    KIND_NAME_CASE(Pointer64)43    KIND_NAME_CASE(Pointer32)44    KIND_NAME_CASE(Delta32)45    KIND_NAME_CASE(NegDelta32)46    KIND_NAME_CASE(Delta64)47    KIND_NAME_CASE(Branch16PCRel)48    KIND_NAME_CASE(Branch21PCRel)49    KIND_NAME_CASE(Branch26PCRel)50    KIND_NAME_CASE(Page20)51    KIND_NAME_CASE(PageOffset12)52    KIND_NAME_CASE(RequestGOTAndTransformToPage20)53    KIND_NAME_CASE(RequestGOTAndTransformToPageOffset12)54    KIND_NAME_CASE(Call36PCRel)55    KIND_NAME_CASE(Add6)56    KIND_NAME_CASE(Add8)57    KIND_NAME_CASE(Add16)58    KIND_NAME_CASE(Add32)59    KIND_NAME_CASE(Add64)60    KIND_NAME_CASE(AddUleb128)61    KIND_NAME_CASE(Sub6)62    KIND_NAME_CASE(Sub8)63    KIND_NAME_CASE(Sub16)64    KIND_NAME_CASE(Sub32)65    KIND_NAME_CASE(Sub64)66    KIND_NAME_CASE(SubUleb128)67    KIND_NAME_CASE(AlignRelaxable)68  default:69    return getGenericEdgeKindName(K);70  }71#undef KIND_NAME_CASE72}73 74} // namespace loongarch75} // namespace jitlink76} // namespace llvm77