Skip to content

Commit cab8a5d

Browse files
authored
Enable multiple #[assert_instr] attributes (rust-lang#96)
* Enable multiple #[assert_instr] attributes Looks like all we needed to do was generate new function names! * Uncomment assertions for `_mm_prefetch`
1 parent f3f5a9c commit cab8a5d

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

Diff for: src/x86/sse.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -574,9 +574,9 @@ pub const _MM_HINT_NTA: i8 = 0;
574574
#[inline(always)]
575575
#[target_feature = "+sse"]
576576
#[cfg_attr(test, assert_instr(prefetcht0, strategy = _MM_HINT_T0))]
577-
// #[cfg_attr(test, assert_instr(prefetcht1, strategy = _MM_HINT_T1))]
578-
// #[cfg_attr(test, assert_instr(prefetcht2, strategy = _MM_HINT_T2))]
579-
// #[cfg_attr(test, assert_instr(prefetchnta, strategy = _MM_HINT_NTA))]
577+
#[cfg_attr(test, assert_instr(prefetcht1, strategy = _MM_HINT_T1))]
578+
#[cfg_attr(test, assert_instr(prefetcht2, strategy = _MM_HINT_T2))]
579+
#[cfg_attr(test, assert_instr(prefetchnta, strategy = _MM_HINT_NTA))]
580580
pub unsafe fn _mm_prefetch(p: *const c_void, strategy: i8) {
581581
// The `strategy` must be a compile-time constant, so we use a short form of
582582
// `constify_imm8!` for now.

Diff for: stdsimd-test/assert-instr-macro/src/lib.rs

+7-2
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ pub fn assert_instr(attr: proc_macro::TokenStream,
4040
(quote! { #[ignore] }).into()
4141
};
4242
let name = &func.ident;
43-
let assert_name = syn::Ident::from(&format!("assert_{}", name.sym.as_str())[..]);
43+
let assert_name = syn::Ident::from(&format!("assert_{}_{}",
44+
name.sym.as_str(),
45+
instr.sym.as_str())[..]);
4446
let shim_name = syn::Ident::from(&format!("{}_shim", name.sym.as_str())[..]);
4547
let (to_test, test_name) = if invoc.args.len() == 0 {
4648
(TokenStream::empty(), &func.ident)
@@ -67,7 +69,10 @@ pub fn assert_instr(attr: proc_macro::TokenStream,
6769
}
6870
};
6971
}
70-
let attrs = Append(&item.attrs);
72+
let attrs = item.attrs.iter().filter(|attr| {
73+
attr.path.segments.get(0).item().ident.sym.as_str().starts_with("target")
74+
}).collect::<Vec<_>>();
75+
let attrs = Append(&attrs);
7176
(quote! {
7277
#attrs
7378
unsafe fn #shim_name(#(#inputs),*) #ret {

0 commit comments

Comments
 (0)