Open
Description
I have some assembly like this: (Zig Godbolt LLVM Godbolt)
.LCPI0_0:
.quad 72340172838076673
prefix_xor_512:
vpopcntq zmm1, zmm0
vpcmpeqd xmm2, xmm2, xmm2
vpmovqb xmm1, zmm1
vpandq xmm1, xmm1, qword ptr [rip + .LCPI0_0]{1to2}
vpclmulqdq xmm1, xmm1, xmm2, 0
vpternlogd zmm2, zmm2, zmm2, 255
vpclmulqdq zmm3, zmm0, zmm2, 0
vpclmulqdq zmm0, zmm0, zmm2, 17
vpmovsxbq zmm1, xmm1
vpunpcklqdq zmm0, zmm3, zmm0
vpxorq zmm0, zmm0, zmm1
ret
Should be:
.LCPI0_0:
.quad 72340172838076673
prefix_xor_512:
vpopcntq zmm1, zmm0
- vpcmpeqd xmm2, xmm2, xmm2
+ vpternlogd zmm2, zmm2, zmm2, 255
vpmovqb xmm1, zmm1
vpandq xmm1, xmm1, qword ptr [rip + .LCPI0_0]{1to2}
vpclmulqdq xmm1, xmm1, xmm2, 0
- vpternlogd zmm2, zmm2, zmm2, 255
vpclmulqdq zmm3, zmm0, zmm2, 0
vpclmulqdq zmm0, zmm0, zmm2, 17
vpmovsxbq zmm1, xmm1
vpunpcklqdq zmm0, zmm3, zmm0
vpxorq zmm0, zmm0, zmm1
ret