brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.1 KiB · f6cc29f Raw
115 lines · cpp
1//===---- systemz.cpp - Generic JITLink systemz 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 systemz objects.10//11//===----------------------------------------------------------------------===//12 13#include "llvm/ExecutionEngine/JITLink/systemz.h"14 15#define DEBUG_TYPE "jitlink"16 17namespace llvm {18namespace jitlink {19namespace systemz {20 21const char NullPointerContent[8] = {0x00, 0x00, 0x00, 0x00,22                                    0x00, 0x00, 0x00, 0x00};23 24const char Pointer64JumpStubContent[8] = {25    static_cast<char>(0xC4u),26    0x18,27    0x00,28    0x00,29    0x00,30    0x00, // lgrl r131    static_cast<char>(0x07u),32    static_cast<char>(0xF1u), // BCR 15, 133};34 35const char *getEdgeKindName(Edge::Kind R) {36  switch (R) {37  case Pointer64:38    return "Pointer64";39  case Pointer32:40    return "Pointer32";41  case Pointer20:42    return "Pointer20";43  case Pointer16:44    return "Pointer16";45  case Pointer12:46    return "Pointer12";47  case Pointer8:48    return "Pointer8";49  case Delta64:50    return "Delta64";51  case Delta32:52    return "Delta32";53  case Delta16:54    return "Delta16";55  case Delta32dbl:56    return "Delta32dbl";57  case Delta24dbl:58    return "Delta24dbl";59  case Delta16dbl:60    return "Delta16dbl";61  case Delta12dbl:62    return "Delta12dbl";63  case NegDelta64:64    return "NegDelta64";65  case NegDelta32:66    return "NegDelta32";67  case DeltaPLT32dbl:68    return "DeltaPLT32dbl";69  case DeltaPLT24dbl:70    return "DeltaPLT24dbl";71  case DeltaPLT16dbl:72    return "DeltaPLT16dbl";73  case DeltaPLT12dbl:74    return "DeltaPLT12dbl";75  case DeltaPLT64:76    return "DeltaPLT64";77  case DeltaPLT32:78    return "DeltaPLT32";79  case Delta64FromGOT:80    return "Delta64FromGOT";81  case Delta32FromGOT:82    return "Delta32FromGOT";83  case Delta16FromGOT:84    return "Delta16FromGOT";85  case Delta64PLTFromGOT:86    return "Delta64PLTFromGOT";87  case Delta32PLTFromGOT:88    return "Delta32PLTFromGOT";89  case Delta16PLTFromGOT:90    return "Delta16PLTFromGOT";91  case Delta32GOTBase:92    return "Delta32GOTBase";93  case Delta32dblGOTBase:94    return "Delta32dblGOTBase";95  case RequestGOTAndTransformToDelta64FromGOT:96    return "RequestGOTAndTransformToDelta64FromGOT";97  case RequestGOTAndTransformToDelta32FromGOT:98    return "RequestGOTAndTransformToDelta32FromGOT";99  case RequestGOTAndTransformToDelta20FromGOT:100    return "RequestGOTAndTransformToDelta20FromGOT";101  case RequestGOTAndTransformToDelta16FromGOT:102    return "RequestGOTAndTransformToDelta16FromGOT";103  case RequestGOTAndTransformToDelta12FromGOT:104    return "RequestGOTAndTransformToDelta12FromGOT";105  case RequestGOTAndTransformToDelta32dbl:106    return "RequestGOTAndTransformToDelta32dbl";107  default:108    return getGenericEdgeKindName(static_cast<Edge::Kind>(R));109  }110}111 112} // namespace systemz113} // namespace jitlink114} // namespace llvm115