brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · f258c59 Raw
78 lines · c
1#include <mach/mach.h>2#include <stdint.h>3 4// Define the SVE/SME/SME2 thread status structures5// flavors, and sizes so this can build against an6// older SDK which does not have these definitions7// yet.8 9#if !defined(ARM_SME_STATE)10 11#define _STRUCT_ARM_SME_STATE struct arm_sme_state12_STRUCT_ARM_SME_STATE {13  uint64_t svcr;14  uint64_t tpidr2_el0;15  uint16_t svl_b;16};17 18#define _STRUCT_ARM_SVE_Z_STATE struct arm_sve_z_state19_STRUCT_ARM_SVE_Z_STATE { char z[16][256]; }20__attribute__((aligned(alignof(unsigned int))));21 22#define _STRUCT_ARM_SVE_P_STATE struct arm_sve_p_state23_STRUCT_ARM_SVE_P_STATE { char p[16][256 / 8]; }24__attribute__((aligned(alignof(unsigned int))));25 26#define _STRUCT_ARM_SME_ZA_STATE struct arm_sme_za_state27_STRUCT_ARM_SME_ZA_STATE { char za[4096]; }28__attribute__((aligned(alignof(unsigned int))));29 30#define _STRUCT_ARM_SME2_STATE struct arm_sme2_state31_STRUCT_ARM_SME2_STATE { char zt0[64]; }32__attribute__((aligned(alignof(unsigned int))));33 34#define ARM_SME_STATE 2835#define ARM_SVE_Z_STATE1 2936#define ARM_SVE_Z_STATE2 3037#define ARM_SVE_P_STATE 3138#define ARM_SME_ZA_STATE1 3239#define ARM_SME_ZA_STATE2 3340#define ARM_SME_ZA_STATE3 3441#define ARM_SME_ZA_STATE4 3542#define ARM_SME_ZA_STATE5 3643#define ARM_SME_ZA_STATE6 3744#define ARM_SME_ZA_STATE7 3845#define ARM_SME_ZA_STATE8 3946#define ARM_SME_ZA_STATE9 4047#define ARM_SME_ZA_STATE10 4148#define ARM_SME_ZA_STATE11 4249#define ARM_SME_ZA_STATE12 4350#define ARM_SME_ZA_STATE13 4451#define ARM_SME_ZA_STATE14 4552#define ARM_SME_ZA_STATE15 4653#define ARM_SME_ZA_STATE16 4754#define ARM_SME2_STATE 4855 56typedef _STRUCT_ARM_SME_STATE arm_sme_state_t;57typedef _STRUCT_ARM_SVE_Z_STATE arm_sve_z_state_t;58typedef _STRUCT_ARM_SVE_P_STATE arm_sve_p_state_t;59typedef _STRUCT_ARM_SME_ZA_STATE arm_sme_za_state_t;60typedef _STRUCT_ARM_SME2_STATE arm_sme2_state_t;61 62#define ARM_SME_STATE_COUNT                                                    \63  ((mach_msg_type_number_t)(sizeof(arm_sme_state_t) / sizeof(uint32_t)))64 65#define ARM_SVE_Z_STATE_COUNT                                                  \66  ((mach_msg_type_number_t)(sizeof(arm_sve_z_state_t) / sizeof(uint32_t)))67 68#define ARM_SVE_P_STATE_COUNT                                                  \69  ((mach_msg_type_number_t)(sizeof(arm_sve_p_state_t) / sizeof(uint32_t)))70 71#define ARM_SME_ZA_STATE_COUNT                                                 \72  ((mach_msg_type_number_t)(sizeof(arm_sme_za_state_t) / sizeof(uint32_t)))73 74#define ARM_SME2_STATE_COUNT                                                   \75  ((mach_msg_type_number_t)(sizeof(arm_sme2_state_t) / sizeof(uint32_t)))76 77#endif // !defined(ARM_SME_STATE)78