brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.1 KiB · f28a2ad Raw
123 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+sse3 | FileCheck %s --check-prefix=SSE33; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+sse4.1 | FileCheck %s --check-prefix=SSE414; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx | FileCheck %s --check-prefix=AVX-325; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefix=AVX-326; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefix=AVX-647 8define <3 x i16> @zext_i8(<3 x i8>) {9; SSE3-LABEL: zext_i8:10; SSE3:       # %bb.0:11; SSE3-NEXT:    movzbl {{[0-9]+}}(%esp), %edx12; SSE3-NEXT:    movzbl {{[0-9]+}}(%esp), %eax13; SSE3-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx14; SSE3-NEXT:    # kill: def $ax killed $ax killed $eax15; SSE3-NEXT:    # kill: def $dx killed $dx killed $edx16; SSE3-NEXT:    # kill: def $cx killed $cx killed $ecx17; SSE3-NEXT:    retl18;19; SSE41-LABEL: zext_i8:20; SSE41:       # %bb.0:21; SSE41-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx22; SSE41-NEXT:    movzbl {{[0-9]+}}(%esp), %edx23; SSE41-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero24; SSE41-NEXT:    pmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero25; SSE41-NEXT:    movd %xmm0, %eax26; SSE41-NEXT:    # kill: def $ax killed $ax killed $eax27; SSE41-NEXT:    # kill: def $dx killed $dx killed $edx28; SSE41-NEXT:    # kill: def $cx killed $cx killed $ecx29; SSE41-NEXT:    retl30;31; AVX-32-LABEL: zext_i8:32; AVX-32:       # %bb.0:33; AVX-32-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx34; AVX-32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx35; AVX-32-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero36; AVX-32-NEXT:    vpmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero37; AVX-32-NEXT:    vmovd %xmm0, %eax38; AVX-32-NEXT:    # kill: def $ax killed $ax killed $eax39; AVX-32-NEXT:    # kill: def $dx killed $dx killed $edx40; AVX-32-NEXT:    # kill: def $cx killed $cx killed $ecx41; AVX-32-NEXT:    retl42;43; AVX-64-LABEL: zext_i8:44; AVX-64:       # %bb.0:45; AVX-64-NEXT:    movzbl %dl, %ecx46; AVX-64-NEXT:    movzbl %sil, %edx47; AVX-64-NEXT:    vmovd %edi, %xmm048; AVX-64-NEXT:    vpmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero49; AVX-64-NEXT:    vmovd %xmm0, %eax50; AVX-64-NEXT:    # kill: def $ax killed $ax killed $eax51; AVX-64-NEXT:    # kill: def $dx killed $dx killed $edx52; AVX-64-NEXT:    # kill: def $cx killed $cx killed $ecx53; AVX-64-NEXT:    retq54  %2 = zext <3 x i8> %0 to <3 x i16>55  ret <3 x i16> %256}57 58define <3 x i16> @sext_i8(<3 x i8>) {59; SSE3-LABEL: sext_i8:60; SSE3:       # %bb.0:61; SSE3-NEXT:    movzbl {{[0-9]+}}(%esp), %eax62; SSE3-NEXT:    movl {{[0-9]+}}(%esp), %ecx63; SSE3-NEXT:    shll $24, %ecx64; SSE3-NEXT:    shll $8, %eax65; SSE3-NEXT:    orl %ecx, %eax66; SSE3-NEXT:    movd %eax, %xmm067; SSE3-NEXT:    movl {{[0-9]+}}(%esp), %eax68; SSE3-NEXT:    shll $8, %eax69; SSE3-NEXT:    pinsrw $2, %eax, %xmm070; SSE3-NEXT:    psraw $8, %xmm071; SSE3-NEXT:    movd %xmm0, %eax72; SSE3-NEXT:    pextrw $1, %xmm0, %edx73; SSE3-NEXT:    pextrw $2, %xmm0, %ecx74; SSE3-NEXT:    # kill: def $ax killed $ax killed $eax75; SSE3-NEXT:    # kill: def $dx killed $dx killed $edx76; SSE3-NEXT:    # kill: def $cx killed $cx killed $ecx77; SSE3-NEXT:    retl78;79; SSE41-LABEL: sext_i8:80; SSE41:       # %bb.0:81; SSE41-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero82; SSE41-NEXT:    pinsrb $1, {{[0-9]+}}(%esp), %xmm083; SSE41-NEXT:    pinsrb $2, {{[0-9]+}}(%esp), %xmm084; SSE41-NEXT:    pmovsxbw %xmm0, %xmm085; SSE41-NEXT:    movd %xmm0, %eax86; SSE41-NEXT:    pextrw $1, %xmm0, %edx87; SSE41-NEXT:    pextrw $2, %xmm0, %ecx88; SSE41-NEXT:    # kill: def $ax killed $ax killed $eax89; SSE41-NEXT:    # kill: def $dx killed $dx killed $edx90; SSE41-NEXT:    # kill: def $cx killed $cx killed $ecx91; SSE41-NEXT:    retl92;93; AVX-32-LABEL: sext_i8:94; AVX-32:       # %bb.0:95; AVX-32-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero96; AVX-32-NEXT:    vpinsrb $1, {{[0-9]+}}(%esp), %xmm0, %xmm097; AVX-32-NEXT:    vpinsrb $2, {{[0-9]+}}(%esp), %xmm0, %xmm098; AVX-32-NEXT:    vpmovsxbw %xmm0, %xmm099; AVX-32-NEXT:    vmovd %xmm0, %eax100; AVX-32-NEXT:    vpextrw $1, %xmm0, %edx101; AVX-32-NEXT:    vpextrw $2, %xmm0, %ecx102; AVX-32-NEXT:    # kill: def $ax killed $ax killed $eax103; AVX-32-NEXT:    # kill: def $dx killed $dx killed $edx104; AVX-32-NEXT:    # kill: def $cx killed $cx killed $ecx105; AVX-32-NEXT:    retl106;107; AVX-64-LABEL: sext_i8:108; AVX-64:       # %bb.0:109; AVX-64-NEXT:    vmovd %edi, %xmm0110; AVX-64-NEXT:    vpinsrb $1, %esi, %xmm0, %xmm0111; AVX-64-NEXT:    vpinsrb $2, %edx, %xmm0, %xmm0112; AVX-64-NEXT:    vpmovsxbw %xmm0, %xmm0113; AVX-64-NEXT:    vmovd %xmm0, %eax114; AVX-64-NEXT:    vpextrw $1, %xmm0, %edx115; AVX-64-NEXT:    vpextrw $2, %xmm0, %ecx116; AVX-64-NEXT:    # kill: def $ax killed $ax killed $eax117; AVX-64-NEXT:    # kill: def $dx killed $dx killed $edx118; AVX-64-NEXT:    # kill: def $cx killed $cx killed $ecx119; AVX-64-NEXT:    retq120  %2 = sext <3 x i8> %0 to <3 x i16>121  ret <3 x i16> %2122}123