LLVM 24.0.0git
AArch64ExpandImm.h
Go to the documentation of this file.
1//===- AArch64ExpandImm.h - AArch64 Immediate Expansion ---------*- 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// This file contains the AArch64 immediate expansion stuff.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_LIB_TARGET_AARCH64_MCTARGETDESC_AARCH64EXPANDIMM_H
14#define LLVM_LIB_TARGET_AARCH64_MCTARGETDESC_AARCH64EXPANDIMM_H
15
16#include "llvm/ADT/APInt.h"
18
19namespace llvm {
20
22
23namespace AArch64_IMM {
24
26 unsigned Opcode;
27 std::optional<uint32_t> Op1;
28 std::optional<uint32_t> Op2;
29};
30
32 unsigned Opcode;
33};
34
35void expandMOVImm(uint64_t Imm, unsigned BitSize,
37
38void expandMOVAddr(unsigned Opcode, unsigned TargetFlags, bool IsTargetMachO,
40
42 const AArch64Subtarget &ST);
43
44} // end namespace AArch64_IMM
45
46} // end namespace llvm
47
48#endif
unsigned Imm
unsigned uint64_t
This file implements a class to represent arbitrary precision integral constant values and operations...
This file defines the SmallVector class.
Class for arbitrary precision integers.
Definition APInt.h:78
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
void expandMOVAddr(unsigned Opcode, unsigned TargetFlags, bool IsTargetMachO, SmallVectorImpl< AddrInsnModel > &Insn)
bool expandVectorMOVImm(APInt Imm, SmallVectorImpl< ImmInsnModel > &Insn, const AArch64Subtarget &ST)
void expandMOVImm(uint64_t Imm, unsigned BitSize, SmallVectorImpl< ImmInsnModel > &Insn)
Expand a MOVi32imm or MOVi64imm pseudo instruction to one or more real move-immediate instructions to...
This is an optimization pass for GlobalISel generic memory operations.
std::optional< uint32_t > Op1
std::optional< uint32_t > Op2