1249259Sdim//=- AArch64/AArch64FixupKinds.h - AArch64 Specific Fixup Entries -*- C++ -*-=// 2249259Sdim// 3249259Sdim// The LLVM Compiler Infrastructure 4249259Sdim// 5249259Sdim// This file is distributed under the University of Illinois Open Source 6249259Sdim// License. See LICENSE.TXT for details. 7249259Sdim// 8249259Sdim//===----------------------------------------------------------------------===// 9249259Sdim// 10249259Sdim// This file describes the LLVM fixups applied to MCInsts in the AArch64 11249259Sdim// backend. 12249259Sdim// 13249259Sdim//===----------------------------------------------------------------------===// 14249259Sdim 15249259Sdim#ifndef LLVM_AARCH64_AARCH64FIXUPKINDS_H 16249259Sdim#define LLVM_AARCH64_AARCH64FIXUPKINDS_H 17249259Sdim 18249259Sdim#include "llvm/MC/MCFixup.h" 19249259Sdim 20249259Sdimnamespace llvm { 21249259Sdim namespace AArch64 { 22249259Sdim enum Fixups { 23249259Sdim fixup_a64_ld_prel = FirstTargetFixupKind, 24249259Sdim fixup_a64_adr_prel, 25249259Sdim fixup_a64_adr_prel_page, 26249259Sdim 27249259Sdim fixup_a64_add_lo12, 28249259Sdim 29249259Sdim fixup_a64_ldst8_lo12, 30249259Sdim fixup_a64_ldst16_lo12, 31249259Sdim fixup_a64_ldst32_lo12, 32249259Sdim fixup_a64_ldst64_lo12, 33249259Sdim fixup_a64_ldst128_lo12, 34249259Sdim 35249259Sdim fixup_a64_tstbr, 36249259Sdim fixup_a64_condbr, 37249259Sdim fixup_a64_uncondbr, 38249259Sdim fixup_a64_call, 39249259Sdim 40249259Sdim fixup_a64_movw_uabs_g0, 41249259Sdim fixup_a64_movw_uabs_g0_nc, 42249259Sdim fixup_a64_movw_uabs_g1, 43249259Sdim fixup_a64_movw_uabs_g1_nc, 44249259Sdim fixup_a64_movw_uabs_g2, 45249259Sdim fixup_a64_movw_uabs_g2_nc, 46249259Sdim fixup_a64_movw_uabs_g3, 47249259Sdim 48249259Sdim fixup_a64_movw_sabs_g0, 49249259Sdim fixup_a64_movw_sabs_g1, 50249259Sdim fixup_a64_movw_sabs_g2, 51249259Sdim 52249259Sdim fixup_a64_adr_prel_got_page, 53249259Sdim fixup_a64_ld64_got_lo12_nc, 54249259Sdim 55249259Sdim // Produce offsets relative to the module's dynamic TLS area. 56249259Sdim fixup_a64_movw_dtprel_g2, 57249259Sdim fixup_a64_movw_dtprel_g1, 58249259Sdim fixup_a64_movw_dtprel_g1_nc, 59249259Sdim fixup_a64_movw_dtprel_g0, 60249259Sdim fixup_a64_movw_dtprel_g0_nc, 61249259Sdim fixup_a64_add_dtprel_hi12, 62249259Sdim fixup_a64_add_dtprel_lo12, 63249259Sdim fixup_a64_add_dtprel_lo12_nc, 64249259Sdim fixup_a64_ldst8_dtprel_lo12, 65249259Sdim fixup_a64_ldst8_dtprel_lo12_nc, 66249259Sdim fixup_a64_ldst16_dtprel_lo12, 67249259Sdim fixup_a64_ldst16_dtprel_lo12_nc, 68249259Sdim fixup_a64_ldst32_dtprel_lo12, 69249259Sdim fixup_a64_ldst32_dtprel_lo12_nc, 70249259Sdim fixup_a64_ldst64_dtprel_lo12, 71249259Sdim fixup_a64_ldst64_dtprel_lo12_nc, 72249259Sdim 73249259Sdim // Produce the GOT entry containing a variable's address in TLS's 74249259Sdim // initial-exec mode. 75249259Sdim fixup_a64_movw_gottprel_g1, 76249259Sdim fixup_a64_movw_gottprel_g0_nc, 77249259Sdim fixup_a64_adr_gottprel_page, 78249259Sdim fixup_a64_ld64_gottprel_lo12_nc, 79249259Sdim fixup_a64_ld_gottprel_prel19, 80249259Sdim 81249259Sdim // Produce offsets relative to the thread pointer: TPIDR_EL0. 82249259Sdim fixup_a64_movw_tprel_g2, 83249259Sdim fixup_a64_movw_tprel_g1, 84249259Sdim fixup_a64_movw_tprel_g1_nc, 85249259Sdim fixup_a64_movw_tprel_g0, 86249259Sdim fixup_a64_movw_tprel_g0_nc, 87249259Sdim fixup_a64_add_tprel_hi12, 88249259Sdim fixup_a64_add_tprel_lo12, 89249259Sdim fixup_a64_add_tprel_lo12_nc, 90249259Sdim fixup_a64_ldst8_tprel_lo12, 91249259Sdim fixup_a64_ldst8_tprel_lo12_nc, 92249259Sdim fixup_a64_ldst16_tprel_lo12, 93249259Sdim fixup_a64_ldst16_tprel_lo12_nc, 94249259Sdim fixup_a64_ldst32_tprel_lo12, 95249259Sdim fixup_a64_ldst32_tprel_lo12_nc, 96249259Sdim fixup_a64_ldst64_tprel_lo12, 97249259Sdim fixup_a64_ldst64_tprel_lo12_nc, 98249259Sdim 99249259Sdim // Produce the special fixups used by the general-dynamic TLS model. 100249259Sdim fixup_a64_tlsdesc_adr_page, 101249259Sdim fixup_a64_tlsdesc_ld64_lo12_nc, 102249259Sdim fixup_a64_tlsdesc_add_lo12_nc, 103249259Sdim fixup_a64_tlsdesc_call, 104249259Sdim 105249259Sdim 106249259Sdim // Marker 107249259Sdim LastTargetFixupKind, 108249259Sdim NumTargetFixupKinds = LastTargetFixupKind - FirstTargetFixupKind 109249259Sdim }; 110249259Sdim } 111249259Sdim} 112249259Sdim 113249259Sdim#endif 114