xref: /llvm-project/llvm/test/Transforms/SLPVectorizer/extract-vectorized-operand.ll (revision 15ee17c3ce34623261788d7de3c1bdf5860be34e)
1*15ee17c3SElvina Yakubova; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2*15ee17c3SElvina Yakubova; RUN: %if x86-registered-target %{ opt -S --passes=slp-vectorizer -slp-threshold=-99999 < %s -mtriple=x86_64-unknown-linux-gnu | FileCheck %s %}
3*15ee17c3SElvina Yakubova; RUN: %if aarch64-registered-target %{ opt -S --passes=slp-vectorizer -slp-threshold=-99999 < %s -mtriple=aarch64-unknown-linux-gnu | FileCheck %s %}
4*15ee17c3SElvina Yakubova
5*15ee17c3SElvina Yakubovadefine void @test() {
6*15ee17c3SElvina Yakubova; CHECK-LABEL: define void @test() {
7*15ee17c3SElvina Yakubova; CHECK-NEXT:  [[BB:.*]]:
8*15ee17c3SElvina Yakubova; CHECK-NEXT:    [[TMP0:%.*]] = shufflevector <2 x ptr addrspace(1)> zeroinitializer, <2 x ptr addrspace(1)> zeroinitializer, <2 x i32> <i32 1, i32 0>
9*15ee17c3SElvina Yakubova; CHECK-NEXT:    [[TMP1:%.*]] = extractelement <2 x ptr addrspace(1)> [[TMP0]], i32 0
10*15ee17c3SElvina Yakubova; CHECK-NEXT:    br label %[[BB43:.*]]
11*15ee17c3SElvina Yakubova; CHECK:       [[BB20:.*]]:
12*15ee17c3SElvina Yakubova; CHECK-NEXT:    br label %[[BB105:.*]]
13*15ee17c3SElvina Yakubova; CHECK:       [[BB43]]:
14*15ee17c3SElvina Yakubova; CHECK-NEXT:    [[TMP2:%.*]] = phi <2 x ptr addrspace(1)> [ [[TMP3:%.*]], %[[BB51:.*]] ], [ zeroinitializer, %[[BB]] ]
15*15ee17c3SElvina Yakubova; CHECK-NEXT:    br i1 false, label %[[BB105]], label %[[BB51]]
16*15ee17c3SElvina Yakubova; CHECK:       [[BB51]]:
17*15ee17c3SElvina Yakubova; CHECK-NEXT:    [[TMP3]] = phi <2 x ptr addrspace(1)> [ poison, %[[BB54:.*]] ], [ zeroinitializer, %[[BB43]] ]
18*15ee17c3SElvina Yakubova; CHECK-NEXT:    br label %[[BB43]]
19*15ee17c3SElvina Yakubova; CHECK:       [[BB54]]:
20*15ee17c3SElvina Yakubova; CHECK-NEXT:    br label %[[BB51]]
21*15ee17c3SElvina Yakubova; CHECK:       [[BB105]]:
22*15ee17c3SElvina Yakubova; CHECK-NEXT:    [[PHI106:%.*]] = phi ptr addrspace(1) [ [[TMP1]], %[[BB20]] ], [ null, %[[BB43]] ]
23*15ee17c3SElvina Yakubova; CHECK-NEXT:    ret void
24*15ee17c3SElvina Yakubova;
25*15ee17c3SElvina Yakubovabb:
26*15ee17c3SElvina Yakubova  %0 = shufflevector <2 x ptr addrspace(1)> zeroinitializer, <2 x ptr addrspace(1)> zeroinitializer, <2 x i32> <i32 1, i32 0>
27*15ee17c3SElvina Yakubova  %1 = extractelement <2 x ptr addrspace(1)> %0, i32 0
28*15ee17c3SElvina Yakubova  %2 = extractelement <2 x ptr addrspace(1)> %0, i32 1
29*15ee17c3SElvina Yakubova  br label %bb43
30*15ee17c3SElvina Yakubova
31*15ee17c3SElvina Yakubovabb20:
32*15ee17c3SElvina Yakubova  br label %bb105
33*15ee17c3SElvina Yakubova
34*15ee17c3SElvina Yakubovabb43:
35*15ee17c3SElvina Yakubova  %phi441 = phi ptr addrspace(1) [ %4, %bb51 ], [ %2, %bb ]
36*15ee17c3SElvina Yakubova  %phi452 = phi ptr addrspace(1) [ %5, %bb51 ], [ %1, %bb ]
37*15ee17c3SElvina Yakubova  br i1 false, label %bb105, label %bb51
38*15ee17c3SElvina Yakubova
39*15ee17c3SElvina Yakubovabb51:
40*15ee17c3SElvina Yakubova  %3 = phi <2 x ptr addrspace(1)> [ poison, %bb54 ], [ zeroinitializer, %bb43 ]
41*15ee17c3SElvina Yakubova  %4 = extractelement <2 x ptr addrspace(1)> %3, i32 0
42*15ee17c3SElvina Yakubova  %5 = extractelement <2 x ptr addrspace(1)> %3, i32 1
43*15ee17c3SElvina Yakubova  br label %bb43
44*15ee17c3SElvina Yakubova
45*15ee17c3SElvina Yakubovabb54:
46*15ee17c3SElvina Yakubova  br label %bb51
47*15ee17c3SElvina Yakubova
48*15ee17c3SElvina Yakubovabb105:
49*15ee17c3SElvina Yakubova  %phi106 = phi ptr addrspace(1) [ %1, %bb20 ], [ null, %bb43 ]
50*15ee17c3SElvina Yakubova  ret void
51*15ee17c3SElvina Yakubova}
52*15ee17c3SElvina Yakubova
53