181ad6265SDimitry Andric //= LoongArchBaseInfo.cpp - Top level definitions for LoongArch MC -*- C++ -*-// 281ad6265SDimitry Andric // 381ad6265SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 481ad6265SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 581ad6265SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 681ad6265SDimitry Andric // 781ad6265SDimitry Andric //===----------------------------------------------------------------------===// 881ad6265SDimitry Andric // 981ad6265SDimitry Andric // This file implements helper functions for the LoongArch target useful for the 1081ad6265SDimitry Andric // compiler back-end and the MC libraries. 1181ad6265SDimitry Andric // 1281ad6265SDimitry Andric //===----------------------------------------------------------------------===// 1381ad6265SDimitry Andric 1481ad6265SDimitry Andric #include "LoongArchBaseInfo.h" 1581ad6265SDimitry Andric #include "llvm/ADT/ArrayRef.h" 1681ad6265SDimitry Andric #include "llvm/ADT/Triple.h" 1781ad6265SDimitry Andric #include "llvm/MC/MCSubtargetInfo.h" 1881ad6265SDimitry Andric 1981ad6265SDimitry Andric namespace llvm { 2081ad6265SDimitry Andric 2181ad6265SDimitry Andric namespace LoongArchABI { 2281ad6265SDimitry Andric 2381ad6265SDimitry Andric ABI getTargetABI(StringRef ABIName) { 2481ad6265SDimitry Andric auto TargetABI = StringSwitch<ABI>(ABIName) 2581ad6265SDimitry Andric .Case("ilp32s", ABI_ILP32S) 2681ad6265SDimitry Andric .Case("ilp32f", ABI_ILP32F) 2781ad6265SDimitry Andric .Case("ilp32d", ABI_ILP32D) 2881ad6265SDimitry Andric .Case("lp64s", ABI_LP64S) 2981ad6265SDimitry Andric .Case("lp64f", ABI_LP64F) 3081ad6265SDimitry Andric .Case("lp64d", ABI_LP64D) 3181ad6265SDimitry Andric .Default(ABI_Unknown); 3281ad6265SDimitry Andric return TargetABI; 3381ad6265SDimitry Andric } 3481ad6265SDimitry Andric 3581ad6265SDimitry Andric // FIXME: other register? 3681ad6265SDimitry Andric MCRegister getBPReg() { return LoongArch::R31; } 3781ad6265SDimitry Andric 38*972a253aSDimitry Andric } // end namespace LoongArchABI 3981ad6265SDimitry Andric 40*972a253aSDimitry Andric } // end namespace llvm 41