Zig Godbolt
LLVM Godbolt
const V = @Vector(4, u64);
const Vd = @Vector(4, u32);
export fn foo(a: V) V {
return @as(V, @as(Vd, @truncate(a))) >> @splat(11);
}
Currently:
.LCPI0_0:
.quad 2097151
foo:
vpsrlq ymm0, ymm0, 11
vpandq ymm0, ymm0, qword ptr [rip + .LCPI0_0]{1to4}
ret
Could be:
bar:
vpxor xmm1, xmm1, xmm1
vpblendd ymm0, ymm0, ymm1, 170
vpsrlq ymm0, ymm0, 11
ret