Skip to content

Commit 762a99a

Browse files
committed
add dummy test cases
1 parent 2ad340e commit 762a99a

File tree

3 files changed

+101
-0
lines changed

3 files changed

+101
-0
lines changed

tests/ui/vectorize/batch_sqnorm.rs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// We want a batch size of 4, and hardcode the size of one element.
2+
// It would be somewhat nice if the final interface can deduce the 8, not sure.
3+
#[vectorize(dsqnorm, Batch, 4 * 8)]
4+
fn sqnorm(x: &[f64]) -> f64 {
5+
x.iter().map(|&x| x * x).sum()
6+
}
7+
8+
fn main() {
9+
let x1 = vec![1.0; 4 * 8];
10+
let x2 = vec![1.0; 4 * 8];
11+
let mut res1 = 0.0;
12+
for i in 0..4 * 8 {
13+
res1 += sqnorm(&x1[i..i + 1]);
14+
}
15+
let res2 = dsqnorm(&x2);
16+
17+
for i in 0..4 * 8 {
18+
assert_eq!(res1, res2[i]);
19+
}
20+
}

tests/ui/vectorize/vector_char-ptr.rs

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
2+
#[repr(C, packed)]
3+
struct Foo {
4+
arr: [i32; 3],
5+
x: f64,
6+
y: f32,
7+
res: f64,
8+
}
9+
10+
//#pragma pack(1)
11+
//struct Foo {
12+
// int arr[3];
13+
// double x;
14+
// float y;
15+
// double res;
16+
//};
17+
18+
#[vectorize(df, Vector, 4)]
19+
unsafe fn f(foo: *mut i32) {
20+
let xptr = foo.add(3) as *mut f64;
21+
let yptr = foo.add(5) as *mut f32;
22+
let resptr = foo.add(6) as *mut f64;
23+
let x: f64 = *xptr;
24+
let y: f32 = *yptr;
25+
*resptr = x * y;
26+
}
27+
28+
//void df(char *dfoo1, char *dfoo2, char *dfoo3, char *dfoo4) {
29+
// __enzyme_batch((void *)f, enzyme_width, 4, dfoo1, dfoo2, dfoo3, dfoo4);
30+
//}
31+
32+
fn main() {
33+
let foo1: Foo = Foo { [0,0,0], 10.0, 9.0, 0.0 };
34+
let foo2: Foo = Foo { [0,0,0], 99.0, 7.0, 0.0 };
35+
let foo3: Foo = Foo { [0,0,0], 1.10, 9.0, 0.0 };
36+
let foo4: Foo = Foo { [0,0,0], 3.14, 0.1, 0.0 };
37+
38+
let expected = [90.0, 693.0, 9.9, 0.314};
39+
40+
df(&foo1.as_ptr() as *mut i32,
41+
&foo2.as_ptr() as *mut i32,
42+
&foo3.as_ptr() as *mut i32,
43+
&foo4.as_ptr() as *mut i32);
44+
45+
assert_eq!(foo1.res, expected[0]);
46+
assert_eq!(foo2.res, expected[1]);
47+
assert_eq!(foo3.res, expected[2]);
48+
assert_eq!(foo4.res, expected[3]);
49+
}

tests/ui/vectorize/vector_square.rs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
struct Vector {
2+
x1: f64,
3+
x2: f64,
4+
x3: f64,
5+
x4: f64,
6+
}
7+
8+
//extern Vector __enzyme_batch(...);
9+
10+
//extern int enzyme_width;
11+
//extern int enzyme_vector;
12+
//extern int enzyme_scalar;
13+
14+
#[vectorize(vecsquare, Vector, 4)]
15+
#[vectorize(vecsquare8, Vector, 8)]
16+
fn square(x: f64) -> f64 {
17+
x * x
18+
}
19+
20+
//Vector vecsquare(double x1, double x2, double x3, double x4) {
21+
// return __enzyme_batch(square, enzyme_width, 4, enzyme_vector, x1, x2, x3, x4);
22+
//}
23+
24+
fn main() {
25+
let vals = [23.1, 10.0, 100.0, 3.14];
26+
let expected = [square(vals[0]), square(vals[1]), square(vals[2]), square(vals[3])];
27+
let result = vecsquare(vals[0], vals[1], vals[2], vals[3]);
28+
assert_eq!(result.x1, expected[0]);
29+
assert_eq!(result.x2, expected[1]);
30+
assert_eq!(result.x3, expected[2]);
31+
assert_eq!(result.x4, expected[3]);
32+
}

0 commit comments

Comments
 (0)