Skip to content

Commit 5110338

Browse files
committed
Fix CI, better memcmp tests
1 parent 83b4edd commit 5110338

File tree

3 files changed

+15
-48
lines changed

3 files changed

+15
-48
lines changed

src/mem/impls.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ pub unsafe fn set_bytes(mut s: *mut u8, c: u8, mut n: usize) {
267267
}
268268

269269
#[inline(always)]
270-
pub unsafe fn compare_bytes(s1: *const u8, s2: *const u8, n: usize) {
270+
pub unsafe fn compare_bytes(s1: *const u8, s2: *const u8, n: usize) -> i32 {
271271
let mut i = 0;
272272
while i < n {
273273
let a = *s1.add(i);

src/mem/x86_64.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -102,11 +102,7 @@ pub unsafe fn set_bytes(dest: *mut u8, c: u8, count: usize) {
102102
}
103103

104104
#[inline(always)]
105-
pub unsafe fn compare_bytes(
106-
a: *const u8,
107-
b: *const u8,
108-
n: usize,
109-
) -> i32 {
105+
pub unsafe fn compare_bytes(a: *const u8, b: *const u8, n: usize) -> i32 {
110106
unsafe fn cmp<T, U, F>(mut a: *const T, mut b: *const T, n: usize, f: F) -> i32
111107
where
112108
T: Clone + Copy + Eq,

testcrate/tests/mem.rs

Lines changed: 13 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -116,55 +116,26 @@ fn memset_nonzero() {
116116

117117
#[test]
118118
fn memcmp_eq() {
119-
let arr1: [u8; 32] = [
120-
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
121-
25, 26, 27, 28, 29, 30, 31,
122-
];
123-
let arr2: [u8; 32] = [
124-
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
125-
25, 26, 27, 28, 29, 30, 31,
126-
];
127-
for i in 0..32 {
119+
let arr1 @ arr2 = gen_arr::<256>();
120+
for i in 0..256 {
128121
unsafe {
129-
assert_eq!(memcmp(arr1.as_ptr(), arr2.as_ptr(), i), 0);
130-
assert_eq!(memcmp(arr2.as_ptr(), arr1.as_ptr(), i), 0);
122+
assert_eq!(memcmp(arr1.0.as_ptr(), arr2.0.as_ptr(), i), 0);
123+
assert_eq!(memcmp(arr2.0.as_ptr(), arr1.0.as_ptr(), i), 0);
131124
}
132125
}
133126
}
134127

135128
#[test]
136129
fn memcmp_ne() {
137-
let arr1: [u8; 8] = [0, 1, 2, 3, 4, 5, 6, 7];
138-
let arr2: [u8; 8] = [0, 1, 2, 3, 4, 5, 7, 7];
139-
unsafe {
140-
assert!(memcmp(arr1.as_ptr(), arr2.as_ptr(), 8) < 0);
141-
assert!(memcmp(arr2.as_ptr(), arr1.as_ptr(), 8) > 0);
142-
}
143-
}
144-
145-
#[test]
146-
fn memcmp_ne_16() {
147-
let arr1: [u8; 16] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
148-
let arr2: [u8; 16] = [0, 1, 2, 3, 4, 5, 7, 7, 8, 9, 10, 11, 12, 13, 14, 15];
149-
unsafe {
150-
assert!(memcmp(arr1.as_ptr(), arr2.as_ptr(), 16) < 0);
151-
assert!(memcmp(arr2.as_ptr(), arr1.as_ptr(), 16) > 0);
152-
}
153-
}
154-
155-
#[test]
156-
fn memcmp_ne_32() {
157-
let arr1: [u8; 32] = [
158-
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
159-
0, 0, 0, 0,
160-
];
161-
let arr2: [u8; 32] = [
162-
0, 1, 2, 3, 4, 5, 7, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
163-
0, 0, 0, 0,
164-
];
165-
unsafe {
166-
assert!(memcmp(arr1.as_ptr(), arr2.as_ptr(), 32) < 0);
167-
assert!(memcmp(arr2.as_ptr(), arr1.as_ptr(), 32) > 0);
130+
let arr1 @ arr2 = gen_arr::<256>();
131+
for i in 0..256 {
132+
let mut diff_arr = arr1;
133+
diff_arr.0[i] = 127;
134+
let expect = diff_arr.0[i].cmp(&arr2.0[i]);
135+
for k in i + 1..256 {
136+
let result = unsafe { memcmp(diff_arr.0.as_ptr(), arr2.0.as_ptr(), k) };
137+
assert_eq!(expect, result.cmp(&0));
138+
}
168139
}
169140
}
170141

0 commit comments

Comments
 (0)