1 //===- LoongArchMatInt.h - Immediate materialisation - --------*- C++ -*--===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLVM_LIB_TARGET_LOONGARCH_MCTARGETDESC_MATINT_H 10 #define LLVM_LIB_TARGET_LOONGARCH_MCTARGETDESC_MATINT_H 11 12 #include "llvm/ADT/SmallVector.h" 13 #include <cstdint> 14 15 namespace llvm { 16 namespace LoongArchMatInt { 17 struct Inst { 18 unsigned Opc; 19 int64_t Imm; 20 Inst(unsigned Opc, int64_t Imm) : Opc(Opc), Imm(Imm) {} 21 }; 22 using InstSeq = SmallVector<Inst, 4>; 23 24 // Helper to generate an instruction sequence that will materialise the given 25 // immediate value into a register. 26 InstSeq generateInstSeq(int64_t Val); 27 } // end namespace LoongArchMatInt 28 } // end namespace llvm 29 30 #endif 31