; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s define <64 x i4> @pr62653(<64 x i4> %a0) nounwind { ; CHECK-LABEL: pr62653: ; CHECK: # %bb.0: ; CHECK-NEXT: movq %rdi, %rax ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %edi ; CHECK-NEXT: andl $15, %edi ; CHECK-NEXT: shll $4, %edi ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %r10d ; CHECK-NEXT: andl $15, %r10d ; CHECK-NEXT: orq %rdi, %r10 ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %edi ; CHECK-NEXT: andl $15, %edi ; CHECK-NEXT: shll $8, %edi ; CHECK-NEXT: orq %r10, %rdi ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %r10d ; CHECK-NEXT: andl $15, %r10d ; CHECK-NEXT: shll $12, %r10d ; CHECK-NEXT: orq %rdi, %r10 ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %edi ; CHECK-NEXT: andl $15, %edi ; CHECK-NEXT: shll $16, %edi ; CHECK-NEXT: orq %r10, %rdi ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %r10d ; CHECK-NEXT: andl $15, %r10d ; CHECK-NEXT: shll $20, %r10d ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %r11d ; CHECK-NEXT: andl $15, %r11d ; CHECK-NEXT: shll $24, %r11d ; CHECK-NEXT: orq %r10, %r11 ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %r10d ; CHECK-NEXT: shll $28, %r10d ; CHECK-NEXT: orq %r11, %r10 ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %r11d ; CHECK-NEXT: andl $15, %r11d ; CHECK-NEXT: shlq $32, %r11 ; CHECK-NEXT: orq %r10, %r11 ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %r10d ; CHECK-NEXT: andl $15, %r10d ; CHECK-NEXT: shlq $36, %r10 ; CHECK-NEXT: orq %r11, %r10 ; CHECK-NEXT: orq %rdi, %r10 ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %edi ; CHECK-NEXT: andl $15, %edi ; CHECK-NEXT: shlq $40, %rdi ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %r11d ; CHECK-NEXT: andl $15, %r11d ; CHECK-NEXT: shlq $44, %r11 ; CHECK-NEXT: orq %rdi, %r11 ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %edi ; CHECK-NEXT: andl $15, %edi ; CHECK-NEXT: shlq $48, %rdi ; CHECK-NEXT: orq %r11, %rdi ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %r11d ; CHECK-NEXT: andl $15, %r11d ; CHECK-NEXT: shlq $52, %r11 ; CHECK-NEXT: orq %rdi, %r11 ; CHECK-NEXT: orq %r10, %r11 ; CHECK-NEXT: movq %r11, 8(%rax) ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %edi ; CHECK-NEXT: andl $15, %edi ; CHECK-NEXT: shlq $32, %rdi ; CHECK-NEXT: andl $15, %esi ; CHECK-NEXT: andl $15, %edx ; CHECK-NEXT: shll $4, %edx ; CHECK-NEXT: orl %esi, %edx ; CHECK-NEXT: andl $15, %ecx ; CHECK-NEXT: shll $8, %ecx ; CHECK-NEXT: orl %edx, %ecx ; CHECK-NEXT: andl $15, %r8d ; CHECK-NEXT: shll $12, %r8d ; CHECK-NEXT: orl %ecx, %r8d ; CHECK-NEXT: andl $15, %r9d ; CHECK-NEXT: shll $16, %r9d ; CHECK-NEXT: orl %r8d, %r9d ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx ; CHECK-NEXT: andl $15, %ecx ; CHECK-NEXT: shll $20, %ecx ; CHECK-NEXT: orl %r9d, %ecx ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %edx ; CHECK-NEXT: andl $15, %edx ; CHECK-NEXT: shll $24, %edx ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %esi ; CHECK-NEXT: shll $28, %esi ; CHECK-NEXT: orl %edx, %esi ; CHECK-NEXT: orl %ecx, %esi ; CHECK-NEXT: orq %rdi, %rsi ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx ; CHECK-NEXT: andl $15, %ecx ; CHECK-NEXT: shlq $36, %rcx ; CHECK-NEXT: orq %rsi, %rcx ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %edx ; CHECK-NEXT: andl $15, %edx ; CHECK-NEXT: shlq $40, %rdx ; CHECK-NEXT: orq %rcx, %rdx ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx ; CHECK-NEXT: andl $15, %ecx ; CHECK-NEXT: shlq $44, %rcx ; CHECK-NEXT: orq %rdx, %rcx ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %edx ; CHECK-NEXT: andl $15, %edx ; CHECK-NEXT: shlq $48, %rdx ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %esi ; CHECK-NEXT: andl $15, %esi ; CHECK-NEXT: shlq $52, %rsi ; CHECK-NEXT: orq %rdx, %rsi ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %edx ; CHECK-NEXT: andl $15, %edx ; CHECK-NEXT: shlq $56, %rdx ; CHECK-NEXT: orq %rsi, %rdx ; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %esi ; CHECK-NEXT: shlq $60, %rsi ; CHECK-NEXT: orq %rdx, %rsi ; CHECK-NEXT: orq %rcx, %rsi ; CHECK-NEXT: movq %rsi, (%rax) ; CHECK-NEXT: retq %res = shufflevector <64 x i4> %a0, <64 x i4> zeroinitializer, <64 x i32> ret <64 x i4> %res }