xref: /aosp_15_r20/external/llvm/lib/Target/AArch64/MCTargetDesc/AArch64FixupKinds.h (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker //===-- AArch64FixupKinds.h - AArch64 Specific Fixup Entries ----*- C++ -*-===//
2*9880d681SAndroid Build Coastguard Worker //
3*9880d681SAndroid Build Coastguard Worker //                     The LLVM Compiler Infrastructure
4*9880d681SAndroid Build Coastguard Worker //
5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source
6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details.
7*9880d681SAndroid Build Coastguard Worker //
8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
9*9880d681SAndroid Build Coastguard Worker 
10*9880d681SAndroid Build Coastguard Worker #ifndef LLVM_LIB_TARGET_AARCH64_MCTARGETDESC_AARCH64FIXUPKINDS_H
11*9880d681SAndroid Build Coastguard Worker #define LLVM_LIB_TARGET_AARCH64_MCTARGETDESC_AARCH64FIXUPKINDS_H
12*9880d681SAndroid Build Coastguard Worker 
13*9880d681SAndroid Build Coastguard Worker #include "llvm/MC/MCFixup.h"
14*9880d681SAndroid Build Coastguard Worker 
15*9880d681SAndroid Build Coastguard Worker namespace llvm {
16*9880d681SAndroid Build Coastguard Worker namespace AArch64 {
17*9880d681SAndroid Build Coastguard Worker 
18*9880d681SAndroid Build Coastguard Worker enum Fixups {
19*9880d681SAndroid Build Coastguard Worker   // fixup_aarch64_pcrel_adr_imm21 - A 21-bit pc-relative immediate inserted into
20*9880d681SAndroid Build Coastguard Worker   // an ADR instruction.
21*9880d681SAndroid Build Coastguard Worker   fixup_aarch64_pcrel_adr_imm21 = FirstTargetFixupKind,
22*9880d681SAndroid Build Coastguard Worker 
23*9880d681SAndroid Build Coastguard Worker   // fixup_aarch64_pcrel_adrp_imm21 - A 21-bit pc-relative immediate inserted into
24*9880d681SAndroid Build Coastguard Worker   // an ADRP instruction.
25*9880d681SAndroid Build Coastguard Worker   fixup_aarch64_pcrel_adrp_imm21,
26*9880d681SAndroid Build Coastguard Worker 
27*9880d681SAndroid Build Coastguard Worker   // fixup_aarch64_imm12 - 12-bit fixup for add/sub instructions.
28*9880d681SAndroid Build Coastguard Worker   //     No alignment adjustment. All value bits are encoded.
29*9880d681SAndroid Build Coastguard Worker   fixup_aarch64_add_imm12,
30*9880d681SAndroid Build Coastguard Worker 
31*9880d681SAndroid Build Coastguard Worker   // fixup_aarch64_ldst_imm12_* - unsigned 12-bit fixups for load and
32*9880d681SAndroid Build Coastguard Worker   // store instructions.
33*9880d681SAndroid Build Coastguard Worker   fixup_aarch64_ldst_imm12_scale1,
34*9880d681SAndroid Build Coastguard Worker   fixup_aarch64_ldst_imm12_scale2,
35*9880d681SAndroid Build Coastguard Worker   fixup_aarch64_ldst_imm12_scale4,
36*9880d681SAndroid Build Coastguard Worker   fixup_aarch64_ldst_imm12_scale8,
37*9880d681SAndroid Build Coastguard Worker   fixup_aarch64_ldst_imm12_scale16,
38*9880d681SAndroid Build Coastguard Worker 
39*9880d681SAndroid Build Coastguard Worker   // fixup_aarch64_ldr_pcrel_imm19 - The high 19 bits of a 21-bit pc-relative
40*9880d681SAndroid Build Coastguard Worker   // immediate. Same encoding as fixup_aarch64_pcrel_adrhi, except this is used by
41*9880d681SAndroid Build Coastguard Worker   // pc-relative loads and generates relocations directly when necessary.
42*9880d681SAndroid Build Coastguard Worker   fixup_aarch64_ldr_pcrel_imm19,
43*9880d681SAndroid Build Coastguard Worker 
44*9880d681SAndroid Build Coastguard Worker   // FIXME: comment
45*9880d681SAndroid Build Coastguard Worker   fixup_aarch64_movw,
46*9880d681SAndroid Build Coastguard Worker 
47*9880d681SAndroid Build Coastguard Worker   // fixup_aarch64_pcrel_imm14 - The high 14 bits of a 21-bit pc-relative
48*9880d681SAndroid Build Coastguard Worker   // immediate.
49*9880d681SAndroid Build Coastguard Worker   fixup_aarch64_pcrel_branch14,
50*9880d681SAndroid Build Coastguard Worker 
51*9880d681SAndroid Build Coastguard Worker   // fixup_aarch64_pcrel_branch19 - The high 19 bits of a 21-bit pc-relative
52*9880d681SAndroid Build Coastguard Worker   // immediate. Same encoding as fixup_aarch64_pcrel_adrhi, except this is use by
53*9880d681SAndroid Build Coastguard Worker   // b.cc and generates relocations directly when necessary.
54*9880d681SAndroid Build Coastguard Worker   fixup_aarch64_pcrel_branch19,
55*9880d681SAndroid Build Coastguard Worker 
56*9880d681SAndroid Build Coastguard Worker   // fixup_aarch64_pcrel_branch26 - The high 26 bits of a 28-bit pc-relative
57*9880d681SAndroid Build Coastguard Worker   // immediate.
58*9880d681SAndroid Build Coastguard Worker   fixup_aarch64_pcrel_branch26,
59*9880d681SAndroid Build Coastguard Worker 
60*9880d681SAndroid Build Coastguard Worker   // fixup_aarch64_pcrel_call26 - The high 26 bits of a 28-bit pc-relative
61*9880d681SAndroid Build Coastguard Worker   // immediate. Distinguished from branch26 only on ELF.
62*9880d681SAndroid Build Coastguard Worker   fixup_aarch64_pcrel_call26,
63*9880d681SAndroid Build Coastguard Worker 
64*9880d681SAndroid Build Coastguard Worker   // fixup_aarch64_tlsdesc_call - zero-space placeholder for the ELF
65*9880d681SAndroid Build Coastguard Worker   // R_AARCH64_TLSDESC_CALL relocation.
66*9880d681SAndroid Build Coastguard Worker   fixup_aarch64_tlsdesc_call,
67*9880d681SAndroid Build Coastguard Worker 
68*9880d681SAndroid Build Coastguard Worker   // Marker
69*9880d681SAndroid Build Coastguard Worker   LastTargetFixupKind,
70*9880d681SAndroid Build Coastguard Worker   NumTargetFixupKinds = LastTargetFixupKind - FirstTargetFixupKind
71*9880d681SAndroid Build Coastguard Worker };
72*9880d681SAndroid Build Coastguard Worker 
73*9880d681SAndroid Build Coastguard Worker } // end namespace AArch64
74*9880d681SAndroid Build Coastguard Worker } // end namespace llvm
75*9880d681SAndroid Build Coastguard Worker 
76*9880d681SAndroid Build Coastguard Worker #endif
77