xref: /llvm-project/llvm/test/CodeGen/X86/pr49087.ll (revision 2f448bf509432c1a19ec46ab8cbc7353c03c6280)
1; RUN: llc -mtriple=x86_64-unknown-linux-gnu -o - -global-isel < %s 2>&1 | FileCheck %s
2; REQUIRES: asserts
3; XFAIL: *
4
5define i32 @test_01(ptr %p, i64 %len, i32 %x) {
6; CHECK-LABEL: test_01
7
8entry:
9  %scevgep = getelementptr i32, ptr %p, i64 -1
10  br label %loop
11
12loop:                                             ; preds = %backedge, %entry
13  %iv = phi i64 [ %iv.next, %backedge ], [ %len, %entry ]
14  %iv.next = add i64 %iv, -1
15  %cond_1 = icmp eq i64 %iv, 0
16  br i1 %cond_1, label %exit, label %backedge
17
18backedge:                                         ; preds = %loop
19  %scevgep1 = getelementptr i32, ptr %scevgep, i64 %iv
20  %loaded = load atomic i32, ptr %scevgep1 unordered, align 4
21  %cond_2 = icmp eq i32 %loaded, %x
22  br i1 %cond_2, label %failure, label %loop
23
24exit:                                             ; preds = %loop
25  ret i32 -1
26
27failure:
28  unreachable
29}
30
31