xref: /llvm-project/llvm/test/Transforms/LoopVectorize/vector-freeze.ll (revision e58427828939eadf7e169a0e5476919a5746a82e)
1; RUN: opt -passes=loop-vectorize -force-vector-width=16 -force-vector-interleave=1 -S < %s | FileCheck %s
2; RUN: opt -passes=loop-vectorize -scalable-vectorization=on -force-target-supports-scalable-vectors=true -force-vector-width=16 -force-vector-interleave=1 -S < %s | FileCheck %s --check-prefix=SVE
3
4define i64 @test(ptr noalias readonly %addr) {
5; CHECK-LABEL: @test(
6; CHECK:       vector.body:
7; CHECK:       freeze <16 x i64>
8
9; SVE-LABEL: @test(
10; SVE:       vector.body:
11; SVE:       freeze <vscale x 16 x i64>
12
13entry:
14  br label %loop
15
16exit:
17  ret i64 %tmp4
18
19loop:
20  %tmp3 = phi ptr [ %tmp6, %loop ], [ %addr, %entry ]
21  %l = load i64, ptr %tmp3
22  %tmp4 = freeze i64 %l
23  %tmp5 = add i64 0, 0
24  %tmp6 = getelementptr inbounds ptr, ptr %tmp3, i64 1
25  %tmp7 = icmp eq ptr %tmp6, null
26  br i1 %tmp7, label %exit, label %loop
27}
28