brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.5 KiB · 99205ab Raw
75 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --no_x86_scrub_sp2; RUN: llc < %s -mtriple=i686-- | FileCheck %s --check-prefixes=X863; RUN: llc < %s -mtriple=x86_64-pc-linux-gnu | FileCheck %s --check-prefixes=X644 5define i32 @extract3(ptr, i32) nounwind {6; X86-LABEL: extract3:7; X86:       # %bb.0: # %_L18; X86-NEXT:    pushl %ebx9; X86-NEXT:    pushl %esi10; X86-NEXT:    subl $8, %esp11; X86-NEXT:    movl 24(%esp), %esi12; X86-NEXT:    andl $7, %esi13; X86-NEXT:    movl 20(%esp), %eax14; X86-NEXT:    movzwl (%eax), %ebx15; X86-NEXT:    movl %ebx, %ecx16; X86-NEXT:    shrb $3, %cl17; X86-NEXT:    andb $7, %cl18; X86-NEXT:    movb %bl, %ch19; X86-NEXT:    andb $7, %ch20; X86-NEXT:    movl %ebx, %eax21; X86-NEXT:    shrl $6, %eax22; X86-NEXT:    andb $7, %al23; X86-NEXT:    movl %ebx, %edx24; X86-NEXT:    shrl $9, %edx25; X86-NEXT:    andb $7, %dl26; X86-NEXT:    shrl $12, %ebx27; X86-NEXT:    movb %bl, 4(%esp)28; X86-NEXT:    movb %dl, 3(%esp)29; X86-NEXT:    movb %al, 2(%esp)30; X86-NEXT:    movb %ch, (%esp)31; X86-NEXT:    movb %cl, 1(%esp)32; X86-NEXT:    movzbl (%esp,%esi), %eax33; X86-NEXT:    andl $7, %eax34; X86-NEXT:    addl $8, %esp35; X86-NEXT:    popl %esi36; X86-NEXT:    popl %ebx37; X86-NEXT:    retl38;39; X64-LABEL: extract3:40; X64:       # %bb.0: # %_L141; X64-NEXT:    # kill: def $esi killed $esi def $rsi42; X64-NEXT:    movzwl (%rdi), %eax43; X64-NEXT:    movl %eax, %ecx44; X64-NEXT:    shrl $9, %ecx45; X64-NEXT:    andl $7, %ecx46; X64-NEXT:    movd %ecx, %xmm047; X64-NEXT:    movl %eax, %ecx48; X64-NEXT:    shrl $6, %ecx49; X64-NEXT:    andl $7, %ecx50; X64-NEXT:    movd %ecx, %xmm151; X64-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]52; X64-NEXT:    movl %eax, %ecx53; X64-NEXT:    andl $7, %ecx54; X64-NEXT:    movd %ecx, %xmm055; X64-NEXT:    movd %eax, %xmm256; X64-NEXT:    shrl $3, %eax57; X64-NEXT:    andl $7, %eax58; X64-NEXT:    movd %eax, %xmm359; X64-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]60; X64-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]61; X64-NEXT:    psrld $12, %xmm262; X64-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]63; X64-NEXT:    movdqa %xmm0, -24(%rsp)64; X64-NEXT:    andl $7, %esi65; X64-NEXT:    movzwl -24(%rsp,%rsi,2), %eax66; X64-NEXT:    andl $7, %eax67; X64-NEXT:    retq68_L1:69  %2 = load i15, ptr %070  %3 = bitcast i15 %2 to <5 x i3>71  %4 = extractelement <5 x i3> %3, i32 %172  %5 = zext i3 %4 to i3273  ret i32 %574}75