1 //=- AArch64/AArch64FixupKinds.h - AArch64 Specific Fixup Entries -*- C++ -*-=//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file describes the LLVM fixups applied to MCInsts in the AArch64
13 //===----------------------------------------------------------------------===//
15 #ifndef LLVM_AARCH64_AARCH64FIXUPKINDS_H
16 #define LLVM_AARCH64_AARCH64FIXUPKINDS_H
18 #include "llvm/MC/MCFixup.h"
23 fixup_a64_ld_prel = FirstTargetFixupKind,
25 fixup_a64_adr_prel_page,
30 fixup_a64_ldst16_lo12,
31 fixup_a64_ldst32_lo12,
32 fixup_a64_ldst64_lo12,
33 fixup_a64_ldst128_lo12,
40 fixup_a64_movw_uabs_g0,
41 fixup_a64_movw_uabs_g0_nc,
42 fixup_a64_movw_uabs_g1,
43 fixup_a64_movw_uabs_g1_nc,
44 fixup_a64_movw_uabs_g2,
45 fixup_a64_movw_uabs_g2_nc,
46 fixup_a64_movw_uabs_g3,
48 fixup_a64_movw_sabs_g0,
49 fixup_a64_movw_sabs_g1,
50 fixup_a64_movw_sabs_g2,
52 fixup_a64_adr_prel_got_page,
53 fixup_a64_ld64_got_lo12_nc,
55 // Produce offsets relative to the module's dynamic TLS area.
56 fixup_a64_movw_dtprel_g2,
57 fixup_a64_movw_dtprel_g1,
58 fixup_a64_movw_dtprel_g1_nc,
59 fixup_a64_movw_dtprel_g0,
60 fixup_a64_movw_dtprel_g0_nc,
61 fixup_a64_add_dtprel_hi12,
62 fixup_a64_add_dtprel_lo12,
63 fixup_a64_add_dtprel_lo12_nc,
64 fixup_a64_ldst8_dtprel_lo12,
65 fixup_a64_ldst8_dtprel_lo12_nc,
66 fixup_a64_ldst16_dtprel_lo12,
67 fixup_a64_ldst16_dtprel_lo12_nc,
68 fixup_a64_ldst32_dtprel_lo12,
69 fixup_a64_ldst32_dtprel_lo12_nc,
70 fixup_a64_ldst64_dtprel_lo12,
71 fixup_a64_ldst64_dtprel_lo12_nc,
73 // Produce the GOT entry containing a variable's address in TLS's
75 fixup_a64_movw_gottprel_g1,
76 fixup_a64_movw_gottprel_g0_nc,
77 fixup_a64_adr_gottprel_page,
78 fixup_a64_ld64_gottprel_lo12_nc,
79 fixup_a64_ld_gottprel_prel19,
81 // Produce offsets relative to the thread pointer: TPIDR_EL0.
82 fixup_a64_movw_tprel_g2,
83 fixup_a64_movw_tprel_g1,
84 fixup_a64_movw_tprel_g1_nc,
85 fixup_a64_movw_tprel_g0,
86 fixup_a64_movw_tprel_g0_nc,
87 fixup_a64_add_tprel_hi12,
88 fixup_a64_add_tprel_lo12,
89 fixup_a64_add_tprel_lo12_nc,
90 fixup_a64_ldst8_tprel_lo12,
91 fixup_a64_ldst8_tprel_lo12_nc,
92 fixup_a64_ldst16_tprel_lo12,
93 fixup_a64_ldst16_tprel_lo12_nc,
94 fixup_a64_ldst32_tprel_lo12,
95 fixup_a64_ldst32_tprel_lo12_nc,
96 fixup_a64_ldst64_tprel_lo12,
97 fixup_a64_ldst64_tprel_lo12_nc,
99 // Produce the special fixups used by the general-dynamic TLS model.
100 fixup_a64_tlsdesc_adr_page,
101 fixup_a64_tlsdesc_ld64_lo12_nc,
102 fixup_a64_tlsdesc_add_lo12_nc,
103 fixup_a64_tlsdesc_call,
108 NumTargetFixupKinds = LastTargetFixupKind - FirstTargetFixupKind