Issue 209127
Summary [LV][X86] terrible autovectorization creates huge numbers of extractelement/insertelement
Labels backend:X86, vectorizers, missed-optimization
Assignees
Reporter Andarwinux
    found from https://github.com/zhongflyTeam/libbluray/blob/8b4fb6e2562bb86601ea5a2c4140af6d8f3f1cf4/src/util/strutl.c#L113-L124

```c
#include <stdint.h>

char *str_print_hex(char *out, const uint8_t *buf, int count)
{
    static const char nibble[16] = "0123456789abcdef";
    int zz;
    for (zz = 0; zz < count; zz++) {
        out[zz*2    ] = nibble[(buf[zz] >> 4) & 0xf];
        out[zz*2 + 1] = nibble[buf[zz] & 0x0f];
    }
    out[zz*2] = 0;

    return out;
}
```

```asm
str_print_hex:
  movq %rdi, %rax
  testl %edx, %edx
  jle .LBB0_3
  pushq %rbp
  pushq %r15
  pushq %r14
  pushq %r13
 pushq %r12
  pushq %rbx
  movl %edx, %r15d
  cmpl $8, %edx
  jb .LBB0_2
  leaq (%rsi,%r15), %rdi
  leaq (%rax,%r15,2), %rcx
  cmpq %rdi, %rax
  setb %dil
  cmpq %rcx, %rsi
  setb %cl
  testb %cl, %dil
  je .LBB0_6
.LBB0_2:
  xorl %r13d, %r13d
.LBB0_15:
  movq %r15, %rcx
  andq $7, %rcx
  movq %r13, %r8
  je .LBB0_18
  leaq str_print_hex.nibble(%rip), %r9
  movq %r13, %r8
.LBB0_17:
  movzbl (%rsi,%r8), %edi
  shrl $4, %edi
  movzbl (%rdi,%r9), %edi
  movb %dil, (%rax,%r8,2)
  movzbl (%rsi,%r8), %edi
  andl $15, %edi
  movzbl (%rdi,%r9), %edi
  movb %dil, 1(%rax,%r8,2)
  incq %r8
  decq %rcx
  jne .LBB0_17
.LBB0_18:
  subq %r15, %r13
  cmpq $-8, %r13
  ja .LBB0_21
  leaq str_print_hex.nibble(%rip), %rdi
.LBB0_20:
  movzbl (%rsi,%r8), %ecx
 shrl $4, %ecx
  movzbl (%rcx,%rdi), %ecx
  movb %cl, (%rax,%r8,2)
  movzbl (%rsi,%r8), %ecx
  andl $15, %ecx
  movzbl (%rcx,%rdi), %ecx
  movb %cl, 1(%rax,%r8,2)
  movzbl 1(%rsi,%r8), %ecx
  shrl $4, %ecx
  movzbl (%rcx,%rdi), %ecx
  movb %cl, 2(%rax,%r8,2)
  movzbl 1(%rsi,%r8), %ecx
 andl $15, %ecx
  movzbl (%rcx,%rdi), %ecx
  movb %cl, 3(%rax,%r8,2)
 movzbl 2(%rsi,%r8), %ecx
  shrl $4, %ecx
  movzbl (%rcx,%rdi), %ecx
  movb %cl, 4(%rax,%r8,2)
  movzbl 2(%rsi,%r8), %ecx
  andl $15, %ecx
  movzbl (%rcx,%rdi), %ecx
  movb %cl, 5(%rax,%r8,2)
  movzbl 3(%rsi,%r8), %ecx
 shrl $4, %ecx
  movzbl (%rcx,%rdi), %ecx
  movb %cl, 6(%rax,%r8,2)
 movzbl 3(%rsi,%r8), %ecx
  andl $15, %ecx
  movzbl (%rcx,%rdi), %ecx
 movb %cl, 7(%rax,%r8,2)
  movzbl 4(%rsi,%r8), %ecx
  shrl $4, %ecx
 movzbl (%rcx,%rdi), %ecx
  movb %cl, 8(%rax,%r8,2)
  movzbl 4(%rsi,%r8), %ecx
  andl $15, %ecx
  movzbl (%rcx,%rdi), %ecx
  movb %cl, 9(%rax,%r8,2)
  movzbl 5(%rsi,%r8), %ecx
  shrl $4, %ecx
  movzbl (%rcx,%rdi), %ecx
  movb %cl, 10(%rax,%r8,2)
  movzbl 5(%rsi,%r8), %ecx
 andl $15, %ecx
  movzbl (%rcx,%rdi), %ecx
  movb %cl, 11(%rax,%r8,2)
 movzbl 6(%rsi,%r8), %ecx
  shrl $4, %ecx
  movzbl (%rcx,%rdi), %ecx
  movb %cl, 12(%rax,%r8,2)
  movzbl 6(%rsi,%r8), %ecx
  andl $15, %ecx
  movzbl (%rcx,%rdi), %ecx
  movb %cl, 13(%rax,%r8,2)
  movzbl 7(%rsi,%r8), %ecx
 shrl $4, %ecx
  movzbl (%rcx,%rdi), %ecx
  movb %cl, 14(%rax,%r8,2)
 movzbl 7(%rsi,%r8), %ecx
  andl $15, %ecx
  movzbl (%rcx,%rdi), %ecx
 movb %cl, 15(%rax,%r8,2)
  addq $8, %r8
  cmpq %r8, %r15
  jne .LBB0_20
.LBB0_21:
  addl %edx, %edx
  popq %rbx
  popq %r12
  popq %r13
  popq %r14
  popq %r15
  popq %rbp
  movb $0, (%rax,%rdx)
 vzeroupper
  retq
.LBB0_3:
  xorl %edx, %edx
  movb $0, (%rax,%rdx)
 retq
.LBB0_6:
  cmpl $64, %edx
  jae .LBB0_8
  xorl %r13d, %r13d
  jmp .LBB0_12
.LBB0_8:
  vbroadcasti32x4 .LCPI0_3(%rip), %zmm0
 vbroadcasti32x4 .LCPI0_5(%rip), %zmm1
  vmovdqa64 .LCPI0_2(%rip), %zmm2
 movl %r15d, %r13d
  andl $2147483584, %r13d
  leaq str_print_hex.nibble(%rip), %r9
  xorl %r8d, %r8d
.LBB0_9:
  vmovdqu64 (%rsi,%r8), %zmm7
  vgf2p8affineqb $0, %zmm0, %zmm7, %zmm6
  vextracti64x4 $1, %zmm6, %ymm4
  vextracti128 $1, %ymm4, %xmm3
  vpmovzxbw %xmm3, %ymm5
 vpmovzxwq %xmm5, %zmm11
  vextracti128 $1, %ymm5, %xmm3
  vpmovzxbw %xmm4, %ymm5
  vpmovzxwq %xmm3, %zmm3
  vpmovzxwq %xmm5, %zmm10
  vextracti128 $1, %ymm5, %xmm4
  vextracti128 $1, %ymm6, %xmm5
  vpmovzxwq %xmm4, %zmm4
 vpmovzxbw %xmm5, %ymm8
  vmovd %xmm11, %r10d
  vpextrq $1, %xmm11, %rcx
 vextracti128 $1, %ymm11, %xmm12
  movzbl (%r10,%r9), %r10d
  vpmovzxwq %xmm8, %zmm9
  vextracti128 $1, %ymm8, %xmm5
  vpmovzxbw %xmm6, %ymm8
 vpmovzxwq %xmm5, %zmm5
  vextracti128 $1, %ymm8, %xmm6
  vpmovzxwq %xmm8, %zmm8
  vpmovzxwq %xmm6, %zmm6
  vmovd %r10d, %xmm13
  vpinsrb $1, (%rcx,%r9), %xmm13, %xmm13
  vmovd %xmm12, %r10d
  vpextrq $1, %xmm12, %rcx
  vextracti32x4 $2, %zmm11, %xmm12
  vextracti32x4 $3, %zmm11, %xmm11
  vpextrq $1, %xmm8, %rdi
  vpinsrb $2, (%r10,%r9), %xmm13, %xmm13
 vmovd %xmm12, %r10d
  vpinsrb $3, (%rcx,%r9), %xmm13, %xmm13
  vpextrq $1, %xmm12, %rcx
  vpinsrb $4, (%r10,%r9), %xmm13, %xmm12
  vmovd %xmm11, %r10d
  vpinsrb $5, (%rcx,%r9), %xmm12, %xmm12
  vpextrq $1, %xmm11, %rcx
 vpinsrb $6, (%r10,%r9), %xmm12, %xmm11
  vmovd %xmm3, %r10d
  vextracti128 $1, %ymm3, %xmm12
  vpinsrb $7, (%rcx,%r9), %xmm11, %xmm11
  vpextrq $1, %xmm3, %rcx
  vpinsrb $8, (%r10,%r9), %xmm11, %xmm11
  vmovd %xmm12, %r10d
  vpinsrb $9, (%rcx,%r9), %xmm11, %xmm11
  vpextrq $1, %xmm12, %rcx
 vextracti32x4 $2, %zmm3, %xmm12
  vextracti32x4 $3, %zmm3, %xmm3
  vpinsrb $10, (%r10,%r9), %xmm11, %xmm11
  vmovd %xmm12, %r10d
  vpinsrb $11, (%rcx,%r9), %xmm11, %xmm11
  vpextrq $1, %xmm12, %rcx
  vpinsrb $12, (%r10,%r9), %xmm11, %xmm11
  vmovd %xmm3, %r10d
  vpinsrb $13, (%rcx,%r9), %xmm11, %xmm11
  vpextrq $1, %xmm3, %rcx
  vpinsrb $14, (%r10,%r9), %xmm11, %xmm3
  vmovd %xmm10, %r10d
  vextracti128 $1, %ymm10, %xmm11
  movzbl (%r10,%r9), %r10d
  vpinsrb $15, (%rcx,%r9), %xmm3, %xmm3
  vpextrq $1, %xmm10, %rcx
  vmovd %r10d, %xmm12
  vpinsrb $1, (%rcx,%r9), %xmm12, %xmm12
  vmovd %xmm11, %r10d
  vpextrq $1, %xmm11, %rcx
  vextracti32x4 $2, %zmm10, %xmm11
  vextracti32x4 $3, %zmm10, %xmm10
  vpextrq $1, %xmm10, %r11
  vpinsrb $2, (%r10,%r9), %xmm12, %xmm12
  vmovd %xmm11, %r10d
 vpinsrb $3, (%rcx,%r9), %xmm12, %xmm12
  vpextrq $1, %xmm11, %rcx
  vpinsrb $4, (%r10,%r9), %xmm12, %xmm11
  vmovd %xmm10, %r10d
  vpinsrb $5, (%rcx,%r9), %xmm11, %xmm11
  vmovd %xmm8, %ecx
  movzbl (%rcx,%r9), %ecx
 vpinsrb $6, (%r10,%r9), %xmm11, %xmm10
  vmovd %xmm4, %r10d
  vextracti128 $1, %ymm4, %xmm11
  vpinsrb $7, (%r11,%r9), %xmm10, %xmm10
  vpextrq $1, %xmm9, %r11
  vpinsrb $8, (%r10,%r9), %xmm10, %xmm10
  vpextrq $1, %xmm4, %r10
  vpinsrb $9, (%r10,%r9), %xmm10, %xmm10
  vmovd %xmm11, %r10d
 vpinsrb $10, (%r10,%r9), %xmm10, %xmm10
  vpextrq $1, %xmm11, %r10
 vextracti32x4 $2, %zmm4, %xmm11
  vextracti32x4 $3, %zmm4, %xmm4
  vpinsrb $11, (%r10,%r9), %xmm10, %xmm10
  vmovd %xmm11, %r10d
  vpinsrb $12, (%r10,%r9), %xmm10, %xmm10
  vpextrq $1, %xmm11, %r10
  vextracti128 $1, %ymm9, %xmm11
  vpinsrb $13, (%r10,%r9), %xmm10, %xmm10
  vmovd %xmm4, %r10d
  vpinsrb $14, (%r10,%r9), %xmm10, %xmm10
  vpextrq $1, %xmm4, %r10
 vpinsrb $15, (%r10,%r9), %xmm10, %xmm4
  vmovd %xmm9, %r10d
  movzbl (%r10,%r9), %r10d
  vmovd %r10d, %xmm10
  vpinsrb $1, (%r11,%r9), %xmm10, %xmm10
  vmovd %xmm11, %r10d
  vinserti128 $1, %xmm3, %ymm4, %ymm3
 vpinsrb $2, (%r10,%r9), %xmm10, %xmm10
  vpextrq $1, %xmm11, %r10
 vextracti32x4 $2, %zmm9, %xmm11
  vextracti32x4 $3, %zmm9, %xmm9
  vpinsrb $3, (%r10,%r9), %xmm10, %xmm10
  vmovd %xmm11, %r10d
  vpinsrb $4, (%r10,%r9), %xmm10, %xmm10
  vpextrq $1, %xmm11, %r10
  vpinsrb $5, (%r10,%r9), %xmm10, %xmm10
  vmovd %xmm9, %r10d
  vpinsrb $6, (%r10,%r9), %xmm10, %xmm10
  vpextrq $1, %xmm9, %r10
  vpinsrb $7, (%r10,%r9), %xmm10, %xmm9
  vmovd %xmm5, %r10d
  vextracti128 $1, %ymm5, %xmm10
  vpinsrb $8, (%r10,%r9), %xmm9, %xmm9
  vpextrq $1, %xmm5, %r10
  vpinsrb $9, (%r10,%r9), %xmm9, %xmm9
  vmovd %xmm10, %r10d
  vpinsrb $10, (%r10,%r9), %xmm9, %xmm9
  vpextrq $1, %xmm10, %r10
  vextracti32x4 $2, %zmm5, %xmm10
 vextracti32x4 $3, %zmm5, %xmm5
  vpinsrb $11, (%r10,%r9), %xmm9, %xmm9
 vmovd %xmm10, %r10d
  vpinsrb $12, (%r10,%r9), %xmm9, %xmm9
  vpextrq $1, %xmm10, %r10
  vmovd %ecx, %xmm10
  vpinsrb $1, (%rdi,%r9), %xmm10, %xmm10
  vpinsrb $13, (%r10,%r9), %xmm9, %xmm9
  vmovd %xmm5, %r10d
 vpinsrb $14, (%r10,%r9), %xmm9, %xmm9
  vpextrq $1, %xmm5, %r10
  vpinsrb $15, (%r10,%r9), %xmm9, %xmm5
  vextracti128 $1, %ymm8, %xmm9
  vmovd %xmm9, %ecx
  vpextrq $1, %xmm9, %r10
  vextracti32x4 $2, %zmm8, %xmm9
 vextracti32x4 $3, %zmm8, %xmm8
  vpinsrb $2, (%rcx,%r9), %xmm10, %xmm10
 vmovd %xmm9, %ecx
  vpinsrb $3, (%r10,%r9), %xmm10, %xmm10
  vpextrq $1, %xmm9, %r10
  vpinsrb $4, (%rcx,%r9), %xmm10, %xmm9
  vmovd %xmm8, %ecx
 vpinsrb $5, (%r10,%r9), %xmm9, %xmm9
  vpextrq $1, %xmm8, %r10
  vpinsrb $6, (%rcx,%r9), %xmm9, %xmm8
  vmovd %xmm6, %ecx
  vextracti128 $1, %ymm6, %xmm9
  vpinsrb $7, (%r10,%r9), %xmm8, %xmm8
  vpextrq $1, %xmm6, %r10
 vpinsrb $8, (%rcx,%r9), %xmm8, %xmm8
  vmovd %xmm9, %ecx
  vpinsrb $9, (%r10,%r9), %xmm8, %xmm8
  vpextrq $1, %xmm9, %r10
  vextracti32x4 $2, %zmm6, %xmm9
  vextracti32x4 $3, %zmm6, %xmm6
  vpinsrb $10, (%rcx,%r9), %xmm8, %xmm8
  vmovd %xmm9, %ecx
  vpinsrb $11, (%r10,%r9), %xmm8, %xmm8
 vpextrq $1, %xmm9, %r10
  vpinsrb $12, (%rcx,%r9), %xmm8, %xmm8
  vmovd %xmm6, %ecx
  vpinsrb $13, (%r10,%r9), %xmm8, %xmm8
  vpextrq $1, %xmm6, %r10
  vpinsrb $14, (%rcx,%r9), %xmm8, %xmm6
  vpandq %zmm1, %zmm7, %zmm8
 vextracti64x4 $1, %zmm8, %ymm7
  vextracti128 $1, %ymm7, %xmm9
  vpmovzxbw %xmm9, %ymm9
  vpinsrb $15, (%r10,%r9), %xmm6, %xmm6
  vpmovzxwq %xmm9, %zmm11
  vextracti128 $1, %ymm9, %xmm10
  vpmovzxbw %xmm7, %ymm9
 vpmovzxwq %xmm10, %zmm10
  vextracti128 $1, %ymm9, %xmm7
  vpmovzxwq %xmm9, %zmm9
  vpmovzxwq %xmm7, %zmm7
  vmovd %xmm11, %r10d
  vpextrq $1, %xmm11, %rcx
  vextracti128 $1, %ymm11, %xmm12
  movzbl (%r10,%r9), %r10d
 vinserti128 $1, %xmm5, %ymm6, %ymm4
  vmovd %r10d, %xmm13
  vpinsrb $1, (%rcx,%r9), %xmm13, %xmm13
  vmovd %xmm12, %ecx
  vpextrq $1, %xmm12, %r10
  vextracti32x4 $2, %zmm11, %xmm12
  vextracti32x4 $3, %zmm11, %xmm11
  vpextrq $1, %xmm12, %r11
  vpinsrb $2, (%rcx,%r9), %xmm13, %xmm13
  vmovd %xmm12, %ecx
  vextracti128 $1, %ymm8, %xmm12
  vpmovzxbw %xmm8, %ymm8
  vpmovzxbw %xmm12, %ymm12
  vpinsrb $3, (%r10,%r9), %xmm13, %xmm13
  vmovd %xmm11, %r10d
  vpinsrb $4, (%rcx,%r9), %xmm13, %xmm13
 vpextrq $1, %xmm9, %rcx
  vpinsrb $5, (%r11,%r9), %xmm13, %xmm13
  vpinsrb $6, (%r10,%r9), %xmm13, %xmm13
  vpextrq $1, %xmm11, %r10
  vpinsrb $7, (%r10,%r9), %xmm13, %xmm11
  vmovd %xmm10, %r10d
  vextracti128 $1, %ymm10, %xmm13
  vpinsrb $8, (%r10,%r9), %xmm11, %xmm11
  vpextrq $1, %xmm10, %r10
  vpinsrb $9, (%r10,%r9), %xmm11, %xmm11
  vmovd %xmm13, %r10d
 vpinsrb $10, (%r10,%r9), %xmm11, %xmm11
  vpextrq $1, %xmm13, %r10
 vextracti32x4 $2, %zmm10, %xmm13
  vextracti32x4 $3, %zmm10, %xmm10
 vpinsrb $11, (%r10,%r9), %xmm11, %xmm11
  vmovd %xmm13, %r10d
  vpinsrb $12, (%r10,%r9), %xmm11, %xmm11
  vpextrq $1, %xmm13, %r10
  vpinsrb $13, (%r10,%r9), %xmm11, %xmm11
  vmovd %xmm10, %r10d
  vpinsrb $14, (%r10,%r9), %xmm11, %xmm11
  vpextrq $1, %xmm10, %r10
  vpinsrb $15, (%r10,%r9), %xmm11, %xmm10
  vmovd %xmm9, %r10d
  vextracti128 $1, %ymm9, %xmm11
 movzbl (%r10,%r9), %r10d
  vmovd %r10d, %xmm13
  vpinsrb $1, (%rcx,%r9), %xmm13, %xmm13
  vmovd %xmm11, %r10d
  vpextrq $1, %xmm11, %rcx
 vextracti32x4 $2, %zmm9, %xmm11
  vextracti32x4 $3, %zmm9, %xmm9
  vpinsrb $2, (%r10,%r9), %xmm13, %xmm13
  vmovd %xmm11, %r10d
  vpinsrb $3, (%rcx,%r9), %xmm13, %xmm13
  vpextrq $1, %xmm11, %rcx
  vextracti128 $1, %ymm12, %xmm11
  vpmovzxwq %xmm12, %zmm12
  vpmovzxwq %xmm11, %zmm11
 vpinsrb $4, (%r10,%r9), %xmm13, %xmm13
  vmovd %xmm9, %r10d
  vpinsrb $5, (%rcx,%r9), %xmm13, %xmm13
  vpextrq $1, %xmm9, %rcx
  vpinsrb $6, (%r10,%r9), %xmm13, %xmm9
  vmovd %xmm7, %r10d
  vextracti128 $1, %ymm7, %xmm13
  vpinsrb $7, (%rcx,%r9), %xmm9, %xmm9
  vpextrq $1, %xmm7, %rcx
 vpinsrb $8, (%r10,%r9), %xmm9, %xmm9
  vmovd %xmm13, %r10d
  vpinsrb $9, (%rcx,%r9), %xmm9, %xmm9
  vpextrq $1, %xmm13, %rcx
  vextracti32x4 $2, %zmm7, %xmm13
  vextracti32x4 $3, %zmm7, %xmm7
  vpinsrb $10, (%r10,%r9), %xmm9, %xmm9
  vmovd %xmm13, %r10d
  vpinsrb $11, (%rcx,%r9), %xmm9, %xmm9
  vpextrq $1, %xmm13, %rcx
  vpinsrb $12, (%r10,%r9), %xmm9, %xmm9
 vmovd %xmm7, %r10d
  vpinsrb $13, (%rcx,%r9), %xmm9, %xmm9
  vpextrq $1, %xmm7, %rcx
  vpinsrb $14, (%r10,%r9), %xmm9, %xmm7
  vmovd %xmm12, %r10d
 vextracti128 $1, %ymm12, %xmm9
  movzbl (%r10,%r9), %r10d
  vpinsrb $15, (%rcx,%r9), %xmm7, %xmm7
  vpextrq $1, %xmm12, %rcx
  vmovd %r10d, %xmm13
 vpinsrb $1, (%rcx,%r9), %xmm13, %xmm13
  vmovd %xmm9, %r10d
  vpextrq $1, %xmm9, %rcx
  vextracti32x4 $2, %zmm12, %xmm9
  vextracti32x4 $3, %zmm12, %xmm12
  vpinsrb $2, (%r10,%r9), %xmm13, %xmm13
  vmovd %xmm9, %r10d
 vinserti128 $1, %xmm10, %ymm7, %ymm5
  vpermt2b %zmm5, %zmm2, %zmm3
 vpinsrb $3, (%rcx,%r9), %xmm13, %xmm13
  vpextrq $1, %xmm9, %rcx
 vextracti128 $1, %ymm8, %xmm9
  vpmovzxwq %xmm8, %zmm8
  vpmovzxwq %xmm9, %zmm9
  vpinsrb $4, (%r10,%r9), %xmm13, %xmm13
  vmovd %xmm8, %r10d
 vpextrq $1, %xmm8, %rdi
  movzbl (%r10,%r9), %r10d
  vpinsrb $5, (%rcx,%r9), %xmm13, %xmm13
  vmovd %xmm12, %ecx
  vpinsrb $6, (%rcx,%r9), %xmm13, %xmm13
  vpextrq $1, %xmm12, %rcx
  vpinsrb $7, (%rcx,%r9), %xmm13, %xmm12
  vmovd %xmm11, %ecx
  vextracti128 $1, %ymm11, %xmm13
  vpinsrb $8, (%rcx,%r9), %xmm12, %xmm12
  vpextrq $1, %xmm11, %rcx
  vpinsrb $9, (%rcx,%r9), %xmm12, %xmm12
  vmovd %xmm13, %ecx
  vpinsrb $10, (%rcx,%r9), %xmm12, %xmm12
  vpextrq $1, %xmm13, %rcx
  vextracti32x4 $2, %zmm11, %xmm13
  vextracti32x4 $3, %zmm11, %xmm11
  vpinsrb $11, (%rcx,%r9), %xmm12, %xmm12
  vmovd %xmm13, %ecx
  vpinsrb $12, (%rcx,%r9), %xmm12, %xmm12
  vpextrq $1, %xmm13, %rcx
  vmovd %r10d, %xmm13
  vpinsrb $1, (%rdi,%r9), %xmm13, %xmm13
  vpinsrb $13, (%rcx,%r9), %xmm12, %xmm12
 vmovd %xmm11, %ecx
  vpinsrb $14, (%rcx,%r9), %xmm12, %xmm12
  vpextrq $1, %xmm11, %rcx
  vpinsrb $15, (%rcx,%r9), %xmm12, %xmm11
  vextracti128 $1, %ymm8, %xmm12
  vmovd %xmm12, %ecx
  vpextrq $1, %xmm12, %r10
 vextracti32x4 $2, %zmm8, %xmm12
  vextracti32x4 $3, %zmm8, %xmm8
  vpinsrb $2, (%rcx,%r9), %xmm13, %xmm13
  vpextrq $1, %xmm12, %rcx
  vpinsrb $3, (%r10,%r9), %xmm13, %xmm13
  vmovd %xmm12, %r10d
  vpinsrb $4, (%r10,%r9), %xmm13, %xmm12
  vpextrq $1, %xmm8, %r10
  vpinsrb $5, (%rcx,%r9), %xmm12, %xmm12
  vmovd %xmm8, %ecx
  vpinsrb $6, (%rcx,%r9), %xmm12, %xmm8
  vmovd %xmm9, %ecx
  vextracti128 $1, %ymm9, %xmm12
  vpinsrb $7, (%r10,%r9), %xmm8, %xmm8
  vpextrq $1, %xmm9, %r10
  vpinsrb $8, (%rcx,%r9), %xmm8, %xmm8
  vmovd %xmm12, %ecx
  vpinsrb $9, (%r10,%r9), %xmm8, %xmm8
 vpextrq $1, %xmm12, %r10
  vextracti32x4 $2, %zmm9, %xmm12
  vextracti32x4 $3, %zmm9, %xmm9
  vpinsrb $10, (%rcx,%r9), %xmm8, %xmm8
  vmovd %xmm12, %ecx
  vpinsrb $11, (%r10,%r9), %xmm8, %xmm8
  vpextrq $1, %xmm12, %r10
 vpinsrb $12, (%rcx,%r9), %xmm8, %xmm8
  vmovd %xmm9, %ecx
  vpinsrb $13, (%r10,%r9), %xmm8, %xmm8
  vpextrq $1, %xmm9, %r10
  vpinsrb $14, (%rcx,%r9), %xmm8, %xmm8
  vpinsrb $15, (%r10,%r9), %xmm8, %xmm8
 vmovdqu64 %zmm3, 64(%rax,%r8,2)
  vinserti128 $1, %xmm11, %ymm8, %ymm6
 vpermt2b %zmm6, %zmm2, %zmm4
  vmovdqu64 %zmm4, (%rax,%r8,2)
  addq $64, %r8
  cmpq %r8, %r13
  jne .LBB0_9
  cmpl %r15d, %r13d
  je .LBB0_21
 testb $56, %r15b
  je .LBB0_15
.LBB0_12:
  vpbroadcastq .LCPI0_6(%rip), %xmm0
  vpbroadc<truncated>Please see the issue for the entire body.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to