xref: /llvm-project/llvm/lib/Target/M68k/MCTargetDesc/M68kFixupKinds.h (revision 4a7890c67c42279687313a65a086cade5744458b)
16bf22ae4SJim Lin //===-- M68kFixupKinds.h - M68k Specific Fixup Entries ----------*- C++ -*-===//
28dddc152SMin-Yih Hsu //
38dddc152SMin-Yih Hsu // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
48dddc152SMin-Yih Hsu // See https://llvm.org/LICENSE.txt for license information.
58dddc152SMin-Yih Hsu // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
68dddc152SMin-Yih Hsu //
78dddc152SMin-Yih Hsu //===----------------------------------------------------------------------===//
88dddc152SMin-Yih Hsu ///
98dddc152SMin-Yih Hsu /// \file
108dddc152SMin-Yih Hsu /// This file contains M68k specific fixup entries.
118dddc152SMin-Yih Hsu ///
128dddc152SMin-Yih Hsu //===----------------------------------------------------------------------===//
138dddc152SMin-Yih Hsu 
148dddc152SMin-Yih Hsu #ifndef LLVM_LIB_TARGET_M68k_MCTARGETDESC_M68kFIXUPKINDS_H
158dddc152SMin-Yih Hsu #define LLVM_LIB_TARGET_M68k_MCTARGETDESC_M68kFIXUPKINDS_H
168dddc152SMin-Yih Hsu 
178dddc152SMin-Yih Hsu #include "llvm/MC/MCFixup.h"
188dddc152SMin-Yih Hsu 
198dddc152SMin-Yih Hsu namespace llvm {
getFixupKindLog2Size(unsigned Kind)208dddc152SMin-Yih Hsu static inline unsigned getFixupKindLog2Size(unsigned Kind) {
218dddc152SMin-Yih Hsu   switch (Kind) {
228dddc152SMin-Yih Hsu   case FK_PCRel_1:
238dddc152SMin-Yih Hsu   case FK_SecRel_1:
248dddc152SMin-Yih Hsu   case FK_Data_1:
258dddc152SMin-Yih Hsu     return 0;
268dddc152SMin-Yih Hsu   case FK_PCRel_2:
278dddc152SMin-Yih Hsu   case FK_SecRel_2:
288dddc152SMin-Yih Hsu   case FK_Data_2:
298dddc152SMin-Yih Hsu     return 1;
308dddc152SMin-Yih Hsu   case FK_PCRel_4:
318dddc152SMin-Yih Hsu   case FK_SecRel_4:
328dddc152SMin-Yih Hsu   case FK_Data_4:
338dddc152SMin-Yih Hsu     return 2;
348dddc152SMin-Yih Hsu   }
358dddc152SMin-Yih Hsu   llvm_unreachable("invalid fixup kind!");
368dddc152SMin-Yih Hsu }
378dddc152SMin-Yih Hsu 
getFixupForSize(unsigned Size,bool isPCRel)388dddc152SMin-Yih Hsu static inline MCFixupKind getFixupForSize(unsigned Size, bool isPCRel) {
398dddc152SMin-Yih Hsu   switch (Size) {
408dddc152SMin-Yih Hsu   case 8:
418dddc152SMin-Yih Hsu     return isPCRel ? FK_PCRel_1 : FK_Data_1;
428dddc152SMin-Yih Hsu   case 16:
438dddc152SMin-Yih Hsu     return isPCRel ? FK_PCRel_2 : FK_Data_2;
448dddc152SMin-Yih Hsu   case 32:
458dddc152SMin-Yih Hsu     return isPCRel ? FK_PCRel_4 : FK_Data_4;
468dddc152SMin-Yih Hsu   case 64:
478dddc152SMin-Yih Hsu     return isPCRel ? FK_PCRel_8 : FK_Data_8;
488dddc152SMin-Yih Hsu   }
498dddc152SMin-Yih Hsu   llvm_unreachable("Invalid generic fixup size!");
508dddc152SMin-Yih Hsu }
518dddc152SMin-Yih Hsu 
528dddc152SMin-Yih Hsu } // namespace llvm
538dddc152SMin-Yih Hsu 
54*4a7890c6SJim Lin #endif // LLVM_LIB_TARGET_M68k_MCTARGETDESC_M68kFIXUPKINDS_H
55