Follow up to d0858bffa11, add missing REQUIRES x86
[llvm-project.git] / llvm / test / Transforms / LoopRotate / convergent.ll
blob5374c1c7a400f4cfd6fdcddf72ba6abdb840b5b8
1 ; RUN: opt -S -passes=loop-rotate -verify-memoryssa < %s | FileCheck %s
3 @e = global i32 10
5 declare void @f1(i32) convergent
6 declare void @f2(i32)
8 ; The call to f1 in the loop header shouldn't be duplicated (meaning, loop
9 ; rotation shouldn't occur), because f1 is convergent.
11 ; CHECK: call void @f1
12 ; CHECK-NOT: call void @f1
14 define void @test(i32 %x) {
15 entry:
16   br label %loop
18 loop:
19   %n.phi = phi i32 [ %n, %loop.fin ], [ 0, %entry ]
20   call void @f1(i32 %n.phi)
21   %cond = icmp eq i32 %n.phi, %x
22   br i1 %cond, label %exit, label %loop.fin
24 loop.fin:
25   %n = add i32 %n.phi, 1
26   call void @f2(i32 %n)
27   br label %loop
29 exit:
30   ret void