Open
Description
Just me or is this bad codegen?
extern crate packed_simd;
use std::arch::x86_64::*;
use packed_simd::*;
pub fn le_i8x16(x: i8x16, y: i8x16) -> bool {
x.le(y).all()
}
.section __TEXT,__text,regular,pure_instructions
.globl __ZN9temp_test8le_i8x1617h13e72ae756b29df4E
.p2align 4, 0x90
__ZN9temp_test8le_i8x1617h13e72ae756b29df4E:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
vmovdqa (%rdi), %xmm0
vpcmpgtb (%rsi), %xmm0, %xmm0
vpcmpeqd %xmm1, %xmm1, %xmm1
vpxor %xmm1, %xmm0, %xmm0
vptest %xmm1, %xmm0
setb %al
popq %rbp
retq
.cfi_endproc
vs
pub unsafe fn int_u8x16(x: __m128i, y: __m128i) -> bool {
let mask = _mm_cmpgt_epi8(x, y);
1 == _mm_test_all_zeros(mask, mask)
}
.globl __ZN9temp_test9int_u8x1617h00120f998e226c4eE
.p2align 4, 0x90
__ZN9temp_test9int_u8x1617h00120f998e226c4eE:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
vmovdqa (%rdi), %xmm0
vpcmpgtb (%rsi), %xmm0, %xmm0
vptest %xmm0, %xmm0
sete %al
popq %rbp
retq
.cfi_endproc