9#ifndef LLVM_SUPPORT_ARMWINEH_H
10#define LLVM_SUPPORT_ARMWINEH_H
121 "unpacked form required for this operation");
128 "packed form required for this operation");
134 "packed form required for this operation");
135 return (((
UnwindData & 0x00001ffc) >> 2) << 1);
140 "packed form required for this operation");
147 "packed form required for this operation");
153 "packed form required for this operation");
159 "packed form required for this operation");
165 "packed form required for this operation");
171 "packed form required for this operation");
173 "L flag must be set, chaining requires r11 and LR");
175 "r11 must not be included in Reg; C implies r11");
181 "packed form required for this operation");
201 if (Adjustment >= 0x3f4)
202 return (Adjustment & 0x3) + 1;
209 bool Prologue =
true);
242 "unpacked form required for this operation");
249 "packed form required for this operation");
255 "packed form required for this operation");
256 return (((
UnwindData & 0x00001ffc) >> 2) << 2);
261 "packed form required for this operation");
267 "packed form required for this operation");
273 "packed form required for this operation");
279 "packed form required for this operation");
285 "packed form required for this operation");
402 return (
ES & 0x0003ffff);
407 return ((
ES & 0x000c0000) >> 18);
411 return ((
ES & 0x000f0000) >> 18);
416 return ((
ES & 0x00f00000) >> 20);
421 return ((
ES & 0xff000000) >> 24);
425 return ((
ES & 0xffc00000) >> 22);
429struct ExceptionDataRecord;
430inline size_t HeaderWords(
const ExceptionDataRecord &XR);
440 return (
Data[0] & 0x0003ffff);
452 return (
Data[0] & 0x000C0000) >> 18;
456 return ((
Data[0] & 0x00100000) >> 20);
460 return ((
Data[0] & 0x00200000) >> 21);
465 return ((
Data[0] & 0x00400000) >> 22);
471 return (
Data[0] & 0x07C00000) >> 22;
472 return (
Data[0] & 0x0f800000) >> 23;
474 return Data[1] & 0x0000ffff;
480 return (
Data[0] & 0xf8000000) >> 27;
481 return (
Data[0] & 0xf0000000) >> 28;
483 return (
Data[1] & 0x00ff0000) >> 16;
487 assert(
E() == 0 &&
"epilogue scopes are only present when the E bit is 0");
495 const uint8_t *ByteCode =
496 reinterpret_cast<const uint8_t *
>(&
Data[
Offset]);
501 assert(
X() &&
"Exception Handler RVA is only valid if the X bit is set");
506 assert(
X() &&
"Exception Handler RVA is only valid if the X bit is set");
514 return (XR.
Data[0] & 0xffc00000) ? 1 : 2;
515 return (XR.
Data[0] & 0xff800000) ? 1 : 2;
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
RuntimeFunctionARM64 - An entry in the table of procedure data (.pdata)
RuntimeFunctionARM64(const support::ulittle32_t *Data)
uint32_t PackedUnwindData() const
RuntimeFunctionARM64(const support::ulittle32_t BeginAddress, const support::ulittle32_t UnwindData)
uint32_t FunctionLength() const
const support::ulittle32_t BeginAddress
uint32_t ExceptionInformationRVA() const
const support::ulittle32_t UnwindData
uint16_t FrameSize() const
RuntimeFunctionFlag Flag() const
RuntimeFunction - An entry in the table of procedure data (.pdata)
const support::ulittle32_t UnwindData
RuntimeFunctionFlag Flag() const
uint32_t PackedUnwindData() const
RuntimeFunction(const support::ulittle32_t BeginAddress, const support::ulittle32_t UnwindData)
const support::ulittle32_t BeginAddress
uint32_t FunctionLength() const
RuntimeFunction(const support::ulittle32_t *Data)
uint16_t StackAdjust() const
uint32_t ExceptionInformationRVA() const
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
@ RFF_Reserved
packed entry representing a fragment
@ RFF_Packed
unpacked entry
@ RFF_PackedFragment
packed entry
bool EpilogueFolding(const RuntimeFunction &RF)
Epilogue - pseudo-flag derived from Stack Adjust indicating that the epilogue has stack adjustment co...
std::pair< uint16_t, uint32_t > SavedRegisterMask(const RuntimeFunction &RF, bool Prologue=true)
SavedRegisterMask - Utility function to calculate the set of saved general purpose (r0-r15) and VFP (...
bool PrologueFolding(const RuntimeFunction &RF)
PrologueFolding - pseudo-flag derived from Stack Adjust indicating that the prologue has stack adjust...
uint16_t StackAdjustment(const RuntimeFunction &RF)
StackAdjustment - calculated stack adjustment in words.
size_t HeaderWords(const ExceptionDataRecord &XR)
@ RT_B
return via pop {pc} (L flag must be set)
@ RT_NoEpilogue
32-bit branch
This is an optimization pass for GlobalISel generic memory operations.
@ WinEH
Windows Exception Handling.
ExceptionDataRecord - An entry in the table of exception data (.xdata)
uint8_t Condition() const
const support::ulittle32_t ES
uint8_t ResAArch64() const
uint32_t EpilogueStartOffset() const
uint8_t EpilogueStartIndexARM() const
EpilogueScope(const support::ulittle32_t Data)
uint16_t EpilogueStartIndexAArch64() const
ArrayRef< uint8_t > UnwindByteCode() const
uint32_t FunctionLengthInBytesAArch64() const
uint32_t ExceptionHandlerRVA() const
const support::ulittle32_t * Data
uint32_t FunctionLength() const
ArrayRef< support::ulittle32_t > EpilogueScopes() const
uint32_t ExceptionHandlerParameter() const
uint32_t FunctionLengthInBytesARM() const
uint8_t CodeWords() const
ExceptionDataRecord(const support::ulittle32_t *Data, bool isAArch64)
uint16_t EpilogueCount() const