xref: /freebsd/contrib/llvm-project/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCFixups.h (revision 06c3fb2749bda94cb5201f81ffdb8fa6c3161b2e)
10b57cec5SDimitry Andric //===-- SystemZMCFixups.h - SystemZ-specific fixup entries ------*- C++ -*-===//
20b57cec5SDimitry Andric //
30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric //
70b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric 
90b57cec5SDimitry Andric #ifndef LLVM_LIB_TARGET_SYSTEMZ_MCTARGETDESC_SYSTEMZMCFIXUPS_H
100b57cec5SDimitry Andric #define LLVM_LIB_TARGET_SYSTEMZ_MCTARGETDESC_SYSTEMZMCFIXUPS_H
110b57cec5SDimitry Andric 
120b57cec5SDimitry Andric #include "llvm/MC/MCFixup.h"
13*06c3fb27SDimitry Andric #include "llvm/MC/MCFixupKindInfo.h"
140b57cec5SDimitry Andric 
150b57cec5SDimitry Andric namespace llvm {
160b57cec5SDimitry Andric namespace SystemZ {
170b57cec5SDimitry Andric enum FixupKind {
180b57cec5SDimitry Andric   // These correspond directly to R_390_* relocations.
190b57cec5SDimitry Andric   FK_390_PC12DBL = FirstTargetFixupKind,
200b57cec5SDimitry Andric   FK_390_PC16DBL,
210b57cec5SDimitry Andric   FK_390_PC24DBL,
220b57cec5SDimitry Andric   FK_390_PC32DBL,
230b57cec5SDimitry Andric   FK_390_TLS_CALL,
24*06c3fb27SDimitry Andric 
25*06c3fb27SDimitry Andric   FK_390_S8Imm,
26*06c3fb27SDimitry Andric   FK_390_S16Imm,
27*06c3fb27SDimitry Andric   FK_390_S20Imm,
28*06c3fb27SDimitry Andric   FK_390_S32Imm,
29*06c3fb27SDimitry Andric   FK_390_U1Imm,
30*06c3fb27SDimitry Andric   FK_390_U2Imm,
31*06c3fb27SDimitry Andric   FK_390_U3Imm,
32*06c3fb27SDimitry Andric   FK_390_U4Imm,
33*06c3fb27SDimitry Andric   FK_390_U8Imm,
34*06c3fb27SDimitry Andric   FK_390_U12Imm,
35*06c3fb27SDimitry Andric   FK_390_U16Imm,
36*06c3fb27SDimitry Andric   FK_390_U32Imm,
37*06c3fb27SDimitry Andric   FK_390_U48Imm,
380b57cec5SDimitry Andric 
390b57cec5SDimitry Andric   // Marker
400b57cec5SDimitry Andric   LastTargetFixupKind,
410b57cec5SDimitry Andric   NumTargetFixupKinds = LastTargetFixupKind - FirstTargetFixupKind
420b57cec5SDimitry Andric };
43*06c3fb27SDimitry Andric 
44*06c3fb27SDimitry Andric const static MCFixupKindInfo MCFixupKindInfos[SystemZ::NumTargetFixupKinds] = {
45*06c3fb27SDimitry Andric     {"FK_390_PC12DBL", 4, 12, MCFixupKindInfo::FKF_IsPCRel},
46*06c3fb27SDimitry Andric     {"FK_390_PC16DBL", 0, 16, MCFixupKindInfo::FKF_IsPCRel},
47*06c3fb27SDimitry Andric     {"FK_390_PC24DBL", 0, 24, MCFixupKindInfo::FKF_IsPCRel},
48*06c3fb27SDimitry Andric     {"FK_390_PC32DBL", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
49*06c3fb27SDimitry Andric     {"FK_390_TLS_CALL", 0, 0, 0},
50*06c3fb27SDimitry Andric     {"FK_390_S8Imm", 0, 8, 0},
51*06c3fb27SDimitry Andric     {"FK_390_S16Imm", 0, 16, 0},
52*06c3fb27SDimitry Andric     {"FK_390_S20Imm", 4, 20, 0},
53*06c3fb27SDimitry Andric     {"FK_390_S32Imm", 0, 32, 0},
54*06c3fb27SDimitry Andric     {"FK_390_U1Imm", 0, 1, 0},
55*06c3fb27SDimitry Andric     {"FK_390_U2Imm", 0, 2, 0},
56*06c3fb27SDimitry Andric     {"FK_390_U3Imm", 0, 3, 0},
57*06c3fb27SDimitry Andric     {"FK_390_U4Imm", 0, 4, 0},
58*06c3fb27SDimitry Andric     {"FK_390_U8Imm", 0, 8, 0},
59*06c3fb27SDimitry Andric     {"FK_390_U12Imm", 4, 12, 0},
60*06c3fb27SDimitry Andric     {"FK_390_U16Imm", 0, 16, 0},
61*06c3fb27SDimitry Andric     {"FK_390_U32Imm", 0, 32, 0},
62*06c3fb27SDimitry Andric     {"FK_390_U48Imm", 0, 48, 0},
63*06c3fb27SDimitry Andric };
640b57cec5SDimitry Andric } // end namespace SystemZ
650b57cec5SDimitry Andric } // end namespace llvm
660b57cec5SDimitry Andric 
670b57cec5SDimitry Andric #endif
68