xref: /freebsd/contrib/llvm-project/llvm/lib/Target/PowerPC/MCTargetDesc/PPCFixupKinds.h (revision dd41de95a84d979615a2ef11df6850622bf6184e)
1 //===-- PPCFixupKinds.h - PPC Specific Fixup Entries ------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLVM_LIB_TARGET_POWERPC_MCTARGETDESC_PPCFIXUPKINDS_H
10 #define LLVM_LIB_TARGET_POWERPC_MCTARGETDESC_PPCFIXUPKINDS_H
11 
12 #include "llvm/MC/MCFixup.h"
13 
14 #undef PPC
15 
16 namespace llvm {
17 namespace PPC {
18 enum Fixups {
19   // 24-bit PC relative relocation for direct branches like 'b' and 'bl'.
20   fixup_ppc_br24 = FirstTargetFixupKind,
21 
22   // 24-bit PC relative relocation for direct branches like 'b' and 'bl' where
23   // the caller does not use the TOC.
24   fixup_ppc_br24_notoc,
25 
26   /// 14-bit PC relative relocation for conditional branches.
27   fixup_ppc_brcond14,
28 
29   /// 24-bit absolute relocation for direct branches like 'ba' and 'bla'.
30   fixup_ppc_br24abs,
31 
32   /// 14-bit absolute relocation for conditional branches.
33   fixup_ppc_brcond14abs,
34 
35   /// A 16-bit fixup corresponding to lo16(_foo) or ha16(_foo) for instrs like
36   /// 'li' or 'addis'.
37   fixup_ppc_half16,
38 
39   /// A 14-bit fixup corresponding to lo16(_foo) with implied 2 zero bits for
40   /// instrs like 'std'.
41   fixup_ppc_half16ds,
42 
43   // A 34-bit fixup corresponding to PC-relative paddi.
44   fixup_ppc_pcrel34,
45 
46   /// Not a true fixup, but ties a symbol to a call to __tls_get_addr for the
47   /// TLS general and local dynamic models, or inserts the thread-pointer
48   /// register number.
49   fixup_ppc_nofixup,
50 
51   // Marker
52   LastTargetFixupKind,
53   NumTargetFixupKinds = LastTargetFixupKind - FirstTargetFixupKind
54 };
55 }
56 }
57 
58 #endif
59