brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · 997ad6b Raw
119 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -O3 --x86-asm-syntax=intel -mtriple=x86_64 -mattr=avx < %s | FileCheck %s3 4define void @extracter0([4 x <4 x i1>] %matrix) nounwind {5; CHECK-LABEL: extracter0:6; CHECK:       # %bb.0:7; CHECK-NEXT:    push rbp8; CHECK-NEXT:    push r149; CHECK-NEXT:    push rbx10; CHECK-NEXT:    vpslld xmm0, xmm0, 3111; CHECK-NEXT:    vmovmskps edi, xmm012; CHECK-NEXT:    mov ebx, edi13; CHECK-NEXT:    shr bl, 314; CHECK-NEXT:    mov ebp, edi15; CHECK-NEXT:    and bpl, 416; CHECK-NEXT:    shr bpl, 217; CHECK-NEXT:    mov r14d, edi18; CHECK-NEXT:    and r14b, 219; CHECK-NEXT:    shr r14b20; CHECK-NEXT:    call print_i1@PLT21; CHECK-NEXT:    movzx edi, r14b22; CHECK-NEXT:    call print_i1@PLT23; CHECK-NEXT:    movzx edi, bpl24; CHECK-NEXT:    call print_i1@PLT25; CHECK-NEXT:    movzx edi, bl26; CHECK-NEXT:    call print_i1@PLT27; CHECK-NEXT:    pop rbx28; CHECK-NEXT:    pop r1429; CHECK-NEXT:    pop rbp30; CHECK-NEXT:    ret31  %1 = extractvalue [4 x <4 x i1>] %matrix, 032  %2 = extractelement <4 x i1> %1, i64 033  %3 = extractelement <4 x i1> %1, i64 134  %4 = extractelement <4 x i1> %1, i64 235  %5 = extractelement <4 x i1> %1, i64 336  call void @print_i1(i1 %2)37  call void @print_i1(i1 %3)38  call void @print_i1(i1 %4)39  call void @print_i1(i1 %5)40  ret void41}42 43define void @extracter1([4 x <4 x i1>] %matrix) nounwind {44; CHECK-LABEL: extracter1:45; CHECK:       # %bb.0:46; CHECK-NEXT:    push rbp47; CHECK-NEXT:    push r1548; CHECK-NEXT:    push r1449; CHECK-NEXT:    push r1350; CHECK-NEXT:    push r1251; CHECK-NEXT:    push rbx52; CHECK-NEXT:    push rax53; CHECK-NEXT:    vpslld xmm1, xmm1, 3154; CHECK-NEXT:    vmovmskps ebx, xmm155; CHECK-NEXT:    mov eax, ebx56; CHECK-NEXT:    shr al, 357; CHECK-NEXT:    mov byte ptr [rsp + 7], al # 1-byte Spill58; CHECK-NEXT:    mov r14d, ebx59; CHECK-NEXT:    and r14b, 460; CHECK-NEXT:    shr r14b, 261; CHECK-NEXT:    mov r15d, ebx62; CHECK-NEXT:    and r15b, 263; CHECK-NEXT:    shr r15b64; CHECK-NEXT:    vpslld xmm0, xmm0, 3165; CHECK-NEXT:    vmovmskps edi, xmm066; CHECK-NEXT:    mov r12d, edi67; CHECK-NEXT:    shr r12b, 368; CHECK-NEXT:    mov r13d, edi69; CHECK-NEXT:    and r13b, 470; CHECK-NEXT:    shr r13b, 271; CHECK-NEXT:    mov ebp, edi72; CHECK-NEXT:    and bpl, 273; CHECK-NEXT:    shr bpl74; CHECK-NEXT:    call print_i1@PLT75; CHECK-NEXT:    movzx edi, bpl76; CHECK-NEXT:    call print_i1@PLT77; CHECK-NEXT:    movzx edi, r13b78; CHECK-NEXT:    call print_i1@PLT79; CHECK-NEXT:    movzx edi, r12b80; CHECK-NEXT:    call print_i1@PLT81; CHECK-NEXT:    mov edi, ebx82; CHECK-NEXT:    call print_i1@PLT83; CHECK-NEXT:    movzx edi, r15b84; CHECK-NEXT:    call print_i1@PLT85; CHECK-NEXT:    movzx edi, r14b86; CHECK-NEXT:    call print_i1@PLT87; CHECK-NEXT:    movzx edi, byte ptr [rsp + 7] # 1-byte Folded Reload88; CHECK-NEXT:    call print_i1@PLT89; CHECK-NEXT:    add rsp, 890; CHECK-NEXT:    pop rbx91; CHECK-NEXT:    pop r1292; CHECK-NEXT:    pop r1393; CHECK-NEXT:    pop r1494; CHECK-NEXT:    pop r1595; CHECK-NEXT:    pop rbp96; CHECK-NEXT:    ret97  %1 = extractvalue [4 x <4 x i1>] %matrix, 098  %2 = extractelement <4 x i1> %1, i64 099  %3 = extractelement <4 x i1> %1, i64 1100  %4 = extractelement <4 x i1> %1, i64 2101  %5 = extractelement <4 x i1> %1, i64 3102  call void @print_i1(i1 %2)103  call void @print_i1(i1 %3)104  call void @print_i1(i1 %4)105  call void @print_i1(i1 %5)106  %6 = extractvalue [4 x <4 x i1>] %matrix, 1107  %7 = extractelement <4 x i1> %6, i64 0108  %8 = extractelement <4 x i1> %6, i64 1109  %9 = extractelement <4 x i1> %6, i64 2110  %10 = extractelement <4 x i1> %6, i64 3111  call void @print_i1(i1 %7)112  call void @print_i1(i1 %8)113  call void @print_i1(i1 %9)114  call void @print_i1(i1 %10)115  ret void116}117 118declare void @print_i1(i1)119