LLVM 20.0.0git
PPCCCState.h
Go to the documentation of this file.
1//===---- PPCCCState.h - CCState with PowerPC specific extensions -----------===//
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 PPCCCSTATE_H
10#define PPCCCSTATE_H
11
12#include "PPCISelLowering.h"
13#include "llvm/ADT/BitVector.h"
16
17namespace llvm {
18
19class PPCCCState : public CCState {
20public:
21
22 void
24 void
26
27private:
28
29 // Records whether the value has been lowered from an ppcf128.
30 SmallVector<bool, 4> OriginalArgWasPPCF128;
31
32public:
35 : CCState(CC, isVarArg, MF, locs, C) {}
36
37 bool WasOriginalArgPPCF128(unsigned ValNo) { return OriginalArgWasPPCF128[ValNo]; }
38 void clearWasPPCF128() { OriginalArgWasPPCF128.clear(); }
39};
40
41class AIXCCState : public CCState {
42private:
43 BitVector IsFixed;
44
45public:
48 : CCState(CC, IsVarArg, MF, Locs, C) {}
49
51 CCAssignFn Fn) {
52 // All formal arguments are fixed.
53 IsFixed.resize(Ins.size(), true);
55 }
56
58 CCAssignFn Fn) {
59 // Record whether the call operand was a fixed argument.
60 IsFixed.resize(Outs.size(), false);
61 for (unsigned ValNo = 0, E = Outs.size(); ValNo != E; ++ValNo)
62 if (Outs[ValNo].IsFixed)
63 IsFixed.set(ValNo);
64
66 }
67
68 bool isFixed(unsigned ValNo) const { return IsFixed.test(ValNo); }
69};
70
71} // end namespace llvm
72
73#endif
This file implements the BitVector class.
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
This file defines the SmallVector class.
void AnalyzeFormalArguments(const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn)
Definition: PPCCCState.h:50
AIXCCState(CallingConv::ID CC, bool IsVarArg, MachineFunction &MF, SmallVectorImpl< CCValAssign > &Locs, LLVMContext &C)
Definition: PPCCCState.h:46
bool isFixed(unsigned ValNo) const
Definition: PPCCCState.h:68
void AnalyzeCallOperands(const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn)
Definition: PPCCCState.h:57
bool test(unsigned Idx) const
Definition: BitVector.h:461
void resize(unsigned N, bool t=false)
resize - Grow or shrink the bitvector.
Definition: BitVector.h:341
CCState - This class holds information needed while lowering arguments and return values.
void AnalyzeCallOperands(const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn)
AnalyzeCallOperands - Analyze the outgoing arguments to a call, incorporating info about the passed v...
bool isVarArg() const
void AnalyzeFormalArguments(const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn)
AnalyzeFormalArguments - Analyze an array of argument values, incorporating info about the formals in...
This is an important class for using LLVM in a threaded context.
Definition: LLVMContext.h:67
void PreAnalyzeFormalArguments(const SmallVectorImpl< ISD::InputArg > &Ins)
Definition: PPCCCState.cpp:24
PPCCCState(CallingConv::ID CC, bool isVarArg, MachineFunction &MF, SmallVectorImpl< CCValAssign > &locs, LLVMContext &C)
Definition: PPCCCState.h:33
void clearWasPPCF128()
Definition: PPCCCState.h:38
bool WasOriginalArgPPCF128(unsigned ValNo)
Definition: PPCCCState.h:37
void PreAnalyzeCallOperands(const SmallVectorImpl< ISD::OutputArg > &Outs)
Definition: PPCCCState.cpp:14
size_t size() const
Definition: SmallVector.h:78
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
Definition: SmallVector.h:573
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
Definition: SmallVector.h:1196
@ C
The default llvm calling convention, compatible with C.
Definition: CallingConv.h:34
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
bool CCAssignFn(unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
CCAssignFn - This function assigns a location for Val, updating State to reflect the change.