e
Diffstat (limited to 'benches/iai_simd.rs')
-rwxr-xr-xbenches/iai_simd.rs45
1 files changed, 45 insertions, 0 deletions
diff --git a/benches/iai_simd.rs b/benches/iai_simd.rs
new file mode 100755
index 0000000..c3a20c9
--- /dev/null
+++ b/benches/iai_simd.rs
@@ -0,0 +1,45 @@
+use imgref::{Img, ImgRefMut};
+
+const WIDTH: usize = 640;
+const HEIGHT: usize = 480;
+
+static mut BUFFER: [u32; WIDTH * HEIGHT] = [0; WIDTH * HEIGHT];
+
+#[inline(always)]
+fn img() -> ImgRefMut<'static, u32> {
+ Img::new(unsafe { &mut BUFFER[..] }, WIDTH, HEIGHT)
+}
+
+use slur::simd_blur_argb;
+
+fn blur_argb_u32x1() {
+ simd_blur_argb::<1>(&mut img(), 16)
+}
+fn blur_argb_u32x2() {
+ simd_blur_argb::<2>(&mut img(), 16)
+}
+fn blur_argb_u32x4() {
+ simd_blur_argb::<4>(&mut img(), 16)
+}
+fn blur_argb_u32x8() {
+ simd_blur_argb::<8>(&mut img(), 16)
+}
+fn blur_argb_u32x16() {
+ simd_blur_argb::<16>(&mut img(), 16)
+}
+fn blur_argb_u32x32() {
+ simd_blur_argb::<32>(&mut img(), 16)
+}
+fn blur_argb_u32x64() {
+ simd_blur_argb::<64>(&mut img(), 16)
+}
+
+iai::main!(
+ blur_argb_u32x1,
+ blur_argb_u32x2,
+ blur_argb_u32x4,
+ blur_argb_u32x8,
+ blur_argb_u32x16,
+ blur_argb_u32x32,
+ blur_argb_u32x64,
+);