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