// @@@begin of avx_type_def.h | |
static const uint64_t T_NONE = 0ull; | |
// low 3 bit | |
static const uint64_t T_N1 = 1ull; | |
static const uint64_t T_N2 = 2ull; | |
static const uint64_t T_N4 = 3ull; | |
static const uint64_t T_N8 = 4ull; | |
static const uint64_t T_N16 = 5ull; | |
static const uint64_t T_N32 = 6ull; | |
static const uint64_t T_NX_MASK = 7ull; | |
static const uint64_t T_DUP = T_NX_MASK;//1 << 4, // N = (8, 32, 64) | |
static const uint64_t T_N_VL = 1ull << 3; // N * (1, 2, 4) for VL | |
static const uint64_t T_APX = 1ull << 4; | |
static const uint64_t T_66 = 1ull << 5; // pp = 1 | |
static const uint64_t T_F3 = 1ull << 6; // pp = 2 | |
static const uint64_t T_ER_R = 1ull << 7; // reg{er} | |
static const uint64_t T_0F = 1ull << 8; | |
static const uint64_t T_0F38 = 1ull << 9; | |
static const uint64_t T_0F3A = 1ull << 10; | |
static const uint64_t T_L0 = 1ull << 11; | |
static const uint64_t T_L1 = 1ull << 12; | |
static const uint64_t T_W0 = 1ull << 13; | |
static const uint64_t T_W1 = 1ull << 14; | |
static const uint64_t T_EW0 = 1ull << 15; | |
static const uint64_t T_EW1 = 1ull << 16; | |
static const uint64_t T_YMM = 1ull << 17; // support YMM, ZMM | |
static const uint64_t T_EVEX = 1ull << 18; | |
static const uint64_t T_ER_X = 1ull << 19; // xmm{er} | |
static const uint64_t T_ER_Y = 1ull << 20; // ymm{er} | |
static const uint64_t T_ER_Z = 1ull << 21; // zmm{er} | |
static const uint64_t T_SAE_X = 1ull << 22; // xmm{sae} | |
static const uint64_t T_SAE_Y = 1ull << 23; // ymm{sae} | |
static const uint64_t T_SAE_Z = 1ull << 24; // zmm{sae} | |
static const uint64_t T_MUST_EVEX = 1ull << 25; // contains T_EVEX | |
static const uint64_t T_B32 = 1ull << 26; // m32bcst | |
static const uint64_t T_B64 = 1ull << 27; // m64bcst | |
static const uint64_t T_B16 = T_B32 | T_B64; // m16bcst (Be careful) | |
static const uint64_t T_M_K = 1ull << 28; // mem{k} | |
static const uint64_t T_VSIB = 1ull << 29; | |
static const uint64_t T_MEM_EVEX = 1ull << 30; // use evex if mem | |
static const uint64_t T_FP16 = 1ull << 31; // avx512-fp16 | |
static const uint64_t T_MAP5 = T_FP16 | T_0F; | |
static const uint64_t T_MAP6 = T_FP16 | T_0F38; | |
static const uint64_t T_NF = 1ull << 32; // T_nf | |
static const uint64_t T_CODE1_IF1 = 1ull << 33; // code|=1 if !r.isBit(8) | |
static const uint64_t T_ND1 = 1ull << 35; // ND=1 | |
static const uint64_t T_ZU = 1ull << 36; // ND=ZU | |
static const uint64_t T_F2 = 1ull << 37; // pp = 3 | |
// T_66 = 1, T_F3 = 2, T_F2 = 3 | |
static inline uint32_t getPP(uint64_t type) { return (type & T_66) ? 1 : (type & T_F3) ? 2 : (type & T_F2) ? 3 : 0; } | |
// @@@end of avx_type_def.h |