Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
test/CodeGen/X86/merge-consecutive-loads-128.ll
Show First 20 Lines • Show All 70 Lines • ▼ Show 20 Lines | |||||
; X32-SSE1-NEXT: movl 12(%ecx), %esi | ; X32-SSE1-NEXT: movl 12(%ecx), %esi | ||||
; X32-SSE1-NEXT: movl 16(%ecx), %edi | ; X32-SSE1-NEXT: movl 16(%ecx), %edi | ||||
; X32-SSE1-NEXT: movl 20(%ecx), %ecx | ; X32-SSE1-NEXT: movl 20(%ecx), %ecx | ||||
; X32-SSE1-NEXT: movl %ecx, 12(%eax) | ; X32-SSE1-NEXT: movl %ecx, 12(%eax) | ||||
; X32-SSE1-NEXT: movl %edi, 8(%eax) | ; X32-SSE1-NEXT: movl %edi, 8(%eax) | ||||
; X32-SSE1-NEXT: movl %esi, 4(%eax) | ; X32-SSE1-NEXT: movl %esi, 4(%eax) | ||||
; X32-SSE1-NEXT: movl %edx, (%eax) | ; X32-SSE1-NEXT: movl %edx, (%eax) | ||||
; X32-SSE1-NEXT: popl %esi | ; X32-SSE1-NEXT: popl %esi | ||||
; X32-SSE1-NEXT: .Lcfi4: | |||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 8 | |||||
; X32-SSE1-NEXT: popl %edi | ; X32-SSE1-NEXT: popl %edi | ||||
; X32-SSE1-NEXT: .Lcfi5: | |||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 4 | |||||
; X32-SSE1-NEXT: retl $4 | ; X32-SSE1-NEXT: retl $4 | ||||
; | ; | ||||
; X32-SSE41-LABEL: merge_2i64_i64_12: | ; X32-SSE41-LABEL: merge_2i64_i64_12: | ||||
; X32-SSE41: # BB#0: | ; X32-SSE41: # BB#0: | ||||
; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax | ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax | ||||
; X32-SSE41-NEXT: movups 8(%eax), %xmm0 | ; X32-SSE41-NEXT: movups 8(%eax), %xmm0 | ||||
; X32-SSE41-NEXT: retl | ; X32-SSE41-NEXT: retl | ||||
%ptr0 = getelementptr inbounds i64, i64* %ptr, i64 1 | %ptr0 = getelementptr inbounds i64, i64* %ptr, i64 1 | ||||
▲ Show 20 Lines • Show All 284 Lines • ▼ Show 20 Lines | |||||
; AVX-LABEL: merge_4i32_i32_23u5: | ; AVX-LABEL: merge_4i32_i32_23u5: | ||||
; AVX: # BB#0: | ; AVX: # BB#0: | ||||
; AVX-NEXT: vmovups 8(%rdi), %xmm0 | ; AVX-NEXT: vmovups 8(%rdi), %xmm0 | ||||
; AVX-NEXT: retq | ; AVX-NEXT: retq | ||||
; | ; | ||||
; X32-SSE1-LABEL: merge_4i32_i32_23u5: | ; X32-SSE1-LABEL: merge_4i32_i32_23u5: | ||||
; X32-SSE1: # BB#0: | ; X32-SSE1: # BB#0: | ||||
; X32-SSE1-NEXT: pushl %esi | ; X32-SSE1-NEXT: pushl %esi | ||||
; X32-SSE1-NEXT: .Lcfi4: | ; X32-SSE1-NEXT: .Lcfi6: | ||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 8 | ; X32-SSE1-NEXT: .cfi_def_cfa_offset 8 | ||||
; X32-SSE1-NEXT: .Lcfi5: | ; X32-SSE1-NEXT: .Lcfi7: | ||||
; X32-SSE1-NEXT: .cfi_offset %esi, -8 | ; X32-SSE1-NEXT: .cfi_offset %esi, -8 | ||||
; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %eax | ; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %eax | ||||
; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %ecx | ; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %ecx | ||||
; X32-SSE1-NEXT: movl 8(%ecx), %edx | ; X32-SSE1-NEXT: movl 8(%ecx), %edx | ||||
; X32-SSE1-NEXT: movl 12(%ecx), %esi | ; X32-SSE1-NEXT: movl 12(%ecx), %esi | ||||
; X32-SSE1-NEXT: movl 20(%ecx), %ecx | ; X32-SSE1-NEXT: movl 20(%ecx), %ecx | ||||
; X32-SSE1-NEXT: movl %esi, 4(%eax) | ; X32-SSE1-NEXT: movl %esi, 4(%eax) | ||||
; X32-SSE1-NEXT: movl %edx, (%eax) | ; X32-SSE1-NEXT: movl %edx, (%eax) | ||||
; X32-SSE1-NEXT: movl %ecx, 12(%eax) | ; X32-SSE1-NEXT: movl %ecx, 12(%eax) | ||||
; X32-SSE1-NEXT: popl %esi | ; X32-SSE1-NEXT: popl %esi | ||||
; X32-SSE1-NEXT: .Lcfi8: | |||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 4 | |||||
; X32-SSE1-NEXT: retl $4 | ; X32-SSE1-NEXT: retl $4 | ||||
; | ; | ||||
; X32-SSE41-LABEL: merge_4i32_i32_23u5: | ; X32-SSE41-LABEL: merge_4i32_i32_23u5: | ||||
; X32-SSE41: # BB#0: | ; X32-SSE41: # BB#0: | ||||
; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax | ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax | ||||
; X32-SSE41-NEXT: movups 8(%eax), %xmm0 | ; X32-SSE41-NEXT: movups 8(%eax), %xmm0 | ||||
; X32-SSE41-NEXT: retl | ; X32-SSE41-NEXT: retl | ||||
%ptr0 = getelementptr inbounds i32, i32* %ptr, i64 2 | %ptr0 = getelementptr inbounds i32, i32* %ptr, i64 2 | ||||
▲ Show 20 Lines • Show All 121 Lines • ▼ Show 20 Lines | |||||
; AVX-LABEL: merge_8i16_i16_23u567u9: | ; AVX-LABEL: merge_8i16_i16_23u567u9: | ||||
; AVX: # BB#0: | ; AVX: # BB#0: | ||||
; AVX-NEXT: vmovups 4(%rdi), %xmm0 | ; AVX-NEXT: vmovups 4(%rdi), %xmm0 | ||||
; AVX-NEXT: retq | ; AVX-NEXT: retq | ||||
; | ; | ||||
; X32-SSE1-LABEL: merge_8i16_i16_23u567u9: | ; X32-SSE1-LABEL: merge_8i16_i16_23u567u9: | ||||
; X32-SSE1: # BB#0: | ; X32-SSE1: # BB#0: | ||||
; X32-SSE1-NEXT: pushl %ebp | ; X32-SSE1-NEXT: pushl %ebp | ||||
; X32-SSE1-NEXT: .Lcfi6: | ; X32-SSE1-NEXT: .Lcfi9: | ||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 8 | ; X32-SSE1-NEXT: .cfi_def_cfa_offset 8 | ||||
; X32-SSE1-NEXT: pushl %ebx | ; X32-SSE1-NEXT: pushl %ebx | ||||
; X32-SSE1-NEXT: .Lcfi7: | ; X32-SSE1-NEXT: .Lcfi10: | ||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 12 | ; X32-SSE1-NEXT: .cfi_def_cfa_offset 12 | ||||
; X32-SSE1-NEXT: pushl %edi | ; X32-SSE1-NEXT: pushl %edi | ||||
; X32-SSE1-NEXT: .Lcfi8: | ; X32-SSE1-NEXT: .Lcfi11: | ||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 16 | ; X32-SSE1-NEXT: .cfi_def_cfa_offset 16 | ||||
; X32-SSE1-NEXT: pushl %esi | ; X32-SSE1-NEXT: pushl %esi | ||||
; X32-SSE1-NEXT: .Lcfi9: | ; X32-SSE1-NEXT: .Lcfi12: | ||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 20 | ; X32-SSE1-NEXT: .cfi_def_cfa_offset 20 | ||||
; X32-SSE1-NEXT: .Lcfi10: | ; X32-SSE1-NEXT: .Lcfi13: | ||||
; X32-SSE1-NEXT: .cfi_offset %esi, -20 | ; X32-SSE1-NEXT: .cfi_offset %esi, -20 | ||||
; X32-SSE1-NEXT: .Lcfi11: | ; X32-SSE1-NEXT: .Lcfi14: | ||||
; X32-SSE1-NEXT: .cfi_offset %edi, -16 | ; X32-SSE1-NEXT: .cfi_offset %edi, -16 | ||||
; X32-SSE1-NEXT: .Lcfi12: | ; X32-SSE1-NEXT: .Lcfi15: | ||||
; X32-SSE1-NEXT: .cfi_offset %ebx, -12 | ; X32-SSE1-NEXT: .cfi_offset %ebx, -12 | ||||
; X32-SSE1-NEXT: .Lcfi13: | ; X32-SSE1-NEXT: .Lcfi16: | ||||
; X32-SSE1-NEXT: .cfi_offset %ebp, -8 | ; X32-SSE1-NEXT: .cfi_offset %ebp, -8 | ||||
; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %eax | ; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %eax | ||||
; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %ecx | ; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %ecx | ||||
; X32-SSE1-NEXT: movzwl 4(%ecx), %edx | ; X32-SSE1-NEXT: movzwl 4(%ecx), %edx | ||||
; X32-SSE1-NEXT: movzwl 6(%ecx), %esi | ; X32-SSE1-NEXT: movzwl 6(%ecx), %esi | ||||
; X32-SSE1-NEXT: movzwl 10(%ecx), %edi | ; X32-SSE1-NEXT: movzwl 10(%ecx), %edi | ||||
; X32-SSE1-NEXT: movzwl 12(%ecx), %ebx | ; X32-SSE1-NEXT: movzwl 12(%ecx), %ebx | ||||
; X32-SSE1-NEXT: movzwl 14(%ecx), %ebp | ; X32-SSE1-NEXT: movzwl 14(%ecx), %ebp | ||||
; X32-SSE1-NEXT: movzwl 18(%ecx), %ecx | ; X32-SSE1-NEXT: movzwl 18(%ecx), %ecx | ||||
; X32-SSE1-NEXT: movw %bp, 10(%eax) | ; X32-SSE1-NEXT: movw %bp, 10(%eax) | ||||
; X32-SSE1-NEXT: movw %bx, 8(%eax) | ; X32-SSE1-NEXT: movw %bx, 8(%eax) | ||||
; X32-SSE1-NEXT: movw %cx, 14(%eax) | ; X32-SSE1-NEXT: movw %cx, 14(%eax) | ||||
; X32-SSE1-NEXT: movw %si, 2(%eax) | ; X32-SSE1-NEXT: movw %si, 2(%eax) | ||||
; X32-SSE1-NEXT: movw %dx, (%eax) | ; X32-SSE1-NEXT: movw %dx, (%eax) | ||||
; X32-SSE1-NEXT: movw %di, 6(%eax) | ; X32-SSE1-NEXT: movw %di, 6(%eax) | ||||
; X32-SSE1-NEXT: popl %esi | ; X32-SSE1-NEXT: popl %esi | ||||
; X32-SSE1-NEXT: .Lcfi17: | |||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 16 | |||||
; X32-SSE1-NEXT: popl %edi | ; X32-SSE1-NEXT: popl %edi | ||||
; X32-SSE1-NEXT: .Lcfi18: | |||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 12 | |||||
; X32-SSE1-NEXT: popl %ebx | ; X32-SSE1-NEXT: popl %ebx | ||||
; X32-SSE1-NEXT: .Lcfi19: | |||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 8 | |||||
; X32-SSE1-NEXT: popl %ebp | ; X32-SSE1-NEXT: popl %ebp | ||||
; X32-SSE1-NEXT: .Lcfi20: | |||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 4 | |||||
; X32-SSE1-NEXT: retl $4 | ; X32-SSE1-NEXT: retl $4 | ||||
; | ; | ||||
; X32-SSE41-LABEL: merge_8i16_i16_23u567u9: | ; X32-SSE41-LABEL: merge_8i16_i16_23u567u9: | ||||
; X32-SSE41: # BB#0: | ; X32-SSE41: # BB#0: | ||||
; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax | ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax | ||||
; X32-SSE41-NEXT: movups 4(%eax), %xmm0 | ; X32-SSE41-NEXT: movups 4(%eax), %xmm0 | ||||
; X32-SSE41-NEXT: retl | ; X32-SSE41-NEXT: retl | ||||
%ptr0 = getelementptr inbounds i16, i16* %ptr, i64 2 | %ptr0 = getelementptr inbounds i16, i16* %ptr, i64 2 | ||||
▲ Show 20 Lines • Show All 61 Lines • ▼ Show 20 Lines | |||||
; AVX-LABEL: merge_8i16_i16_45u7zzzz: | ; AVX-LABEL: merge_8i16_i16_45u7zzzz: | ||||
; AVX: # BB#0: | ; AVX: # BB#0: | ||||
; AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero | ; AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero | ||||
; AVX-NEXT: retq | ; AVX-NEXT: retq | ||||
; | ; | ||||
; X32-SSE1-LABEL: merge_8i16_i16_45u7zzzz: | ; X32-SSE1-LABEL: merge_8i16_i16_45u7zzzz: | ||||
; X32-SSE1: # BB#0: | ; X32-SSE1: # BB#0: | ||||
; X32-SSE1-NEXT: pushl %esi | ; X32-SSE1-NEXT: pushl %esi | ||||
; X32-SSE1-NEXT: .Lcfi14: | ; X32-SSE1-NEXT: .Lcfi21: | ||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 8 | ; X32-SSE1-NEXT: .cfi_def_cfa_offset 8 | ||||
; X32-SSE1-NEXT: .Lcfi15: | ; X32-SSE1-NEXT: .Lcfi22: | ||||
; X32-SSE1-NEXT: .cfi_offset %esi, -8 | ; X32-SSE1-NEXT: .cfi_offset %esi, -8 | ||||
; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %eax | ; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %eax | ||||
; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %ecx | ; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %ecx | ||||
; X32-SSE1-NEXT: movzwl 8(%ecx), %edx | ; X32-SSE1-NEXT: movzwl 8(%ecx), %edx | ||||
; X32-SSE1-NEXT: movzwl 10(%ecx), %esi | ; X32-SSE1-NEXT: movzwl 10(%ecx), %esi | ||||
; X32-SSE1-NEXT: movzwl 14(%ecx), %ecx | ; X32-SSE1-NEXT: movzwl 14(%ecx), %ecx | ||||
; X32-SSE1-NEXT: movw %si, 2(%eax) | ; X32-SSE1-NEXT: movw %si, 2(%eax) | ||||
; X32-SSE1-NEXT: movw %dx, (%eax) | ; X32-SSE1-NEXT: movw %dx, (%eax) | ||||
; X32-SSE1-NEXT: movw %cx, 6(%eax) | ; X32-SSE1-NEXT: movw %cx, 6(%eax) | ||||
; X32-SSE1-NEXT: movw $0, 14(%eax) | ; X32-SSE1-NEXT: movw $0, 14(%eax) | ||||
; X32-SSE1-NEXT: movw $0, 12(%eax) | ; X32-SSE1-NEXT: movw $0, 12(%eax) | ||||
; X32-SSE1-NEXT: movw $0, 10(%eax) | ; X32-SSE1-NEXT: movw $0, 10(%eax) | ||||
; X32-SSE1-NEXT: movw $0, 8(%eax) | ; X32-SSE1-NEXT: movw $0, 8(%eax) | ||||
; X32-SSE1-NEXT: popl %esi | ; X32-SSE1-NEXT: popl %esi | ||||
; X32-SSE1-NEXT: .Lcfi23: | |||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 4 | |||||
; X32-SSE1-NEXT: retl $4 | ; X32-SSE1-NEXT: retl $4 | ||||
; | ; | ||||
; X32-SSE41-LABEL: merge_8i16_i16_45u7zzzz: | ; X32-SSE41-LABEL: merge_8i16_i16_45u7zzzz: | ||||
; X32-SSE41: # BB#0: | ; X32-SSE41: # BB#0: | ||||
; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax | ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax | ||||
; X32-SSE41-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero | ; X32-SSE41-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero | ||||
; X32-SSE41-NEXT: retl | ; X32-SSE41-NEXT: retl | ||||
%ptr0 = getelementptr inbounds i16, i16* %ptr, i64 4 | %ptr0 = getelementptr inbounds i16, i16* %ptr, i64 4 | ||||
Show All 21 Lines | |||||
; AVX-LABEL: merge_16i8_i8_01u3456789ABCDuF: | ; AVX-LABEL: merge_16i8_i8_01u3456789ABCDuF: | ||||
; AVX: # BB#0: | ; AVX: # BB#0: | ||||
; AVX-NEXT: vmovups (%rdi), %xmm0 | ; AVX-NEXT: vmovups (%rdi), %xmm0 | ||||
; AVX-NEXT: retq | ; AVX-NEXT: retq | ||||
; | ; | ||||
; X32-SSE1-LABEL: merge_16i8_i8_01u3456789ABCDuF: | ; X32-SSE1-LABEL: merge_16i8_i8_01u3456789ABCDuF: | ||||
; X32-SSE1: # BB#0: | ; X32-SSE1: # BB#0: | ||||
; X32-SSE1-NEXT: pushl %ebx | ; X32-SSE1-NEXT: pushl %ebx | ||||
; X32-SSE1-NEXT: .Lcfi16: | ; X32-SSE1-NEXT: .Lcfi24: | ||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 8 | ; X32-SSE1-NEXT: .cfi_def_cfa_offset 8 | ||||
; X32-SSE1-NEXT: subl $12, %esp | ; X32-SSE1-NEXT: subl $12, %esp | ||||
; X32-SSE1-NEXT: .Lcfi17: | ; X32-SSE1-NEXT: .Lcfi25: | ||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 20 | ; X32-SSE1-NEXT: .cfi_def_cfa_offset 20 | ||||
; X32-SSE1-NEXT: .Lcfi18: | ; X32-SSE1-NEXT: .Lcfi26: | ||||
; X32-SSE1-NEXT: .cfi_offset %ebx, -8 | ; X32-SSE1-NEXT: .cfi_offset %ebx, -8 | ||||
; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %eax | ; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %eax | ||||
; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %ecx | ; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %ecx | ||||
; X32-SSE1-NEXT: movb (%ecx), %dl | ; X32-SSE1-NEXT: movb (%ecx), %dl | ||||
; X32-SSE1-NEXT: movb %dl, {{[0-9]+}}(%esp) # 1-byte Spill | ; X32-SSE1-NEXT: movb %dl, {{[0-9]+}}(%esp) # 1-byte Spill | ||||
; X32-SSE1-NEXT: movb 1(%ecx), %dl | ; X32-SSE1-NEXT: movb 1(%ecx), %dl | ||||
; X32-SSE1-NEXT: movb %dl, {{[0-9]+}}(%esp) # 1-byte Spill | ; X32-SSE1-NEXT: movb %dl, {{[0-9]+}}(%esp) # 1-byte Spill | ||||
; X32-SSE1-NEXT: movb 3(%ecx), %dl | ; X32-SSE1-NEXT: movb 3(%ecx), %dl | ||||
Show All 34 Lines | |||||
; X32-SSE1-NEXT: movb %cl, 4(%eax) | ; X32-SSE1-NEXT: movb %cl, 4(%eax) | ||||
; X32-SSE1-NEXT: movb {{[0-9]+}}(%esp), %cl # 1-byte Reload | ; X32-SSE1-NEXT: movb {{[0-9]+}}(%esp), %cl # 1-byte Reload | ||||
; X32-SSE1-NEXT: movb %cl, 1(%eax) | ; X32-SSE1-NEXT: movb %cl, 1(%eax) | ||||
; X32-SSE1-NEXT: movb {{[0-9]+}}(%esp), %cl # 1-byte Reload | ; X32-SSE1-NEXT: movb {{[0-9]+}}(%esp), %cl # 1-byte Reload | ||||
; X32-SSE1-NEXT: movb %cl, (%eax) | ; X32-SSE1-NEXT: movb %cl, (%eax) | ||||
; X32-SSE1-NEXT: movb {{[0-9]+}}(%esp), %cl # 1-byte Reload | ; X32-SSE1-NEXT: movb {{[0-9]+}}(%esp), %cl # 1-byte Reload | ||||
; X32-SSE1-NEXT: movb %cl, 3(%eax) | ; X32-SSE1-NEXT: movb %cl, 3(%eax) | ||||
; X32-SSE1-NEXT: addl $12, %esp | ; X32-SSE1-NEXT: addl $12, %esp | ||||
; X32-SSE1-NEXT: .Lcfi27: | |||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 8 | |||||
; X32-SSE1-NEXT: popl %ebx | ; X32-SSE1-NEXT: popl %ebx | ||||
; X32-SSE1-NEXT: .Lcfi28: | |||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 4 | |||||
; X32-SSE1-NEXT: retl $4 | ; X32-SSE1-NEXT: retl $4 | ||||
; | ; | ||||
; X32-SSE41-LABEL: merge_16i8_i8_01u3456789ABCDuF: | ; X32-SSE41-LABEL: merge_16i8_i8_01u3456789ABCDuF: | ||||
; X32-SSE41: # BB#0: | ; X32-SSE41: # BB#0: | ||||
; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax | ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax | ||||
; X32-SSE41-NEXT: movups (%eax), %xmm0 | ; X32-SSE41-NEXT: movups (%eax), %xmm0 | ||||
; X32-SSE41-NEXT: retl | ; X32-SSE41-NEXT: retl | ||||
%ptr0 = getelementptr inbounds i8, i8* %ptr, i64 0 | %ptr0 = getelementptr inbounds i8, i8* %ptr, i64 0 | ||||
▲ Show 20 Lines • Show All 100 Lines • ▼ Show 20 Lines | |||||
; AVX-LABEL: merge_16i8_i8_0123uu67uuuuuzzz: | ; AVX-LABEL: merge_16i8_i8_0123uu67uuuuuzzz: | ||||
; AVX: # BB#0: | ; AVX: # BB#0: | ||||
; AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero | ; AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero | ||||
; AVX-NEXT: retq | ; AVX-NEXT: retq | ||||
; | ; | ||||
; X32-SSE1-LABEL: merge_16i8_i8_0123uu67uuuuuzzz: | ; X32-SSE1-LABEL: merge_16i8_i8_0123uu67uuuuuzzz: | ||||
; X32-SSE1: # BB#0: | ; X32-SSE1: # BB#0: | ||||
; X32-SSE1-NEXT: pushl %ebx | ; X32-SSE1-NEXT: pushl %ebx | ||||
; X32-SSE1-NEXT: .Lcfi19: | ; X32-SSE1-NEXT: .Lcfi29: | ||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 8 | ; X32-SSE1-NEXT: .cfi_def_cfa_offset 8 | ||||
; X32-SSE1-NEXT: pushl %eax | ; X32-SSE1-NEXT: pushl %eax | ||||
; X32-SSE1-NEXT: .Lcfi20: | ; X32-SSE1-NEXT: .Lcfi30: | ||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 12 | ; X32-SSE1-NEXT: .cfi_def_cfa_offset 12 | ||||
; X32-SSE1-NEXT: .Lcfi21: | ; X32-SSE1-NEXT: .Lcfi31: | ||||
; X32-SSE1-NEXT: .cfi_offset %ebx, -8 | ; X32-SSE1-NEXT: .cfi_offset %ebx, -8 | ||||
; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %eax | ; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %eax | ||||
; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %ecx | ; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %ecx | ||||
; X32-SSE1-NEXT: movb (%ecx), %dl | ; X32-SSE1-NEXT: movb (%ecx), %dl | ||||
; X32-SSE1-NEXT: movb %dl, {{[0-9]+}}(%esp) # 1-byte Spill | ; X32-SSE1-NEXT: movb %dl, {{[0-9]+}}(%esp) # 1-byte Spill | ||||
; X32-SSE1-NEXT: movb 1(%ecx), %dh | ; X32-SSE1-NEXT: movb 1(%ecx), %dh | ||||
; X32-SSE1-NEXT: movb 2(%ecx), %bl | ; X32-SSE1-NEXT: movb 2(%ecx), %bl | ||||
; X32-SSE1-NEXT: movb 3(%ecx), %bh | ; X32-SSE1-NEXT: movb 3(%ecx), %bh | ||||
; X32-SSE1-NEXT: movb 6(%ecx), %dl | ; X32-SSE1-NEXT: movb 6(%ecx), %dl | ||||
; X32-SSE1-NEXT: movb 7(%ecx), %cl | ; X32-SSE1-NEXT: movb 7(%ecx), %cl | ||||
; X32-SSE1-NEXT: movb %cl, 7(%eax) | ; X32-SSE1-NEXT: movb %cl, 7(%eax) | ||||
; X32-SSE1-NEXT: movb %dl, 6(%eax) | ; X32-SSE1-NEXT: movb %dl, 6(%eax) | ||||
; X32-SSE1-NEXT: movb %bh, 3(%eax) | ; X32-SSE1-NEXT: movb %bh, 3(%eax) | ||||
; X32-SSE1-NEXT: movb %bl, 2(%eax) | ; X32-SSE1-NEXT: movb %bl, 2(%eax) | ||||
; X32-SSE1-NEXT: movb %dh, 1(%eax) | ; X32-SSE1-NEXT: movb %dh, 1(%eax) | ||||
; X32-SSE1-NEXT: movb {{[0-9]+}}(%esp), %cl # 1-byte Reload | ; X32-SSE1-NEXT: movb {{[0-9]+}}(%esp), %cl # 1-byte Reload | ||||
; X32-SSE1-NEXT: movb %cl, (%eax) | ; X32-SSE1-NEXT: movb %cl, (%eax) | ||||
; X32-SSE1-NEXT: movb $0, 15(%eax) | ; X32-SSE1-NEXT: movb $0, 15(%eax) | ||||
; X32-SSE1-NEXT: movb $0, 14(%eax) | ; X32-SSE1-NEXT: movb $0, 14(%eax) | ||||
; X32-SSE1-NEXT: movb $0, 13(%eax) | ; X32-SSE1-NEXT: movb $0, 13(%eax) | ||||
; X32-SSE1-NEXT: addl $4, %esp | ; X32-SSE1-NEXT: addl $4, %esp | ||||
; X32-SSE1-NEXT: .Lcfi32: | |||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 8 | |||||
; X32-SSE1-NEXT: popl %ebx | ; X32-SSE1-NEXT: popl %ebx | ||||
; X32-SSE1-NEXT: .Lcfi33: | |||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 4 | |||||
; X32-SSE1-NEXT: retl $4 | ; X32-SSE1-NEXT: retl $4 | ||||
; | ; | ||||
; X32-SSE41-LABEL: merge_16i8_i8_0123uu67uuuuuzzz: | ; X32-SSE41-LABEL: merge_16i8_i8_0123uu67uuuuuzzz: | ||||
; X32-SSE41: # BB#0: | ; X32-SSE41: # BB#0: | ||||
; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax | ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax | ||||
; X32-SSE41-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero | ; X32-SSE41-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero | ||||
; X32-SSE41-NEXT: retl | ; X32-SSE41-NEXT: retl | ||||
%ptr0 = getelementptr inbounds i8, i8* %ptr, i64 0 | %ptr0 = getelementptr inbounds i8, i8* %ptr, i64 0 | ||||
▲ Show 20 Lines • Show All 78 Lines • ▼ Show 20 Lines | |||||
; AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero | ; AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero | ||||
; AVX-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero | ; AVX-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero | ||||
; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] | ; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] | ||||
; AVX-NEXT: retq | ; AVX-NEXT: retq | ||||
; | ; | ||||
; X32-SSE1-LABEL: merge_2i64_i64_12_volatile: | ; X32-SSE1-LABEL: merge_2i64_i64_12_volatile: | ||||
; X32-SSE1: # BB#0: | ; X32-SSE1: # BB#0: | ||||
; X32-SSE1-NEXT: pushl %edi | ; X32-SSE1-NEXT: pushl %edi | ||||
; X32-SSE1-NEXT: .Lcfi22: | ; X32-SSE1-NEXT: .Lcfi34: | ||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 8 | ; X32-SSE1-NEXT: .cfi_def_cfa_offset 8 | ||||
; X32-SSE1-NEXT: pushl %esi | ; X32-SSE1-NEXT: pushl %esi | ||||
; X32-SSE1-NEXT: .Lcfi23: | ; X32-SSE1-NEXT: .Lcfi35: | ||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 12 | ; X32-SSE1-NEXT: .cfi_def_cfa_offset 12 | ||||
; X32-SSE1-NEXT: .Lcfi24: | ; X32-SSE1-NEXT: .Lcfi36: | ||||
; X32-SSE1-NEXT: .cfi_offset %esi, -12 | ; X32-SSE1-NEXT: .cfi_offset %esi, -12 | ||||
; X32-SSE1-NEXT: .Lcfi25: | ; X32-SSE1-NEXT: .Lcfi37: | ||||
; X32-SSE1-NEXT: .cfi_offset %edi, -8 | ; X32-SSE1-NEXT: .cfi_offset %edi, -8 | ||||
; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %eax | ; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %eax | ||||
; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %ecx | ; X32-SSE1-NEXT: movl {{[0-9]+}}(%esp), %ecx | ||||
; X32-SSE1-NEXT: movl 8(%ecx), %edx | ; X32-SSE1-NEXT: movl 8(%ecx), %edx | ||||
; X32-SSE1-NEXT: movl 12(%ecx), %esi | ; X32-SSE1-NEXT: movl 12(%ecx), %esi | ||||
; X32-SSE1-NEXT: movl 16(%ecx), %edi | ; X32-SSE1-NEXT: movl 16(%ecx), %edi | ||||
; X32-SSE1-NEXT: movl 20(%ecx), %ecx | ; X32-SSE1-NEXT: movl 20(%ecx), %ecx | ||||
; X32-SSE1-NEXT: movl %ecx, 12(%eax) | ; X32-SSE1-NEXT: movl %ecx, 12(%eax) | ||||
; X32-SSE1-NEXT: movl %edi, 8(%eax) | ; X32-SSE1-NEXT: movl %edi, 8(%eax) | ||||
; X32-SSE1-NEXT: movl %esi, 4(%eax) | ; X32-SSE1-NEXT: movl %esi, 4(%eax) | ||||
; X32-SSE1-NEXT: movl %edx, (%eax) | ; X32-SSE1-NEXT: movl %edx, (%eax) | ||||
; X32-SSE1-NEXT: popl %esi | ; X32-SSE1-NEXT: popl %esi | ||||
; X32-SSE1-NEXT: .Lcfi38: | |||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 8 | |||||
; X32-SSE1-NEXT: popl %edi | ; X32-SSE1-NEXT: popl %edi | ||||
; X32-SSE1-NEXT: .Lcfi39: | |||||
; X32-SSE1-NEXT: .cfi_def_cfa_offset 4 | |||||
; X32-SSE1-NEXT: retl $4 | ; X32-SSE1-NEXT: retl $4 | ||||
; | ; | ||||
; X32-SSE41-LABEL: merge_2i64_i64_12_volatile: | ; X32-SSE41-LABEL: merge_2i64_i64_12_volatile: | ||||
; X32-SSE41: # BB#0: | ; X32-SSE41: # BB#0: | ||||
; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax | ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax | ||||
; X32-SSE41-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero | ; X32-SSE41-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero | ||||
; X32-SSE41-NEXT: pinsrd $1, 12(%eax), %xmm0 | ; X32-SSE41-NEXT: pinsrd $1, 12(%eax), %xmm0 | ||||
; X32-SSE41-NEXT: pinsrd $2, 16(%eax), %xmm0 | ; X32-SSE41-NEXT: pinsrd $2, 16(%eax), %xmm0 | ||||
▲ Show 20 Lines • Show All 145 Lines • Show Last 20 Lines |