brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · 41d890b Raw
51 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=x86_64-unknown-linux-gnu -o - -global-isel -global-isel-abort=1 < %s 2>&1 | FileCheck %s3 4define i32 @test_01(ptr %p, i64 %len, i32 %x) {5; CHECK-LABEL: test_01:6; CHECK:       # %bb.0: # %entry7; CHECK-NEXT:    movl $1, %eax8; CHECK-NEXT:    .p2align 49; CHECK-NEXT:  .LBB0_1: # %loop10; CHECK-NEXT:    # =>This Inner Loop Header: Depth=111; CHECK-NEXT:    subq %rax, %rsi12; CHECK-NEXT:    setb %cl13; CHECK-NEXT:    testb $1, %cl14; CHECK-NEXT:    jne .LBB0_415; CHECK-NEXT:  # %bb.2: # %backedge16; CHECK-NEXT:    # in Loop: Header=BB0_1 Depth=117; CHECK-NEXT:    imulq $4, %rsi, %rcx18; CHECK-NEXT:    addq %rdi, %rcx19; CHECK-NEXT:    cmpl %edx, (%rcx)20; CHECK-NEXT:    sete %cl21; CHECK-NEXT:    testb $1, %cl22; CHECK-NEXT:    je .LBB0_123; CHECK-NEXT:  # %bb.3: # %failure24; CHECK-NEXT:  .LBB0_4: # %exit25; CHECK-NEXT:    movl $-1, %eax26; CHECK-NEXT:    retq27 28entry:29  %scevgep = getelementptr i32, ptr %p, i64 -130  br label %loop31 32loop:                                             ; preds = %backedge, %entry33  %iv = phi i64 [ %iv.next, %backedge ], [ %len, %entry ]34  %iv.next = add i64 %iv, -135  %cond_1 = icmp eq i64 %iv, 036  br i1 %cond_1, label %exit, label %backedge37 38backedge:                                         ; preds = %loop39  %scevgep1 = getelementptr i32, ptr %scevgep, i64 %iv40  %loaded = load atomic i32, ptr %scevgep1 unordered, align 441  %cond_2 = icmp eq i32 %loaded, %x42  br i1 %cond_2, label %failure, label %loop43 44exit:                                             ; preds = %loop45  ret i32 -146 47failure:48  unreachable49}50 51