# X86 features
const JL_X86_sse3 = UInt32(0)
const JL_X86_pclmul = UInt32(1)
const JL_X86_ssse3 = UInt32(9)
const JL_X86_fma = UInt32(12)
const JL_X86_cx16 = UInt32(13)
const JL_X86_sse41 = UInt32(19)
const JL_X86_sse42 = UInt32(20)
const JL_X86_movbe = UInt32(22)
const JL_X86_popcnt = UInt32(23)
const JL_X86_aes = UInt32(25)
const JL_X86_xsave = UInt32(26)
const JL_X86_avx = UInt32(28)
const JL_X86_f16c = UInt32(29)
const JL_X86_rdrnd = UInt32(30)
const JL_X86_fsgsbase = UInt32(32 * 2 + 0)
const JL_X86_bmi = UInt32(32 * 2 + 3)
const JL_X86_avx2 = UInt32(32 * 2 + 5)
const JL_X86_bmi2 = UInt32(32 * 2 + 8)
const JL_X86_rtm = UInt32(32 * 2 + 11)
const JL_X86_avx512f = UInt32(32 * 2 + 16)
const JL_X86_avx512dq = UInt32(32 * 2 + 17)
const JL_X86_rdseed = UInt32(32 * 2 + 18)
const JL_X86_adx = UInt32(32 * 2 + 19)
const JL_X86_avx512ifma = UInt32(32 * 2 + 21)
const JL_X86_clflushopt = UInt32(32 * 2 + 23)
const JL_X86_clwb = UInt32(32 * 2 + 24)
const JL_X86_avx512pf = UInt32(32 * 2 + 26)
const JL_X86_avx512er = UInt32(32 * 2 + 27)
const JL_X86_avx512cd = UInt32(32 * 2 + 28)
const JL_X86_sha = UInt32(32 * 2 + 29)
const JL_X86_avx512bw = UInt32(32 * 2 + 30)
const JL_X86_avx512vl = UInt32(32 * 2 + 31)
const JL_X86_prefetchwt1 = UInt32(32 * 3 + 0)
const JL_X86_avx512vbmi = UInt32(32 * 3 + 1)
const JL_X86_pku = UInt32(32 * 3 + 4)
const JL_X86_waitpkg = UInt32(32 * 3 + 5)
const JL_X86_avx512vbmi2 = UInt32(32 * 3 + 6)
const JL_X86_shstk = UInt32(32 * 3 + 7)
const JL_X86_gfni = UInt32(32 * 3 + 8)
const JL_X86_vaes = UInt32(32 * 3 + 9)
const JL_X86_vpclmulqdq = UInt32(32 * 3 + 10)
const JL_X86_avx512vnni = UInt32(32 * 3 + 11)
const JL_X86_avx512bitalg = UInt32(32 * 3 + 12)
const JL_X86_avx512vpopcntdq = UInt32(32 * 3 + 14)
const JL_X86_rdpid = UInt32(32 * 3 + 22)
const JL_X86_cldemote = UInt32(32 * 3 + 25)
const JL_X86_movdiri = UInt32(32 * 3 + 27)
const JL_X86_movdir64b = UInt32(32 * 3 + 28)
const JL_X86_enqcmd = UInt32(32 * 3 + 29)
const JL_X86_avx512vp2intersect = UInt32(32 * 4 + 8)
const JL_X86_serialize = UInt32(32 * 4 + 14)
const JL_X86_tsxldtrk = UInt32(32 * 4 + 16)
const JL_X86_pconfig = UInt32(32 * 4 + 18)
const JL_X86_amx_bf16 = UInt32(32 * 4 + 22)
const JL_X86_amx_tile = UInt32(32 * 4 + 24)
const JL_X86_amx_int8 = UInt32(32 * 4 + 25)
const JL_X86_sahf = UInt32(32 * 5 + 0)
const JL_X86_lzcnt = UInt32(32 * 5 + 5)
const JL_X86_sse4a = UInt32(32 * 5 + 6)
const JL_X86_prfchw = UInt32(32 * 5 + 8)
const JL_X86_xop = UInt32(32 * 5 + 11)
const JL_X86_lwp = UInt32(32 * 5 + 15)
const JL_X86_fma4 = UInt32(32 * 5 + 16)
const JL_X86_tbm = UInt32(32 * 5 + 21)
const JL_X86_mwaitx = UInt32(32 * 5 + 29)
const JL_X86_xsaveopt = UInt32(32 * 7 + 0)
const JL_X86_xsavec = UInt32(32 * 7 + 1)
const JL_X86_xsaves = UInt32(32 * 7 + 3)
const JL_X86_clzero = UInt32(32 * 8 + 0)
const JL_X86_wbnoinvd = UInt32(32 * 8 + 9)
const JL_X86_avx512bf16 = UInt32(32 * 9 + 5)
const JL_X86_ptwrite = UInt32(32 * 10 + 4)

# AArch32 features
const JL_AArch32_neon = UInt32(12)
const JL_AArch32_vfp3 = UInt32(13)
const JL_AArch32_vfp4 = UInt32(16)
const JL_AArch32_hwdiv_arm = UInt32(17)
const JL_AArch32_hwdiv = UInt32(18)
const JL_AArch32_d32 = UInt32(19)
const JL_AArch32_crypto = UInt32(32 + 0)
const JL_AArch32_crc = UInt32(32 + 4)
const JL_AArch32_aclass = UInt32(32 * 2 + 0)
const JL_AArch32_rclass = UInt32(32 * 2 + 1)
const JL_AArch32_mclass = UInt32(32 * 2 + 2)
const JL_AArch32_v7 = UInt32(32 * 2 + 3)
const JL_AArch32_v8 = UInt32(32 * 2 + 4)
const JL_AArch32_v8_1a = UInt32(32 * 2 + 5)
const JL_AArch32_v8_2a = UInt32(32 * 2 + 6)
const JL_AArch32_v8_3a = UInt32(32 * 2 + 7)
const JL_AArch32_v8_m_main = UInt32(32 * 2 + 8)
const JL_AArch32_v8_4a = UInt32(32 * 2 + 9)
const JL_AArch32_v8_5a = UInt32(32 * 2 + 10)
const JL_AArch32_v8_6a = UInt32(32 * 2 + 11)

# AArch64 features
const JL_AArch64_aes = UInt32(4)
const JL_AArch64_sha2 = UInt32(6)
const JL_AArch64_crc = UInt32(7)
const JL_AArch64_lse = UInt32(8)
const JL_AArch64_fullfp16 = UInt32(9)
const JL_AArch64_rdm = UInt32(12)
const JL_AArch64_jsconv = UInt32(13)
const JL_AArch64_complxnum = UInt32(14)
const JL_AArch64_rcpc = UInt32(15)
const JL_AArch64_ccpp = UInt32(16)
const JL_AArch64_sha3 = UInt32(17)
const JL_AArch64_sm4 = UInt32(19)
const JL_AArch64_dotprod = UInt32(20)
const JL_AArch64_sve = UInt32(22)
const JL_AArch64_fp16fml = UInt32(23)
const JL_AArch64_dit = UInt32(24)
const JL_AArch64_rcpc_immo = UInt32(26)
const JL_AArch64_fmi = UInt32(27)
const JL_AArch64_ssbs = UInt32(28)
const JL_AArch64_sb = UInt32(29)
const JL_AArch64_pa = UInt32(30)
const JL_AArch64_ccdp = UInt32(32 + 0)
const JL_AArch64_sve2 = UInt32(32 + 1)
const JL_AArch64_sve2_aes = UInt32(32 + 3)
const JL_AArch64_sve2_bitperm = UInt32(32 + 4)
const JL_AArch64_sve2_sha3 = UInt32(32 + 5)
const JL_AArch64_sve2_sm4 = UInt32(32 + 6)
const JL_AArch64_altnzcv = UInt32(32 + 7)
const JL_AArch64_fptoint = UInt32(32 + 8)
const JL_AArch64_f32mm = UInt32(32 + 10)
const JL_AArch64_f64mm = UInt32(32 + 11)
const JL_AArch64_i8mm = UInt32(32 + 13)
const JL_AArch64_bf16 = UInt32(32 + 14)
const JL_AArch64_rand = UInt32(32 + 16)
const JL_AArch64_bti = UInt32(32 + 17)
const JL_AArch64_mte = UInt32(32 + 18)
const JL_AArch64_v8_1a = UInt32(32 * 2 + 0)
const JL_AArch64_v8_2a = UInt32(32 * 2 + 1)
const JL_AArch64_v8_3a = UInt32(32 * 2 + 2)
const JL_AArch64_v8_4a = UInt32(32 * 2 + 3)
const JL_AArch64_v8_5a = UInt32(32 * 2 + 4)
const JL_AArch64_v8_6a = UInt32(32 * 2 + 5)

