|
3 | 3 | //! [ACLE documentation](https://arm-software.github.io/acle/main/acle.html#markdown-toc-mte-intrinsics) |
4 | 4 |
|
5 | 5 | unsafe extern "unadjusted" { |
6 | | - #[cfg_attr( |
7 | | - any(target_arch = "aarch64", target_arch = "arm64ec"), |
8 | | - link_name = "llvm.aarch64.irg" |
9 | | - )] |
| 6 | + #[link_name = "llvm.aarch64.irg"] |
10 | 7 | fn irg_(ptr: *const (), exclude: i64) -> *const (); |
11 | | - #[cfg_attr( |
12 | | - any(target_arch = "aarch64", target_arch = "arm64ec"), |
13 | | - link_name = "llvm.aarch64.gmi" |
14 | | - )] |
| 8 | + #[link_name = "llvm.aarch64.gmi"] |
15 | 9 | fn gmi_(ptr: *const (), exclude: i64) -> i64; |
16 | | - #[cfg_attr( |
17 | | - any(target_arch = "aarch64", target_arch = "arm64ec"), |
18 | | - link_name = "llvm.aarch64.ldg" |
19 | | - )] |
| 10 | + #[link_name = "llvm.aarch64.ldg"] |
20 | 11 | fn ldg_(ptr: *const (), tag_ptr: *const ()) -> *const (); |
21 | | - #[cfg_attr( |
22 | | - any(target_arch = "aarch64", target_arch = "arm64ec"), |
23 | | - link_name = "llvm.aarch64.stg" |
24 | | - )] |
| 12 | + #[link_name = "llvm.aarch64.stg"] |
25 | 13 | fn stg_(tagged_ptr: *const (), addr_to_tag: *const ()); |
26 | | - #[cfg_attr( |
27 | | - any(target_arch = "aarch64", target_arch = "arm64ec"), |
28 | | - link_name = "llvm.aarch64.addg" |
29 | | - )] |
| 14 | + #[link_name = "llvm.aarch64.addg"] |
30 | 15 | fn addg_(ptr: *const (), value: i64) -> *const (); |
31 | | - #[cfg_attr( |
32 | | - any(target_arch = "aarch64", target_arch = "arm64ec"), |
33 | | - link_name = "llvm.aarch64.subp" |
34 | | - )] |
| 16 | + #[link_name = "llvm.aarch64.subp"] |
35 | 17 | fn subp_(ptr_a: *const (), ptr_b: *const ()) -> i64; |
36 | 18 | } |
37 | 19 |
|
@@ -127,42 +109,46 @@ mod test { |
127 | 109 | use super::*; |
128 | 110 | use stdarch_test::assert_instr; |
129 | 111 |
|
130 | | - #[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(irg))] // FIXME: MSVC `dumpbin` doesn't support MTE |
| 112 | + // Instruction tests are separate because the functions use generics. |
| 113 | + // |
| 114 | + // FIXME: As of 2026 MSVC `dumpbin` doesn't support MTE. |
| 115 | + |
| 116 | + #[cfg_attr(not(target_env = "msvc"), assert_instr(irg))] |
131 | 117 | #[allow(dead_code)] |
132 | 118 | #[target_feature(enable = "mte")] |
133 | 119 | unsafe fn test_arm_mte_create_random_tag(src: *const (), mask: u64) -> *const () { |
134 | 120 | __arm_mte_create_random_tag(src, mask) |
135 | 121 | } |
136 | 122 |
|
137 | | - #[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(addg))] |
| 123 | + #[cfg_attr(not(target_env = "msvc"), assert_instr(addg))] |
138 | 124 | #[allow(dead_code)] |
139 | 125 | #[target_feature(enable = "mte")] |
140 | 126 | unsafe fn test_arm_mte_increment_tag(src: *const ()) -> *const () { |
141 | 127 | __arm_mte_increment_tag::<1, _>(src) |
142 | 128 | } |
143 | 129 |
|
144 | | - #[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(gmi))] |
| 130 | + #[cfg_attr(not(target_env = "msvc"), assert_instr(gmi))] |
145 | 131 | #[allow(dead_code)] |
146 | 132 | #[target_feature(enable = "mte")] |
147 | 133 | unsafe fn test_arm_mte_exclude_tag(src: *const (), excluded: u64) -> u64 { |
148 | 134 | __arm_mte_exclude_tag(src, excluded) |
149 | 135 | } |
150 | 136 |
|
151 | | - #[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(stg))] |
| 137 | + #[cfg_attr(not(target_env = "msvc"), assert_instr(stg))] |
152 | 138 | #[allow(dead_code)] |
153 | 139 | #[target_feature(enable = "mte")] |
154 | 140 | unsafe fn test_arm_mte_set_tag(src: *const ()) { |
155 | 141 | __arm_mte_set_tag(src) |
156 | 142 | } |
157 | 143 |
|
158 | | - #[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(ldg))] |
| 144 | + #[cfg_attr(not(target_env = "msvc"), assert_instr(ldg))] |
159 | 145 | #[allow(dead_code)] |
160 | 146 | #[target_feature(enable = "mte")] |
161 | 147 | unsafe fn test_arm_mte_get_tag(src: *const ()) -> *const () { |
162 | 148 | __arm_mte_get_tag(src) |
163 | 149 | } |
164 | 150 |
|
165 | | - #[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(subp))] |
| 151 | + #[cfg_attr(not(target_env = "msvc"), assert_instr(subp))] |
166 | 152 | #[allow(dead_code)] |
167 | 153 | #[target_feature(enable = "mte")] |
168 | 154 | unsafe fn test_arm_mte_ptrdiff(a: *const (), b: *const ()) -> i64 { |
|
0 commit comments