[PATCH] D131134: [X86] Report error if the amx enabled on the non-64-bits target

Phoebe Wang via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Aug 11 00:42:14 PDT 2022


pengfei added a comment.

In D131134#3715079 <https://reviews.llvm.org/D131134#3715079>, @craig.topper wrote:

> In D131134#3715062 <https://reviews.llvm.org/D131134#3715062>, @pengfei wrote:
>
>> In D131134#3715024 <https://reviews.llvm.org/D131134#3715024>, @pengfei wrote:
>>
>>> In D131134#3714860 <https://reviews.llvm.org/D131134#3714860>, @craig.topper wrote:
>>>
>>>> Yes AMX is only supported in 64-bit mode but I doubt CPUID checks which mode the program is running in.
>>>
>>> I guess `HasAMXSave` is `false` on 32-bit mode https://github.com/llvm/llvm-project/blob/main/llvm/lib/Support/Host.cpp#L1800. But I don't have the environment to check it.
>>
>> I found it. The `XFEATURE_MASK_XTILE` in Kernel is the same as `HasAMXSave` in compiler: https://lwn.net/ml/linux-kernel/20210710130313.5072-20-chang.seok.bae@intel.com/
>> So these features bits are `true` only on 64-bit mode.
>
> Is it cleared when running a 32-bit binary on a 64-bit kernel?

No, a 32-bit binary gets the same CR0 as 64-bit on a 64-bit kernel. Actually, it's compiler to get the CR0 rather than the binary it builds. It should be rare to run 32-bit compiler on 64-bit kernel.
So you are right. No matter 32 or 64 bits compiler, when it builds a binary with `-m32` on 64-bit kernel with `-march=native`, it always sets AMX features. Maybe we should reset them to false when compile for 32-bit?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D131134/new/

https://reviews.llvm.org/D131134



More information about the cfe-commits mailing list