-
Notifications
You must be signed in to change notification settings - Fork 376
Closed
Description
On my Windows ARM device, cpuinfo_has_arm_i8mm() returns false but the value of ID_AA64ISAR1_EL1 indicates that I8MM is supported.
From a look at the code, I did not see where cpuinfo_isa.i8mm gets set in the Windows ARM code path.
cpuinfo/src/arm/windows/init.c
Lines 189 to 219 in b73ae6c
| static void set_cpuinfo_isa_fields(void) { | |
| cpuinfo_isa.atomics = IsProcessorFeaturePresent(PF_ARM_V81_ATOMIC_INSTRUCTIONS_AVAILABLE) != 0; | |
| const bool dotprod = IsProcessorFeaturePresent(PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE) != 0; | |
| cpuinfo_isa.dot = dotprod; | |
| SYSTEM_INFO system_info; | |
| GetSystemInfo(&system_info); | |
| switch (system_info.wProcessorLevel) { | |
| case 0x803: // Kryo 385 Silver (Snapdragon 850) | |
| cpuinfo_isa.fp16arith = dotprod; | |
| cpuinfo_isa.rdm = dotprod; | |
| break; | |
| default: | |
| // Assume that Dot Product support implies FP16 | |
| // arithmetics and RDM support. ARM manuals don't | |
| // guarantee that, but it holds in practice. | |
| cpuinfo_isa.fp16arith = dotprod; | |
| cpuinfo_isa.rdm = dotprod; | |
| break; | |
| } | |
| /* Windows API reports all or nothing for cryptographic instructions. */ | |
| const bool crypto = IsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE) != 0; | |
| cpuinfo_isa.aes = crypto; | |
| cpuinfo_isa.sha1 = crypto; | |
| cpuinfo_isa.sha2 = crypto; | |
| cpuinfo_isa.pmull = crypto; | |
| cpuinfo_isa.crc32 = IsProcessorFeaturePresent(PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE) != 0; | |
| } |
Is I8MM detection implemented for Windows ARM?
Metadata
Metadata
Assignees
Labels
No labels