Cpuid C-APIs Legacy - 5.2 English - 68552

AOCL API Guide (68552)

Document ID
68552
Release Date
2025-12-29
Version
5.2 English

Defines

alcpu_is_amd() alci_is_amd(ALCI_CURRENT_CPU_NUM)#
alcpu_arch_is_zen() alci_arch_is_zen(ALCI_CURRENT_CPU_NUM)#
alcpu_arch_is_zen2() alci_arch_is_zen2(ALCI_CURRENT_CPU_NUM)#
alcpu_arch_is_zen3() alci_arch_is_zen3(ALCI_CURRENT_CPU_NUM)#
alcpu_arch_is_zen4() alci_arch_is_zen4(ALCI_CURRENT_CPU_NUM)#
alcpu_arch_is_zen5() alci_arch_is_zen5(ALCI_CURRENT_CPU_NUM)#
alcpu_flag_is_available(flag)     alci_cpu_has_flag(ALCI_CURRENT_CPU_NUM, flag)#

Functions

bool alci_is_amd(au_cpu_num_t cpu_num)#

Allows caller to check if the processor vendor is AMD.

This function will work on all AMD processors.

AOCL 5.2

alci_is_amd()

Skylake

False

Bulldozer

True

Zen1/1+

True

Zen2

True

Zen3

True

Zen4

True

Zen[X>4]

True

Warning

If cpu_num is not “AU_CURRENT_CPU_NUM”, then calling this function will result in thread migration to the selected core.

Warning

This api is deprecated. Use au_cpuid_is_amd instead.

Parameters:

cpu_num – Any valid core number starting from 0.

Returns:

1/true if processor vendor is AMD.

au_error_t alci_cpu_get_vendor(au_cpu_num_t cpu_num, char *arr, size_t size)#

Get Cpu vendor info.

arr [VendorID,FamilyID, ModelID, SteppingID, UarchID], is a set of new line separated values.

User must provide a buffer of size >= 16 bytes to store the vendor info

Warning

If cpu_num is not “AU_CURRENT_CPU_NUM”, then calling this function will result in thread migration to the selected core.

Warning

This api is deprecated. Use au_cpuid_get_vendor instead.

Parameters:
  • cpu_num[in] Any valid core number starting from 0.

  • arr[out] Vendor info array containing newline-separated values: VendorID, FamilyID, ModelID, SteppingID, UarchID

  • size[in] Size of Vendor info array in bytes.

Returns:

Boolean, true if success.

bool alci_arch_is_zen(au_cpu_num_t cpu_num)#

Allows caller to check if the processor arch is ZEN.

This function is only meant for Zen based processors.

AOCL 5.2

alci_arch_is_zen()

Skylake

False

Bulldozer

False

Zen1/1+

True

Zen2

True

Zen[3,4,5]

True

Zen[X>5]

True

AOCL 4.2

alci_arch_is_zen()

Skylake

False

Bulldozer

False

Zen1/1+

True

Zen2

False

Zen3

False

Zen[X>3]

False

C-API Behaviour Summary

Warning

If cpu_num is not “AU_CURRENT_CPU_NUM”, then calling this function will result in thread migration to the selected core.

Warning

This api is deprecated. Use au_cpuid_arch_is_zen instead.

Parameters:

cpu_num – Any valid core number starting from 0.

Returns:

1/true if processor architecture is AMD ZEN.

bool alci_arch_is_zen2(au_cpu_num_t cpu_num)#

Allows caller to check if the processor arch is ZEN2.

This function is only meant for Zen based processors.

AOCL 5.2

alci_arch_is_zen2()

Skylake

False

Bulldozer

False

Zen1/1+

False

Zen2

True

Zen[3,4,5]

True

Zen[X>5]

True

AOCL 4.2

alci_arch_is_zen2()

Skylake

False

Bulldozer

False

Zen1/1+

False

Zen2

True

Zen3

False

Zen[X>3]

False

C-API Behaviour Summary

Warning

If cpu_num is not “AU_CURRENT_CPU_NUM”, then calling this function will result in thread migration to the selected core.

Warning

This api is deprecated. Use au_cpuid_arch_is_zen2 instead.

Parameters:

cpu_num – Any valid core number starting from 0.

Returns:

1/true if processor architecture is AMD ZEN2.

bool alci_arch_is_zen3(au_cpu_num_t cpu_num)#

Allows caller to check if the processor arch is ZEN3.

This function is only meant for Zen based processors.

AOCL 5.2

alci_arch_is_zen3()

Skylake

False

Bulldozer

False

Zen1/1+

False

Zen2

False

Zen[3,4,5]

True

Zen[X>5]

True

AOCL 4.2

alci_arch_is_zen3()

Skylake

False

Bulldozer

False

Zen1/1+

False

Zen2

False

Zen3

True

Zen4

False

Zen[X>4]

False

C-API Behaviour Summary

Warning

If cpu_num is not “AU_CURRENT_CPU_NUM”, then calling this function will result in thread migration to the selected core.

Warning

This api is deprecated. Use au_cpuid_arch_is_zen3 instead.

Parameters:

cpu_num – Any valid core number starting from 0.

Returns:

1/true if processor architecture is AMD ZEN3.

bool alci_arch_is_zen4(au_cpu_num_t cpu_num)#

Allows caller to check if the processor arch is ZEN4.

This function is only meant for Zen based processors.

AOCL 5.2

alci_arch_is_zen4()

Skylake

False

Bulldozer

False

Zen[X<3]

False

Zen3

False

Zen[4,5]

True

Zen[X>5]

True

AOCL 4.2

alci_arch_is_zen4()

Skylake

False

Bulldozer

False

Zen[X<3]

False

Zen3

False

Zen4

True

Zen5

True

Zen[X>5]

True

C-API Behaviour Summary

Warning

If cpu_num is not “AU_CURRENT_CPU_NUM”, then calling this function will result in thread migration to the selected core.

Warning

This api is deprecated. Use au_cpuid_arch_is_zen4 instead.

Parameters:

cpu_num – Any valid core number starting from 0.

Returns:

1/true if processor architecture is AMD ZEN4.

bool alci_arch_is_zen5(au_cpu_num_t cpu_num)#

Allows caller to check if the processor arch is ZEN5.

This function is only meant for Zen based processors.

AOCL 5.2

alci_arch_is_zen5()

Skylake

False

Bulldozer

False

Zen[X<4]

False

Zen4

False

Zen5

True

Zen[X>5]

True

C-API Behaviour Summary

Warning

If cpu_num is not “AU_CURRENT_CPU_NUM”, then calling this function will result in thread migration to the selected core.

Warning

This api is deprecated. Use au_cpuid_arch_is_zen5 instead.

Parameters:

cpu_num – Any valid core number starting from 0.

Returns:

1/true if processor architecture is AMD ZEN5.

bool alci_cpu_has_flag(au_cpu_num_t cpu_num, au_cpu_flag_t flag)#

Allows caller to check if the flag is available.

List of supported flags: sse3, pclmulqdq, dtes64, monitor, dscpl, vmx, smx, est, tm2, ssse3, cid, fma, cx16, xtpr, pdcm, pcid, dca, sse4_1, sse4_2, x2apic, movbe, popcnt, tsc_deadline, aes, xsave, osxsave, avx, f16c, rdrand, hypervisor, fpu, vme, de, pse, tsc, msr, pae, mce, cx8, apic, sep, mtrr, pge, mca, cmov, pat, pse36, pn, clflush, ds, acpi, mmx, fxsr, sse, sse2, ss, ht, tm, ia64, pbe, arat, fsgsbase, tsc_adjust, bmi1, hle, avx2, smep, bmi2, erms, invpcid, rtm, mpx, avx512f, avx512dq, rdseed, adx, smap, avx512ifma, pcommit, clflushopt, clwb, avx512pf, avx512er, avx512cd, sha_ni, avx512bw, avx512vl, avx512vbmi, umip, pku, ospke, avx512_vpopcntdq, la57, rdpid, avx512_4vnniw, avx512_4fmaps, avx512_bf16, avxvnni, xsaveopt, xsavec, xgetbv1, xsaves, lahf_lm, cmp_legacy, svm, extapic, cr8legacy, abm, sse4a, misalignsse, _3dnowprefetch, osvw, ibs, xop, skinit, wdt, lwp, fma4, tce, nodeid_msr, tbm, topoext, perfctr_core, perfctr_nb, syscall, nxxd, mmxext, fxsr_opt, pdpe1gb, rdtscp, lmi64, _3dnowext, _3dnow, invtsc, npt, lbrv, svm_lock, nrip_save, tsc_scale, vmcb_clean, flushbyasid, decodeassists, pause_filter, pfthreshold, xstore, xstore_en, xcrypt, xcrypt_en, ace2, ace2_en, phe, phe_en, pmm, pmm_en, vaes, vpclmulqdq, avx512_vnni, avx512_bitalg, avx512vbmi2, movdiri, movdir64b, avx512_vpintersect, x2avic

Warning

If cpu_num is not “AU_CURRENT_CPU_NUM”, then calling this function will result in thread migration to the selected core.

Warning

This api is deprecated. Use au_cpuid_has_flag instead.

Parameters:
  • cpu_num – Any valid core number starting from 0.

  • flag – CPU feature flag.

Returns:

1/true if feature is available.