Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/llvm/lib/ExecutionEngine/JITLink/loongarch.cpp
35271 views
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-exception
6
//
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
17
namespace llvm {
18
namespace jitlink {
19
namespace loongarch {
20
21
const char NullPointerContent[8] = {0x00, 0x00, 0x00, 0x00,
22
0x00, 0x00, 0x00, 0x00};
23
24
const 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 $t8
28
};
29
30
const 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 $t8
34
};
35
36
const 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(Branch26PCRel)
48
KIND_NAME_CASE(Page20)
49
KIND_NAME_CASE(PageOffset12)
50
KIND_NAME_CASE(RequestGOTAndTransformToPage20)
51
KIND_NAME_CASE(RequestGOTAndTransformToPageOffset12)
52
default:
53
return getGenericEdgeKindName(K);
54
}
55
#undef KIND_NAME_CASE
56
}
57
58
} // namespace loongarch
59
} // namespace jitlink
60
} // namespace llvm
61
62