Files
clang-p2996/llvm/lib/Target/PowerPC/MCTargetDesc/PPCFixupKinds.h
Stefan Pintilie 97470897c4 [PowerPC] Split s34imm into two types
Currently the instruction paddi always takes s34imm as the type for the
34 bit immediate. However, the PC Relative form of the instruction should
not produce the same fixup as the non PC Relative form.
This patch splits the s34imm type into s34imm and s34imm_pcrel so that two
different fixups can be emitted.

Reviewed By: nemanjai, #powerpc, kamaub

Differential Revision: https://reviews.llvm.org/D83255
2020-07-28 05:55:56 -05:00

62 lines
1.8 KiB
C++

//===-- PPCFixupKinds.h - PPC Specific Fixup Entries ------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_LIB_TARGET_POWERPC_MCTARGETDESC_PPCFIXUPKINDS_H
#define LLVM_LIB_TARGET_POWERPC_MCTARGETDESC_PPCFIXUPKINDS_H
#include "llvm/MC/MCFixup.h"
#undef PPC
namespace llvm {
namespace PPC {
enum Fixups {
// 24-bit PC relative relocation for direct branches like 'b' and 'bl'.
fixup_ppc_br24 = FirstTargetFixupKind,
// 24-bit PC relative relocation for direct branches like 'b' and 'bl' where
// the caller does not use the TOC.
fixup_ppc_br24_notoc,
/// 14-bit PC relative relocation for conditional branches.
fixup_ppc_brcond14,
/// 24-bit absolute relocation for direct branches like 'ba' and 'bla'.
fixup_ppc_br24abs,
/// 14-bit absolute relocation for conditional branches.
fixup_ppc_brcond14abs,
/// A 16-bit fixup corresponding to lo16(_foo) or ha16(_foo) for instrs like
/// 'li' or 'addis'.
fixup_ppc_half16,
/// A 14-bit fixup corresponding to lo16(_foo) with implied 2 zero bits for
/// instrs like 'std'.
fixup_ppc_half16ds,
// A 34-bit fixup corresponding to PC-relative paddi.
fixup_ppc_pcrel34,
// A 34-bit fixup corresponding to Non-PC-relative paddi.
fixup_ppc_imm34,
/// Not a true fixup, but ties a symbol to a call to __tls_get_addr for the
/// TLS general and local dynamic models, or inserts the thread-pointer
/// register number.
fixup_ppc_nofixup,
// Marker
LastTargetFixupKind,
NumTargetFixupKinds = LastTargetFixupKind - FirstTargetFixupKind
};
}
}
#endif