Skip to content

Commit cc32e71

Browse files
committed
Make all TBM intrinsics safe
1 parent a725a10 commit cc32e71

File tree

2 files changed

+20
-20
lines changed

2 files changed

+20
-20
lines changed

crates/core_arch/src/x86/tbm.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ unsafe extern "C" {
3030
#[cfg_attr(test, assert_instr(bextr, CONTROL = 0x0404))]
3131
#[rustc_legacy_const_generics(1)]
3232
#[stable(feature = "simd_x86_updates", since = "1.82.0")]
33-
pub unsafe fn _bextri_u32<const CONTROL: u32>(a: u32) -> u32 {
33+
pub fn _bextri_u32<const CONTROL: u32>(a: u32) -> u32 {
3434
static_assert_uimm_bits!(CONTROL, 16);
3535
unsafe { bextri_u32(a, CONTROL) }
3636
}
@@ -42,7 +42,7 @@ pub unsafe fn _bextri_u32<const CONTROL: u32>(a: u32) -> u32 {
4242
#[target_feature(enable = "tbm")]
4343
#[cfg_attr(test, assert_instr(blcfill))]
4444
#[stable(feature = "simd_x86", since = "1.27.0")]
45-
pub unsafe fn _blcfill_u32(x: u32) -> u32 {
45+
pub fn _blcfill_u32(x: u32) -> u32 {
4646
x & (x.wrapping_add(1))
4747
}
4848

@@ -53,7 +53,7 @@ pub unsafe fn _blcfill_u32(x: u32) -> u32 {
5353
#[target_feature(enable = "tbm")]
5454
#[cfg_attr(test, assert_instr(blci))]
5555
#[stable(feature = "simd_x86", since = "1.27.0")]
56-
pub unsafe fn _blci_u32(x: u32) -> u32 {
56+
pub fn _blci_u32(x: u32) -> u32 {
5757
x | !x.wrapping_add(1)
5858
}
5959

@@ -64,7 +64,7 @@ pub unsafe fn _blci_u32(x: u32) -> u32 {
6464
#[target_feature(enable = "tbm")]
6565
#[cfg_attr(test, assert_instr(blcic))]
6666
#[stable(feature = "simd_x86", since = "1.27.0")]
67-
pub unsafe fn _blcic_u32(x: u32) -> u32 {
67+
pub fn _blcic_u32(x: u32) -> u32 {
6868
!x & x.wrapping_add(1)
6969
}
7070

@@ -76,7 +76,7 @@ pub unsafe fn _blcic_u32(x: u32) -> u32 {
7676
#[target_feature(enable = "tbm")]
7777
#[cfg_attr(test, assert_instr(blcmsk))]
7878
#[stable(feature = "simd_x86", since = "1.27.0")]
79-
pub unsafe fn _blcmsk_u32(x: u32) -> u32 {
79+
pub fn _blcmsk_u32(x: u32) -> u32 {
8080
x ^ x.wrapping_add(1)
8181
}
8282

@@ -87,7 +87,7 @@ pub unsafe fn _blcmsk_u32(x: u32) -> u32 {
8787
#[target_feature(enable = "tbm")]
8888
#[cfg_attr(test, assert_instr(blcs))]
8989
#[stable(feature = "simd_x86", since = "1.27.0")]
90-
pub unsafe fn _blcs_u32(x: u32) -> u32 {
90+
pub fn _blcs_u32(x: u32) -> u32 {
9191
x | x.wrapping_add(1)
9292
}
9393

@@ -98,7 +98,7 @@ pub unsafe fn _blcs_u32(x: u32) -> u32 {
9898
#[target_feature(enable = "tbm")]
9999
#[cfg_attr(test, assert_instr(blsfill))]
100100
#[stable(feature = "simd_x86", since = "1.27.0")]
101-
pub unsafe fn _blsfill_u32(x: u32) -> u32 {
101+
pub fn _blsfill_u32(x: u32) -> u32 {
102102
x | x.wrapping_sub(1)
103103
}
104104

@@ -109,7 +109,7 @@ pub unsafe fn _blsfill_u32(x: u32) -> u32 {
109109
#[target_feature(enable = "tbm")]
110110
#[cfg_attr(test, assert_instr(blsic))]
111111
#[stable(feature = "simd_x86", since = "1.27.0")]
112-
pub unsafe fn _blsic_u32(x: u32) -> u32 {
112+
pub fn _blsic_u32(x: u32) -> u32 {
113113
!x | x.wrapping_sub(1)
114114
}
115115

@@ -121,7 +121,7 @@ pub unsafe fn _blsic_u32(x: u32) -> u32 {
121121
#[target_feature(enable = "tbm")]
122122
#[cfg_attr(test, assert_instr(t1mskc))]
123123
#[stable(feature = "simd_x86", since = "1.27.0")]
124-
pub unsafe fn _t1mskc_u32(x: u32) -> u32 {
124+
pub fn _t1mskc_u32(x: u32) -> u32 {
125125
!x | x.wrapping_add(1)
126126
}
127127

@@ -133,7 +133,7 @@ pub unsafe fn _t1mskc_u32(x: u32) -> u32 {
133133
#[target_feature(enable = "tbm")]
134134
#[cfg_attr(test, assert_instr(tzmsk))]
135135
#[stable(feature = "simd_x86", since = "1.27.0")]
136-
pub unsafe fn _tzmsk_u32(x: u32) -> u32 {
136+
pub fn _tzmsk_u32(x: u32) -> u32 {
137137
!x & x.wrapping_sub(1)
138138
}
139139

crates/core_arch/src/x86_64/tbm.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ unsafe extern "C" {
3030
#[cfg_attr(test, assert_instr(bextr, CONTROL = 0x0404))]
3131
#[rustc_legacy_const_generics(1)]
3232
#[stable(feature = "simd_x86_updates", since = "1.82.0")]
33-
pub unsafe fn _bextri_u64<const CONTROL: u64>(a: u64) -> u64 {
33+
pub fn _bextri_u64<const CONTROL: u64>(a: u64) -> u64 {
3434
static_assert_uimm_bits!(CONTROL, 16);
3535
unsafe { bextri_u64(a, CONTROL) }
3636
}
@@ -42,7 +42,7 @@ pub unsafe fn _bextri_u64<const CONTROL: u64>(a: u64) -> u64 {
4242
#[target_feature(enable = "tbm")]
4343
#[cfg_attr(test, assert_instr(blcfill))]
4444
#[stable(feature = "simd_x86", since = "1.27.0")]
45-
pub unsafe fn _blcfill_u64(x: u64) -> u64 {
45+
pub fn _blcfill_u64(x: u64) -> u64 {
4646
x & x.wrapping_add(1)
4747
}
4848

@@ -53,7 +53,7 @@ pub unsafe fn _blcfill_u64(x: u64) -> u64 {
5353
#[target_feature(enable = "tbm")]
5454
#[cfg_attr(test, assert_instr(blci))]
5555
#[stable(feature = "simd_x86", since = "1.27.0")]
56-
pub unsafe fn _blci_u64(x: u64) -> u64 {
56+
pub fn _blci_u64(x: u64) -> u64 {
5757
x | !x.wrapping_add(1)
5858
}
5959

@@ -64,7 +64,7 @@ pub unsafe fn _blci_u64(x: u64) -> u64 {
6464
#[target_feature(enable = "tbm")]
6565
#[cfg_attr(test, assert_instr(blcic))]
6666
#[stable(feature = "simd_x86", since = "1.27.0")]
67-
pub unsafe fn _blcic_u64(x: u64) -> u64 {
67+
pub fn _blcic_u64(x: u64) -> u64 {
6868
!x & x.wrapping_add(1)
6969
}
7070

@@ -76,7 +76,7 @@ pub unsafe fn _blcic_u64(x: u64) -> u64 {
7676
#[target_feature(enable = "tbm")]
7777
#[cfg_attr(test, assert_instr(blcmsk))]
7878
#[stable(feature = "simd_x86", since = "1.27.0")]
79-
pub unsafe fn _blcmsk_u64(x: u64) -> u64 {
79+
pub fn _blcmsk_u64(x: u64) -> u64 {
8080
x ^ x.wrapping_add(1)
8181
}
8282

@@ -87,7 +87,7 @@ pub unsafe fn _blcmsk_u64(x: u64) -> u64 {
8787
#[target_feature(enable = "tbm")]
8888
#[cfg_attr(test, assert_instr(blcs))]
8989
#[stable(feature = "simd_x86", since = "1.27.0")]
90-
pub unsafe fn _blcs_u64(x: u64) -> u64 {
90+
pub fn _blcs_u64(x: u64) -> u64 {
9191
x | x.wrapping_add(1)
9292
}
9393

@@ -98,7 +98,7 @@ pub unsafe fn _blcs_u64(x: u64) -> u64 {
9898
#[target_feature(enable = "tbm")]
9999
#[cfg_attr(test, assert_instr(blsfill))]
100100
#[stable(feature = "simd_x86", since = "1.27.0")]
101-
pub unsafe fn _blsfill_u64(x: u64) -> u64 {
101+
pub fn _blsfill_u64(x: u64) -> u64 {
102102
x | x.wrapping_sub(1)
103103
}
104104

@@ -109,7 +109,7 @@ pub unsafe fn _blsfill_u64(x: u64) -> u64 {
109109
#[target_feature(enable = "tbm")]
110110
#[cfg_attr(test, assert_instr(blsic))]
111111
#[stable(feature = "simd_x86", since = "1.27.0")]
112-
pub unsafe fn _blsic_u64(x: u64) -> u64 {
112+
pub fn _blsic_u64(x: u64) -> u64 {
113113
!x | x.wrapping_sub(1)
114114
}
115115

@@ -121,7 +121,7 @@ pub unsafe fn _blsic_u64(x: u64) -> u64 {
121121
#[target_feature(enable = "tbm")]
122122
#[cfg_attr(test, assert_instr(t1mskc))]
123123
#[stable(feature = "simd_x86", since = "1.27.0")]
124-
pub unsafe fn _t1mskc_u64(x: u64) -> u64 {
124+
pub fn _t1mskc_u64(x: u64) -> u64 {
125125
!x | x.wrapping_add(1)
126126
}
127127

@@ -133,7 +133,7 @@ pub unsafe fn _t1mskc_u64(x: u64) -> u64 {
133133
#[target_feature(enable = "tbm")]
134134
#[cfg_attr(test, assert_instr(tzmsk))]
135135
#[stable(feature = "simd_x86", since = "1.27.0")]
136-
pub unsafe fn _tzmsk_u64(x: u64) -> u64 {
136+
pub fn _tzmsk_u64(x: u64) -> u64 {
137137
!x & x.wrapping_sub(1)
138138
}
139139

0 commit comments

Comments
 (0)