@@ -44,105 +44,108 @@ const ARM_ALLOWED_FEATURES: &[(&str, Option<Symbol>)] = &[
44
44
45
45
const AARCH64_ALLOWED_FEATURES : & [ ( & str , Option < Symbol > ) ] = & [
46
46
// FEAT_AdvSimd
47
- ( "neon" , Some ( sym :: aarch64_target_feature ) ) ,
47
+ ( "neon" , None ) ,
48
48
// FEAT_FP
49
- ( "fp" , Some ( sym :: aarch64_target_feature ) ) ,
49
+ ( "fp" , None ) ,
50
50
// FEAT_FP16
51
- ( "fp16" , Some ( sym :: aarch64_target_feature ) ) ,
51
+ ( "fp16" , None ) ,
52
52
// FEAT_SVE
53
- ( "sve" , Some ( sym :: aarch64_target_feature ) ) ,
53
+ ( "sve" , None ) ,
54
54
// FEAT_CRC
55
- ( "crc" , Some ( sym :: aarch64_target_feature ) ) ,
55
+ ( "crc" , None ) ,
56
56
// FEAT_RAS
57
- ( "ras" , Some ( sym :: aarch64_target_feature ) ) ,
57
+ ( "ras" , None ) ,
58
58
// FEAT_LSE
59
- ( "lse" , Some ( sym :: aarch64_target_feature ) ) ,
59
+ ( "lse" , None ) ,
60
60
// FEAT_RDM
61
- ( "rdm" , Some ( sym :: aarch64_target_feature ) ) ,
61
+ ( "rdm" , None ) ,
62
62
// FEAT_RCPC
63
- ( "rcpc" , Some ( sym :: aarch64_target_feature ) ) ,
63
+ ( "rcpc" , None ) ,
64
64
// FEAT_RCPC2
65
- ( "rcpc2" , Some ( sym :: aarch64_target_feature ) ) ,
65
+ ( "rcpc2" , None ) ,
66
66
// FEAT_DotProd
67
- ( "dotprod" , Some ( sym :: aarch64_target_feature ) ) ,
67
+ ( "dotprod" , None ) ,
68
68
// FEAT_TME
69
- ( "tme" , Some ( sym :: aarch64_target_feature ) ) ,
69
+ ( "tme" , None ) ,
70
70
// FEAT_FHM
71
- ( "fhm" , Some ( sym :: aarch64_target_feature ) ) ,
71
+ ( "fhm" , None ) ,
72
72
// FEAT_DIT
73
- ( "dit" , Some ( sym :: aarch64_target_feature ) ) ,
73
+ ( "dit" , None ) ,
74
74
// FEAT_FLAGM
75
- ( "flagm" , Some ( sym :: aarch64_target_feature ) ) ,
75
+ ( "flagm" , None ) ,
76
76
// FEAT_SSBS
77
- ( "ssbs" , Some ( sym :: aarch64_target_feature ) ) ,
77
+ ( "ssbs" , None ) ,
78
78
// FEAT_SB
79
- ( "sb" , Some ( sym :: aarch64_target_feature ) ) ,
79
+ ( "sb" , None ) ,
80
80
// FEAT_PAUTH (address authentication)
81
- ( "paca" , Some ( sym :: aarch64_target_feature ) ) ,
81
+ ( "paca" , None ) ,
82
82
// FEAT_PAUTH (generic authentication)
83
- ( "pacg" , Some ( sym :: aarch64_target_feature ) ) ,
83
+ ( "pacg" , None ) ,
84
84
// FEAT_DPB
85
- ( "dpb" , Some ( sym :: aarch64_target_feature ) ) ,
85
+ ( "dpb" , None ) ,
86
86
// FEAT_DPB2
87
- ( "dpb2" , Some ( sym :: aarch64_target_feature ) ) ,
87
+ ( "dpb2" , None ) ,
88
88
// FEAT_SVE2
89
- ( "sve2" , Some ( sym :: aarch64_target_feature ) ) ,
89
+ ( "sve2" , None ) ,
90
90
// FEAT_SVE2_AES
91
- ( "sve2-aes" , Some ( sym :: aarch64_target_feature ) ) ,
91
+ ( "sve2-aes" , None ) ,
92
92
// FEAT_SVE2_SM4
93
- ( "sve2-sm4" , Some ( sym :: aarch64_target_feature ) ) ,
93
+ ( "sve2-sm4" , None ) ,
94
94
// FEAT_SVE2_SHA3
95
- ( "sve2-sha3" , Some ( sym :: aarch64_target_feature ) ) ,
95
+ ( "sve2-sha3" , None ) ,
96
96
// FEAT_SVE2_BitPerm
97
- ( "sve2-bitperm" , Some ( sym :: aarch64_target_feature ) ) ,
97
+ ( "sve2-bitperm" , None ) ,
98
98
// FEAT_FRINTTS
99
- ( "frintts" , Some ( sym :: aarch64_target_feature ) ) ,
99
+ ( "frintts" , None ) ,
100
100
// FEAT_I8MM
101
- ( "i8mm" , Some ( sym :: aarch64_target_feature ) ) ,
101
+ ( "i8mm" , None ) ,
102
102
// FEAT_F32MM
103
- ( "f32mm" , Some ( sym :: aarch64_target_feature ) ) ,
103
+ ( "f32mm" , None ) ,
104
104
// FEAT_F64MM
105
- ( "f64mm" , Some ( sym :: aarch64_target_feature ) ) ,
105
+ ( "f64mm" , None ) ,
106
106
// FEAT_BF16
107
- ( "bf16" , Some ( sym :: aarch64_target_feature ) ) ,
107
+ ( "bf16" , None ) ,
108
108
// FEAT_RAND
109
- ( "rand" , Some ( sym :: aarch64_target_feature ) ) ,
109
+ ( "rand" , None ) ,
110
110
// FEAT_BTI
111
- ( "bti" , Some ( sym :: aarch64_target_feature ) ) ,
111
+ ( "bti" , None ) ,
112
112
// FEAT_MTE
113
- ( "mte" , Some ( sym :: aarch64_target_feature ) ) ,
113
+ ( "mte" , None ) ,
114
114
// FEAT_JSCVT
115
- ( "jsconv" , Some ( sym :: aarch64_target_feature ) ) ,
115
+ ( "jsconv" , None ) ,
116
116
// FEAT_FCMA
117
- ( "fcma" , Some ( sym :: aarch64_target_feature ) ) ,
117
+ ( "fcma" , None ) ,
118
118
// FEAT_AES
119
- ( "aes" , Some ( sym :: aarch64_target_feature ) ) ,
119
+ ( "aes" , None ) ,
120
120
// FEAT_SHA1 & FEAT_SHA256
121
- ( "sha2" , Some ( sym :: aarch64_target_feature ) ) ,
121
+ ( "sha2" , None ) ,
122
122
// FEAT_SHA512 & FEAT_SHA3
123
- ( "sha3" , Some ( sym :: aarch64_target_feature ) ) ,
123
+ ( "sha3" , None ) ,
124
124
// FEAT_SM3 & FEAT_SM4
125
- ( "sm4" , Some ( sym :: aarch64_target_feature ) ) ,
125
+ ( "sm4" , None ) ,
126
126
// FEAT_PAN
127
- ( "pan" , Some ( sym :: aarch64_target_feature ) ) ,
127
+ ( "pan" , None ) ,
128
128
// FEAT_LOR
129
- ( "lor" , Some ( sym :: aarch64_target_feature ) ) ,
129
+ ( "lor" , None ) ,
130
130
// FEAT_VHE
131
- ( "vh" , Some ( sym :: aarch64_target_feature ) ) ,
131
+ ( "vh" , None ) ,
132
132
// FEAT_PMUv3
133
- ( "pmuv3" , Some ( sym :: aarch64_target_feature ) ) ,
133
+ ( "pmuv3" , None ) ,
134
134
// FEAT_SPE
135
- ( "spe" , Some ( sym :: aarch64_target_feature ) ) ,
136
- ( "v8.1a" , Some ( sym:: aarch64_target_feature ) ) ,
137
- ( "v8.2a" , Some ( sym:: aarch64_target_feature ) ) ,
138
- ( "v8.3a" , Some ( sym:: aarch64_target_feature ) ) ,
139
- ( "v8.4a" , Some ( sym:: aarch64_target_feature ) ) ,
140
- ( "v8.5a" , Some ( sym:: aarch64_target_feature ) ) ,
141
- ( "v8.6a" , Some ( sym:: aarch64_target_feature ) ) ,
142
- ( "v8.7a" , Some ( sym:: aarch64_target_feature ) ) ,
135
+ ( "spe" , None ) ,
136
+ ( "v8.1a" , Some ( sym:: aarch64_ver_target_feature ) ) ,
137
+ ( "v8.2a" , Some ( sym:: aarch64_ver_target_feature ) ) ,
138
+ ( "v8.3a" , Some ( sym:: aarch64_ver_target_feature ) ) ,
139
+ ( "v8.4a" , Some ( sym:: aarch64_ver_target_feature ) ) ,
140
+ ( "v8.5a" , Some ( sym:: aarch64_ver_target_feature ) ) ,
141
+ ( "v8.6a" , Some ( sym:: aarch64_ver_target_feature ) ) ,
142
+ ( "v8.7a" , Some ( sym:: aarch64_ver_target_feature ) ) ,
143
143
] ;
144
144
145
- const AARCH64_TIED_FEATURES : & [ & [ & str ] ] = & [ & [ "paca" , "pacg" ] ] ;
145
+ const AARCH64_TIED_FEATURES : & [ & [ & str ] ] = & [
146
+ & [ "fp" , "neon" ] , // Silicon always has both, so avoid needless complications
147
+ & [ "paca" , "pacg" ] , // Together these represent `pauth` in LLVM
148
+ ] ;
146
149
147
150
const X86_ALLOWED_FEATURES : & [ ( & str , Option < Symbol > ) ] = & [
148
151
( "adx" , Some ( sym:: adx_target_feature) ) ,
0 commit comments