xref: /freebsd/contrib/llvm-project/llvm/lib/Target/M68k/MCTargetDesc/M68kFixupKinds.h (revision 04eeddc0aa8e0a417a16eaf9d7d095207f4a8623)
1*04eeddc0SDimitry Andric //===-- M68kFixupKinds.h - M68k Specific Fixup Entries ----------*- C++ -*-===//
2fe6060f1SDimitry Andric //
3fe6060f1SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4fe6060f1SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5fe6060f1SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6fe6060f1SDimitry Andric //
7fe6060f1SDimitry Andric //===----------------------------------------------------------------------===//
8fe6060f1SDimitry Andric ///
9fe6060f1SDimitry Andric /// \file
10fe6060f1SDimitry Andric /// This file contains M68k specific fixup entries.
11fe6060f1SDimitry Andric ///
12fe6060f1SDimitry Andric //===----------------------------------------------------------------------===//
13fe6060f1SDimitry Andric 
14fe6060f1SDimitry Andric #ifndef LLVM_LIB_TARGET_M68k_MCTARGETDESC_M68kFIXUPKINDS_H
15fe6060f1SDimitry Andric #define LLVM_LIB_TARGET_M68k_MCTARGETDESC_M68kFIXUPKINDS_H
16fe6060f1SDimitry Andric 
17fe6060f1SDimitry Andric #include "llvm/MC/MCFixup.h"
18fe6060f1SDimitry Andric 
19fe6060f1SDimitry Andric namespace llvm {
getFixupKindLog2Size(unsigned Kind)20fe6060f1SDimitry Andric static inline unsigned getFixupKindLog2Size(unsigned Kind) {
21fe6060f1SDimitry Andric   switch (Kind) {
22fe6060f1SDimitry Andric   case FK_PCRel_1:
23fe6060f1SDimitry Andric   case FK_SecRel_1:
24fe6060f1SDimitry Andric   case FK_Data_1:
25fe6060f1SDimitry Andric     return 0;
26fe6060f1SDimitry Andric   case FK_PCRel_2:
27fe6060f1SDimitry Andric   case FK_SecRel_2:
28fe6060f1SDimitry Andric   case FK_Data_2:
29fe6060f1SDimitry Andric     return 1;
30fe6060f1SDimitry Andric   case FK_PCRel_4:
31fe6060f1SDimitry Andric   case FK_SecRel_4:
32fe6060f1SDimitry Andric   case FK_Data_4:
33fe6060f1SDimitry Andric     return 2;
34fe6060f1SDimitry Andric   }
35fe6060f1SDimitry Andric   llvm_unreachable("invalid fixup kind!");
36fe6060f1SDimitry Andric }
37fe6060f1SDimitry Andric 
getFixupForSize(unsigned Size,bool isPCRel)38fe6060f1SDimitry Andric static inline MCFixupKind getFixupForSize(unsigned Size, bool isPCRel) {
39fe6060f1SDimitry Andric   switch (Size) {
40fe6060f1SDimitry Andric   case 8:
41fe6060f1SDimitry Andric     return isPCRel ? FK_PCRel_1 : FK_Data_1;
42fe6060f1SDimitry Andric   case 16:
43fe6060f1SDimitry Andric     return isPCRel ? FK_PCRel_2 : FK_Data_2;
44fe6060f1SDimitry Andric   case 32:
45fe6060f1SDimitry Andric     return isPCRel ? FK_PCRel_4 : FK_Data_4;
46fe6060f1SDimitry Andric   case 64:
47fe6060f1SDimitry Andric     return isPCRel ? FK_PCRel_8 : FK_Data_8;
48fe6060f1SDimitry Andric   }
49fe6060f1SDimitry Andric   llvm_unreachable("Invalid generic fixup size!");
50fe6060f1SDimitry Andric }
51fe6060f1SDimitry Andric 
52fe6060f1SDimitry Andric } // namespace llvm
53fe6060f1SDimitry Andric 
54*04eeddc0SDimitry Andric #endif // LLVM_LIB_TARGET_M68k_MCTARGETDESC_M68kFIXUPKINDS_H
55