[ARM] Adjust how NEON shifts are lowered
[llvm-core.git] / test / Transforms / SLPVectorizer / X86 / phi_landingpad.ll
blob0a752889065f0ff14600ac20d68b1c6f7a023a11
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt < %s -slp-vectorizer -mtriple=x86_64-apple-macosx10.9.0 -S -o - | FileCheck %s
4 target datalayout = "f64:64:64-v64:64:64"
6 define void @test_phi_in_landingpad() personality i8*
7 ; CHECK-LABEL: @test_phi_in_landingpad(
8 ; CHECK-NEXT:  entry:
9 ; CHECK-NEXT:    invoke void @foo()
10 ; CHECK-NEXT:    to label [[INNER:%.*]] unwind label [[LPAD:%.*]]
11 ; CHECK:       inner:
12 ; CHECK-NEXT:    invoke void @foo()
13 ; CHECK-NEXT:    to label [[DONE:%.*]] unwind label [[LPAD]]
14 ; CHECK:       lpad:
15 ; CHECK-NEXT:    [[TMP0:%.*]] = phi <2 x double> [ undef, [[ENTRY:%.*]] ], [ undef, [[INNER]] ]
16 ; CHECK-NEXT:    [[TMP1:%.*]] = landingpad { i8*, i32 }
17 ; CHECK-NEXT:    catch i8* null
18 ; CHECK-NEXT:    br label [[DONE]]
19 ; CHECK:       done:
20 ; CHECK-NEXT:    [[TMP2:%.*]] = phi <2 x double> [ undef, [[INNER]] ], [ [[TMP0]], [[LPAD]] ]
21 ; CHECK-NEXT:    ret void
23   bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
24 entry:
25   invoke void @foo()
26   to label %inner unwind label %lpad
28 inner:
29   %x0 = fsub double undef, undef
30   %y0 = fsub double undef, undef
31   invoke void @foo()
32   to label %done unwind label %lpad
34 lpad:
35   %x1 = phi double [ undef, %entry ], [ undef, %inner ]
36   %y1 = phi double [ undef, %entry ], [ undef, %inner ]
37   landingpad { i8*, i32 } catch i8* null
38   br label %done
40 done:
41   phi double [ %x0, %inner ], [ %x1, %lpad ]
42   phi double [ %y0, %inner ], [ %y1, %lpad ]
43   ret void
46 declare void @foo()
48 declare i32 @__gxx_personality_v0(...)