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 Andricstatic 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 Andricstatic 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