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 /// 14-bit PC relative relocation for conditional branches. 23 fixup_ppc_brcond14, 24 25 /// 24-bit absolute relocation for direct branches like 'ba' and 'bla'. 26 fixup_ppc_br24abs, 27 28 /// 14-bit absolute relocation for conditional branches. 29 fixup_ppc_brcond14abs, 30 31 /// A 16-bit fixup corresponding to lo16(_foo) or ha16(_foo) for instrs like 32 /// 'li' or 'addis'. 33 fixup_ppc_half16, 34 35 /// A 14-bit fixup corresponding to lo16(_foo) with implied 2 zero bits for 36 /// instrs like 'std'. 37 fixup_ppc_half16ds, 38 39 /// Not a true fixup, but ties a symbol to a call to __tls_get_addr for the 40 /// TLS general and local dynamic models, or inserts the thread-pointer 41 /// register number. 42 fixup_ppc_nofixup, 43 44 // Marker 45 LastTargetFixupKind, 46 NumTargetFixupKinds = LastTargetFixupKind - FirstTargetFixupKind 47 }; 48 } 49 } 50 51 #endif 52