|
21 | 21 | #include "internal/string_view.h" |
22 | 22 | #include "internal/unix_features_aggregator.h" |
23 | 23 |
|
| 24 | +#include <assert.h> |
24 | 25 | #include <ctype.h> |
25 | 26 |
|
26 | 27 | DECLARE_SETTER(ArmFeatures, swp) |
@@ -52,33 +53,33 @@ DECLARE_SETTER(ArmFeatures, sha2) |
52 | 53 | DECLARE_SETTER(ArmFeatures, crc32) |
53 | 54 |
|
54 | 55 | static const CapabilityConfig kConfigs[] = { |
55 | | - {{ARM_HWCAP_SWP, 0}, "swp", &set_swp}, // |
56 | | - {{ARM_HWCAP_HALF, 0}, "half", &set_half}, // |
57 | | - {{ARM_HWCAP_THUMB, 0}, "thumb", &set_thumb}, // |
58 | | - {{ARM_HWCAP_26BIT, 0}, "26bit", &set__26bit}, // |
59 | | - {{ARM_HWCAP_FAST_MULT, 0}, "fastmult", &set_fastmult}, // |
60 | | - {{ARM_HWCAP_FPA, 0}, "fpa", &set_fpa}, // |
61 | | - {{ARM_HWCAP_VFP, 0}, "vfp", &set_vfp}, // |
62 | | - {{ARM_HWCAP_EDSP, 0}, "edsp", &set_edsp}, // |
63 | | - {{ARM_HWCAP_JAVA, 0}, "java", &set_java}, // |
64 | | - {{ARM_HWCAP_IWMMXT, 0}, "iwmmxt", &set_iwmmxt}, // |
65 | | - {{ARM_HWCAP_CRUNCH, 0}, "crunch", &set_crunch}, // |
66 | | - {{ARM_HWCAP_THUMBEE, 0}, "thumbee", &set_thumbee}, // |
67 | | - {{ARM_HWCAP_NEON, 0}, "neon", &set_neon}, // |
68 | | - {{ARM_HWCAP_VFPV3, 0}, "vfpv3", &set_vfpv3}, // |
69 | | - {{ARM_HWCAP_VFPV3D16, 0}, "vfpv3d16", &set_vfpv3d16}, // |
70 | | - {{ARM_HWCAP_TLS, 0}, "tls", &set_tls}, // |
71 | | - {{ARM_HWCAP_VFPV4, 0}, "vfpv4", &set_vfpv4}, // |
72 | | - {{ARM_HWCAP_IDIVA, 0}, "idiva", &set_idiva}, // |
73 | | - {{ARM_HWCAP_IDIVT, 0}, "idivt", &set_idivt}, // |
74 | | - {{ARM_HWCAP_VFPD32, 0}, "vfpd32", &set_vfpd32}, // |
75 | | - {{ARM_HWCAP_LPAE, 0}, "lpae", &set_lpae}, // |
76 | | - {{ARM_HWCAP_EVTSTRM, 0}, "evtstrm", &set_evtstrm}, // |
77 | | - {{0, ARM_HWCAP2_AES}, "aes", &set_aes}, // |
78 | | - {{0, ARM_HWCAP2_PMULL}, "pmull", &set_pmull}, // |
79 | | - {{0, ARM_HWCAP2_SHA1}, "sha1", &set_sha1}, // |
80 | | - {{0, ARM_HWCAP2_SHA2}, "sha2", &set_sha2}, // |
81 | | - {{0, ARM_HWCAP2_CRC32}, "crc32", &set_crc32}, // |
| 56 | + [ARM_SWP] = {{ARM_HWCAP_SWP, 0}, "swp", &set_swp}, // |
| 57 | + [ARM_HALF] = {{ARM_HWCAP_HALF, 0}, "half", &set_half}, // |
| 58 | + [ARM_THUMB] = {{ARM_HWCAP_THUMB, 0}, "thumb", &set_thumb}, // |
| 59 | + [ARM_26BIT] = {{ARM_HWCAP_26BIT, 0}, "26bit", &set__26bit}, // |
| 60 | + [ARM_FASTMULT] = {{ARM_HWCAP_FAST_MULT, 0}, "fastmult", &set_fastmult}, // |
| 61 | + [ARM_FPA] = {{ARM_HWCAP_FPA, 0}, "fpa", &set_fpa}, // |
| 62 | + [ARM_VFP] = {{ARM_HWCAP_VFP, 0}, "vfp", &set_vfp}, // |
| 63 | + [ARM_EDSP] = {{ARM_HWCAP_EDSP, 0}, "edsp", &set_edsp}, // |
| 64 | + [ARM_JAVA] = {{ARM_HWCAP_JAVA, 0}, "java", &set_java}, // |
| 65 | + [ARM_IWMMXT] = {{ARM_HWCAP_IWMMXT, 0}, "iwmmxt", &set_iwmmxt}, // |
| 66 | + [ARM_CRUNCH] = {{ARM_HWCAP_CRUNCH, 0}, "crunch", &set_crunch}, // |
| 67 | + [ARM_THUMBEE] = {{ARM_HWCAP_THUMBEE, 0}, "thumbee", &set_thumbee}, // |
| 68 | + [ARM_NEON] = {{ARM_HWCAP_NEON, 0}, "neon", &set_neon}, // |
| 69 | + [ARM_VFPV3] = {{ARM_HWCAP_VFPV3, 0}, "vfpv3", &set_vfpv3}, // |
| 70 | + [ARM_VFPV3D16] = {{ARM_HWCAP_VFPV3D16, 0}, "vfpv3d16", &set_vfpv3d16}, // |
| 71 | + [ARM_TLS] = {{ARM_HWCAP_TLS, 0}, "tls", &set_tls}, // |
| 72 | + [ARM_VFPV4] = {{ARM_HWCAP_VFPV4, 0}, "vfpv4", &set_vfpv4}, // |
| 73 | + [ARM_IDIVA] = {{ARM_HWCAP_IDIVA, 0}, "idiva", &set_idiva}, // |
| 74 | + [ARM_IDIVT] = {{ARM_HWCAP_IDIVT, 0}, "idivt", &set_idivt}, // |
| 75 | + [ARM_VFPD32] = {{ARM_HWCAP_VFPD32, 0}, "vfpd32", &set_vfpd32}, // |
| 76 | + [ARM_LPAE] = {{ARM_HWCAP_LPAE, 0}, "lpae", &set_lpae}, // |
| 77 | + [ARM_EVTSTRM] = {{ARM_HWCAP_EVTSTRM, 0}, "evtstrm", &set_evtstrm}, // |
| 78 | + [ARM_AES] = {{0, ARM_HWCAP2_AES}, "aes", &set_aes}, // |
| 79 | + [ARM_PMULL] = {{0, ARM_HWCAP2_PMULL}, "pmull", &set_pmull}, // |
| 80 | + [ARM_SHA1] = {{0, ARM_HWCAP2_SHA1}, "sha1", &set_sha1}, // |
| 81 | + [ARM_SHA2] = {{0, ARM_HWCAP2_SHA2}, "sha2", &set_sha2}, // |
| 82 | + [ARM_CRC32] = {{0, ARM_HWCAP2_CRC32}, "crc32", &set_crc32}, // |
82 | 83 | }; |
83 | 84 |
|
84 | 85 | static const size_t kConfigsSize = sizeof(kConfigs) / sizeof(CapabilityConfig); |
@@ -285,61 +286,7 @@ int GetArmFeaturesEnumValue(const ArmFeatures* features, |
285 | 286 | } |
286 | 287 |
|
287 | 288 | const char* GetArmFeaturesEnumName(ArmFeaturesEnum value) { |
288 | | - switch (value) { |
289 | | - case ARM_SWP: |
290 | | - return "swp"; |
291 | | - case ARM_HALF: |
292 | | - return "half"; |
293 | | - case ARM_THUMB: |
294 | | - return "thumb"; |
295 | | - case ARM_FASTMULT: |
296 | | - return "fastmult"; |
297 | | - case ARM_FPA: |
298 | | - return "fpa"; |
299 | | - case ARM_VFP: |
300 | | - return "vfp"; |
301 | | - case ARM_EDSP: |
302 | | - return "edsp"; |
303 | | - case ARM_JAVA: |
304 | | - return "java"; |
305 | | - case ARM_IWMMXT: |
306 | | - return "iwmmxt"; |
307 | | - case ARM_CRUNCH: |
308 | | - return "crunch"; |
309 | | - case ARM_THUMBEE: |
310 | | - return "thumbee"; |
311 | | - case ARM_NEON: |
312 | | - return "neon"; |
313 | | - case ARM_VFPV3: |
314 | | - return "vfpv3"; |
315 | | - case ARM_VFPV3D16: |
316 | | - return "vfpv3d16"; |
317 | | - case ARM_TLS: |
318 | | - return "tls"; |
319 | | - case ARM_VFPV4: |
320 | | - return "vfpv4"; |
321 | | - case ARM_IDIVA: |
322 | | - return "idiva"; |
323 | | - case ARM_IDIVT: |
324 | | - return "idivt"; |
325 | | - case ARM_VFPD32: |
326 | | - return "vfpd32"; |
327 | | - case ARM_LPAE: |
328 | | - return "lpae"; |
329 | | - case ARM_EVTSTRM: |
330 | | - return "evtstrm"; |
331 | | - case ARM_AES: |
332 | | - return "aes"; |
333 | | - case ARM_PMULL: |
334 | | - return "pmull"; |
335 | | - case ARM_SHA1: |
336 | | - return "sha1"; |
337 | | - case ARM_SHA2: |
338 | | - return "sha2"; |
339 | | - case ARM_CRC32: |
340 | | - return "crc32"; |
341 | | - case ARM_LAST_: |
342 | | - break; |
343 | | - } |
344 | | - return "unknown feature"; |
| 289 | + if(value >= kConfigsSize) |
| 290 | + return "unknown feature"; |
| 291 | + return kConfigs[value].proc_cpuinfo_flag; |
345 | 292 | } |
0 commit comments