I just fixed a bug in my previous patch, regarding the handling of single-float packs (vpermilpd instead of vpermilps). The new patch is attached.
I also tried to conditionally switch between AVX2 and AVX instructions, depending on what's available, but I haven't figured out how to detect the presence/absence of AVX2 during build. I tried (plusp (sb-alien:extern-alien "avx_supported" sb-alien:int)), but it seems sb-alien isn't available at the time simd-pack-256.lisp is loaded. Any better ideas?
I'd really like to see this fixed upstream. Please tell me what I should address before my patch can be merged.
I just fixed a bug in my previous patch, regarding the handling of single-float packs (vpermilpd instead of vpermilps). The new patch is attached.
I also tried to conditionally switch between AVX2 and AVX instructions, depending on what's available, but I haven't figured out how to detect the presence/absence of AVX2 during build. I tried (plusp (sb-alien: extern- alien "avx_supported" sb-alien:int)), but it seems sb-alien isn't available at the time simd-pack-256.lisp is loaded. Any better ideas?
I'd really like to see this fixed upstream. Please tell me what I should address before my patch can be merged.