9#ifndef LLVM_SUPPORT_ARMWINEH_H
10#define LLVM_SUPPORT_ARMWINEH_H
122 "unpacked form required for this operation");
129 "packed form required for this operation");
135 "packed form required for this operation");
136 return (((
UnwindData & 0x00001ffc) >> 2) << 1);
141 "packed form required for this operation");
148 "packed form required for this operation");
154 "packed form required for this operation");
160 "packed form required for this operation");
166 "packed form required for this operation");
172 "packed form required for this operation");
174 "L flag must be set, chaining requires r11 and LR");
176 "r11 must not be included in Reg; C implies r11");
182 "packed form required for this operation");
202 if (Adjustment >= 0x3f4)
203 return (Adjustment & 0x3) + 1;
209LLVM_ABI std::pair<uint16_t, uint32_t>
243 "unpacked form required for this operation");
250 "packed form required for this operation");
256 "packed form required for this operation");
257 return (((
UnwindData & 0x00001ffc) >> 2) << 2);
262 "packed form required for this operation");
268 "packed form required for this operation");
274 "packed form required for this operation");
280 "packed form required for this operation");
286 "packed form required for this operation");
403 return (
ES & 0x0003ffff);
408 return ((
ES & 0x000c0000) >> 18);
412 return ((
ES & 0x000f0000) >> 18);
417 return ((
ES & 0x00f00000) >> 20);
422 return ((
ES & 0xff000000) >> 24);
426 return ((
ES & 0xffc00000) >> 22);
430struct ExceptionDataRecord;
431inline size_t HeaderWords(
const ExceptionDataRecord &XR);
441 return (
Data[0] & 0x0003ffff);
453 return (
Data[0] & 0x000C0000) >> 18;
457 return ((
Data[0] & 0x00100000) >> 20);
461 return ((
Data[0] & 0x00200000) >> 21);
466 return ((
Data[0] & 0x00400000) >> 22);
472 return (
Data[0] & 0x07C00000) >> 22;
473 return (
Data[0] & 0x0f800000) >> 23;
475 return Data[1] & 0x0000ffff;
481 return (
Data[0] & 0xf8000000) >> 27;
482 return (
Data[0] & 0xf0000000) >> 28;
484 return (
Data[1] & 0x00ff0000) >> 16;
488 assert(
E() == 0 &&
"epilogue scopes are only present when the E bit is 0");
502 assert(
X() &&
"Exception Handler RVA is only valid if the X bit is set");
507 assert(
X() &&
"Exception Handler RVA is only valid if the X bit is set");
515 return (XR.
Data[0] & 0xffc00000) ? 1 : 2;
516 return (XR.
Data[0] & 0xff800000) ? 1 : 2;
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
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...
LLVM_ABI 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