xref: /llvm-project/llvm/test/Transforms/SimplifyCFG/ARM/phi-eliminate.ll (revision d1d129356909af2f6fefd6f1b9335a39fe172e9a)
11dd85e9dSSam Parker; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2*d1d12935SRoman Lebedev; RUN: opt -mtriple=thumbv8m.main < %s -passes=simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S -two-entry-phi-node-folding-threshold=4 | FileCheck %s --check-prefixes=CHECK-TWO-FOLD-4,CHECK-V8M-TWO-FOLD-4
3*d1d12935SRoman Lebedev; RUN: opt -mtriple=armv8a < %s -passes=simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S -two-entry-phi-node-folding-threshold=4 | FileCheck %s --check-prefixes=CHECK-TWO-FOLD-4,CHECK-V8A-TWO-FOLD-4
4*d1d12935SRoman Lebedev; RUN: opt -mtriple=thumbv8m.main < %s -passes=simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S -two-entry-phi-node-folding-threshold=5 | FileCheck %s --check-prefixes=CHECK-TWO-FOLD-5,CHECK-V8M-TWO-FOLD-5
5*d1d12935SRoman Lebedev; RUN: opt -mtriple=armv8a < %s -passes=simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S -two-entry-phi-node-folding-threshold=5 | FileCheck %s --check-prefixes=CHECK-TWO-FOLD-5,CHECK-V8A-TWO-FOLD-5
6*d1d12935SRoman Lebedev; RUN: opt -mtriple=thumbv8m.main < %s -passes=simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S -two-entry-phi-node-folding-threshold=6 | FileCheck %s --check-prefixes=CHECK-TWO-FOLD-6,CHECK-V8M-TWO-FOLD-6
7*d1d12935SRoman Lebedev; RUN: opt -mtriple=armv8a < %s -passes=simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S -two-entry-phi-node-folding-threshold=6 | FileCheck %s --check-prefixes=CHECK-TWO-FOLD-6,CHECK-V8A-TWO-FOLD-6
81dd85e9dSSam Parker
91dd85e9dSSam Parkerdefine i32 @test_i32(i1 %a, i1 %b, i32 %i, i32 %j, i32 %k) {
105c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-LABEL: @test_i32(
115c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:  entry:
125c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:    br i1 [[A:%.*]], label [[M:%.*]], label [[O:%.*]]
135c987212SSimon Pilgrim; CHECK-TWO-FOLD-4:       O:
145c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:    [[IAJ:%.*]] = add i32 [[I:%.*]], [[J:%.*]]
155c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:    [[IAJAK:%.*]] = add i32 [[IAJ]], [[K:%.*]]
165c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:    [[IXJ:%.*]] = xor i32 [[I]], [[J]]
175c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:    [[IXJXK:%.*]] = xor i32 [[IXJ]], [[K]]
185c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:    [[WP:%.*]] = select i1 [[B:%.*]], i32 [[IAJAK]], i32 [[IXJXK]]
195c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:    [[WP2:%.*]] = add i32 [[WP]], [[WP]]
205c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:    br label [[M]]
215c987212SSimon Pilgrim; CHECK-TWO-FOLD-4:       M:
225c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:    [[W:%.*]] = phi i32 [ [[WP2]], [[O]] ], [ 2, [[ENTRY:%.*]] ]
235c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:    [[R:%.*]] = add i32 [[W]], 1
245c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:    ret i32 [[R]]
251dd85e9dSSam Parker;
265c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-LABEL: @test_i32(
275c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:  entry:
285c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:    br i1 [[A:%.*]], label [[M:%.*]], label [[O:%.*]]
295c987212SSimon Pilgrim; CHECK-TWO-FOLD-5:       O:
305c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:    [[IAJ:%.*]] = add i32 [[I:%.*]], [[J:%.*]]
315c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:    [[IAJAK:%.*]] = add i32 [[IAJ]], [[K:%.*]]
325c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:    [[IXJ:%.*]] = xor i32 [[I]], [[J]]
335c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:    [[IXJXK:%.*]] = xor i32 [[IXJ]], [[K]]
345c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:    [[WP:%.*]] = select i1 [[B:%.*]], i32 [[IAJAK]], i32 [[IXJXK]]
355c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:    [[WP2:%.*]] = add i32 [[WP]], [[WP]]
365c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:    br label [[M]]
375c987212SSimon Pilgrim; CHECK-TWO-FOLD-5:       M:
385c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:    [[W:%.*]] = phi i32 [ [[WP2]], [[O]] ], [ 2, [[ENTRY:%.*]] ]
395c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:    [[R:%.*]] = add i32 [[W]], 1
405c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:    ret i32 [[R]]
411dd85e9dSSam Parker;
425c987212SSimon Pilgrim; CHECK-TWO-FOLD-6-LABEL: @test_i32(
435c987212SSimon Pilgrim; CHECK-TWO-FOLD-6-NEXT:  entry:
445c987212SSimon Pilgrim; CHECK-TWO-FOLD-6-NEXT:    [[IAJ:%.*]] = add i32 [[I:%.*]], [[J:%.*]]
455c987212SSimon Pilgrim; CHECK-TWO-FOLD-6-NEXT:    [[IAJAK:%.*]] = add i32 [[IAJ]], [[K:%.*]]
465c987212SSimon Pilgrim; CHECK-TWO-FOLD-6-NEXT:    [[IXJ:%.*]] = xor i32 [[I]], [[J]]
475c987212SSimon Pilgrim; CHECK-TWO-FOLD-6-NEXT:    [[IXJXK:%.*]] = xor i32 [[IXJ]], [[K]]
485c987212SSimon Pilgrim; CHECK-TWO-FOLD-6-NEXT:    [[WP:%.*]] = select i1 [[B:%.*]], i32 [[IAJAK]], i32 [[IXJXK]]
495c987212SSimon Pilgrim; CHECK-TWO-FOLD-6-NEXT:    [[WP2:%.*]] = add i32 [[WP]], [[WP]]
505c987212SSimon Pilgrim; CHECK-TWO-FOLD-6-NEXT:    [[W:%.*]] = select i1 [[A:%.*]], i32 2, i32 [[WP2]]
515c987212SSimon Pilgrim; CHECK-TWO-FOLD-6-NEXT:    [[R:%.*]] = add i32 [[W]], 1
525c987212SSimon Pilgrim; CHECK-TWO-FOLD-6-NEXT:    ret i32 [[R]]
531dd85e9dSSam Parker;
541dd85e9dSSam Parkerentry:
551dd85e9dSSam Parker  br i1 %a, label %M, label %O
561dd85e9dSSam ParkerO:
571dd85e9dSSam Parker  br i1 %b, label %P, label %Q
581dd85e9dSSam ParkerP:
591dd85e9dSSam Parker  %iaj = add i32 %i, %j
601dd85e9dSSam Parker  %iajak = add i32 %iaj, %k
611dd85e9dSSam Parker  br label %N
621dd85e9dSSam ParkerQ:
631dd85e9dSSam Parker  %ixj = xor i32 %i, %j
641dd85e9dSSam Parker  %ixjxk = xor i32 %ixj, %k
651dd85e9dSSam Parker  br label %N
661dd85e9dSSam ParkerN:
671dd85e9dSSam Parker  %Wp = phi i32 [ %iajak, %P ], [ %ixjxk, %Q ]
681dd85e9dSSam Parker  %Wp2 = add i32 %Wp, %Wp
691dd85e9dSSam Parker  br label %M
701dd85e9dSSam ParkerM:
711dd85e9dSSam Parker  %W = phi i32 [ %Wp2, %N ], [ 2, %entry ]
721dd85e9dSSam Parker  %R = add i32 %W, 1
731dd85e9dSSam Parker  ret i32 %R
741dd85e9dSSam Parker}
751dd85e9dSSam Parker
761dd85e9dSSam Parkerdefine i32 @test_i32_minsize(i1 %a, i1 %b, i32 %i, i32 %j, i32 %k) #0 {
775c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-LABEL: @test_i32_minsize(
785c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:  entry:
795c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:    br i1 [[A:%.*]], label [[M:%.*]], label [[O:%.*]]
805c987212SSimon Pilgrim; CHECK-TWO-FOLD-4:       O:
815c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:    [[IAJ:%.*]] = add i32 [[I:%.*]], [[J:%.*]]
825c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:    [[IAJAK:%.*]] = add i32 [[IAJ]], [[K:%.*]]
835c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:    [[IXJ:%.*]] = xor i32 [[I]], [[J]]
845c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:    [[IXJXK:%.*]] = xor i32 [[IXJ]], [[K]]
855c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:    [[WP:%.*]] = select i1 [[B:%.*]], i32 [[IAJAK]], i32 [[IXJXK]]
865c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:    [[WP2:%.*]] = add i32 [[WP]], [[WP]]
875c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:    br label [[M]]
885c987212SSimon Pilgrim; CHECK-TWO-FOLD-4:       M:
895c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:    [[W:%.*]] = phi i32 [ [[WP2]], [[O]] ], [ 2, [[ENTRY:%.*]] ]
905c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:    [[R:%.*]] = add i32 [[W]], 1
915c987212SSimon Pilgrim; CHECK-TWO-FOLD-4-NEXT:    ret i32 [[R]]
921dd85e9dSSam Parker;
935c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-LABEL: @test_i32_minsize(
945c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:  entry:
955c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:    br i1 [[A:%.*]], label [[M:%.*]], label [[O:%.*]]
965c987212SSimon Pilgrim; CHECK-TWO-FOLD-5:       O:
975c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:    [[IAJ:%.*]] = add i32 [[I:%.*]], [[J:%.*]]
985c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:    [[IAJAK:%.*]] = add i32 [[IAJ]], [[K:%.*]]
995c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:    [[IXJ:%.*]] = xor i32 [[I]], [[J]]
1005c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:    [[IXJXK:%.*]] = xor i32 [[IXJ]], [[K]]
1015c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:    [[WP:%.*]] = select i1 [[B:%.*]], i32 [[IAJAK]], i32 [[IXJXK]]
1025c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:    [[WP2:%.*]] = add i32 [[WP]], [[WP]]
1035c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:    br label [[M]]
1045c987212SSimon Pilgrim; CHECK-TWO-FOLD-5:       M:
1055c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:    [[W:%.*]] = phi i32 [ [[WP2]], [[O]] ], [ 2, [[ENTRY:%.*]] ]
1065c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:    [[R:%.*]] = add i32 [[W]], 1
1075c987212SSimon Pilgrim; CHECK-TWO-FOLD-5-NEXT:    ret i32 [[R]]
1081dd85e9dSSam Parker;
1095c987212SSimon Pilgrim; CHECK-TWO-FOLD-6-LABEL: @test_i32_minsize(
1105c987212SSimon Pilgrim; CHECK-TWO-FOLD-6-NEXT:  entry:
1115c987212SSimon Pilgrim; CHECK-TWO-FOLD-6-NEXT:    [[IAJ:%.*]] = add i32 [[I:%.*]], [[J:%.*]]
1125c987212SSimon Pilgrim; CHECK-TWO-FOLD-6-NEXT:    [[IAJAK:%.*]] = add i32 [[IAJ]], [[K:%.*]]
1135c987212SSimon Pilgrim; CHECK-TWO-FOLD-6-NEXT:    [[IXJ:%.*]] = xor i32 [[I]], [[J]]
1145c987212SSimon Pilgrim; CHECK-TWO-FOLD-6-NEXT:    [[IXJXK:%.*]] = xor i32 [[IXJ]], [[K]]
1155c987212SSimon Pilgrim; CHECK-TWO-FOLD-6-NEXT:    [[WP:%.*]] = select i1 [[B:%.*]], i32 [[IAJAK]], i32 [[IXJXK]]
1165c987212SSimon Pilgrim; CHECK-TWO-FOLD-6-NEXT:    [[WP2:%.*]] = add i32 [[WP]], [[WP]]
1175c987212SSimon Pilgrim; CHECK-TWO-FOLD-6-NEXT:    [[W:%.*]] = select i1 [[A:%.*]], i32 2, i32 [[WP2]]
1185c987212SSimon Pilgrim; CHECK-TWO-FOLD-6-NEXT:    [[R:%.*]] = add i32 [[W]], 1
1195c987212SSimon Pilgrim; CHECK-TWO-FOLD-6-NEXT:    ret i32 [[R]]
1201dd85e9dSSam Parker;
1211dd85e9dSSam Parkerentry:
1221dd85e9dSSam Parker  br i1 %a, label %M, label %O
1231dd85e9dSSam ParkerO:
1241dd85e9dSSam Parker  br i1 %b, label %P, label %Q
1251dd85e9dSSam ParkerP:
1261dd85e9dSSam Parker  %iaj = add i32 %i, %j
1271dd85e9dSSam Parker  %iajak = add i32 %iaj, %k
1281dd85e9dSSam Parker  br label %N
1291dd85e9dSSam ParkerQ:
1301dd85e9dSSam Parker  %ixj = xor i32 %i, %j
1311dd85e9dSSam Parker  %ixjxk = xor i32 %ixj, %k
1321dd85e9dSSam Parker  br label %N
1331dd85e9dSSam ParkerN:
1341dd85e9dSSam Parker  %Wp = phi i32 [ %iajak, %P ], [ %ixjxk, %Q ]
1351dd85e9dSSam Parker  %Wp2 = add i32 %Wp, %Wp
1361dd85e9dSSam Parker  br label %M
1371dd85e9dSSam ParkerM:
1381dd85e9dSSam Parker  %W = phi i32 [ %Wp2, %N ], [ 2, %entry ]
1391dd85e9dSSam Parker  %R = add i32 %W, 1
1401dd85e9dSSam Parker  ret i32 %R
1411dd85e9dSSam Parker}
1421dd85e9dSSam Parker
1431dd85e9dSSam Parkerdefine i64 @test_i64(i1 %a, i1 %b, i64 %i, i64 %j, i64 %k) {
1441dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4-LABEL: @test_i64(
1451dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4-NEXT:  entry:
1461dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4-NEXT:    br i1 [[A:%.*]], label [[M:%.*]], label [[O:%.*]]
1471dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4:       O:
148c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-4-NEXT:    br i1 [[B:%.*]], label [[P:%.*]], label [[Q:%.*]]
149c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-4:       P:
1501dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4-NEXT:    [[IAJ:%.*]] = add i64 [[I:%.*]], [[J:%.*]]
1511dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4-NEXT:    [[IAJAK:%.*]] = add i64 [[IAJ]], [[K:%.*]]
152c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-4-NEXT:    br label [[N:%.*]]
153c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-4:       Q:
1541dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4-NEXT:    [[IXJ:%.*]] = xor i64 [[I]], [[J]]
1551dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4-NEXT:    [[IXJXK:%.*]] = xor i64 [[IXJ]], [[K]]
156c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-4-NEXT:    br label [[N]]
157c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-4:       N:
158c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-4-NEXT:    [[WP:%.*]] = phi i64 [ [[IAJAK]], [[P]] ], [ [[IXJXK]], [[Q]] ]
1591dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4-NEXT:    [[WP2:%.*]] = add i64 [[WP]], [[WP]]
1601dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4-NEXT:    br label [[M]]
1611dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4:       M:
162c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-4-NEXT:    [[W:%.*]] = phi i64 [ [[WP2]], [[N]] ], [ 2, [[ENTRY:%.*]] ]
1631dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4-NEXT:    [[R:%.*]] = add i64 [[W]], 1
1641dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4-NEXT:    ret i64 [[R]]
1651dd85e9dSSam Parker;
1661dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-LABEL: @test_i64(
1671dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:  entry:
1681dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:    br i1 [[A:%.*]], label [[M:%.*]], label [[O:%.*]]
1691dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4:       O:
1701dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:    [[IAJ:%.*]] = add i64 [[I:%.*]], [[J:%.*]]
1711dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:    [[IAJAK:%.*]] = add i64 [[IAJ]], [[K:%.*]]
1721dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:    [[IXJ:%.*]] = xor i64 [[I]], [[J]]
1731dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:    [[IXJXK:%.*]] = xor i64 [[IXJ]], [[K]]
1741dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:    [[WP:%.*]] = select i1 [[B:%.*]], i64 [[IAJAK]], i64 [[IXJXK]]
1751dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:    [[WP2:%.*]] = add i64 [[WP]], [[WP]]
1761dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:    br label [[M]]
1771dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4:       M:
1781dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:    [[W:%.*]] = phi i64 [ [[WP2]], [[O]] ], [ 2, [[ENTRY:%.*]] ]
1791dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:    [[R:%.*]] = add i64 [[W]], 1
1801dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:    ret i64 [[R]]
1811dd85e9dSSam Parker;
1821dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5-LABEL: @test_i64(
1831dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5-NEXT:  entry:
1841dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5-NEXT:    br i1 [[A:%.*]], label [[M:%.*]], label [[O:%.*]]
1851dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5:       O:
186c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-5-NEXT:    br i1 [[B:%.*]], label [[P:%.*]], label [[Q:%.*]]
187c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-5:       P:
1881dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5-NEXT:    [[IAJ:%.*]] = add i64 [[I:%.*]], [[J:%.*]]
1891dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5-NEXT:    [[IAJAK:%.*]] = add i64 [[IAJ]], [[K:%.*]]
190c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-5-NEXT:    br label [[N:%.*]]
191c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-5:       Q:
1921dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5-NEXT:    [[IXJ:%.*]] = xor i64 [[I]], [[J]]
1931dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5-NEXT:    [[IXJXK:%.*]] = xor i64 [[IXJ]], [[K]]
194c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-5-NEXT:    br label [[N]]
195c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-5:       N:
196c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-5-NEXT:    [[WP:%.*]] = phi i64 [ [[IAJAK]], [[P]] ], [ [[IXJXK]], [[Q]] ]
1971dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5-NEXT:    [[WP2:%.*]] = add i64 [[WP]], [[WP]]
1981dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5-NEXT:    br label [[M]]
1991dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5:       M:
200c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-5-NEXT:    [[W:%.*]] = phi i64 [ [[WP2]], [[N]] ], [ 2, [[ENTRY:%.*]] ]
2011dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5-NEXT:    [[R:%.*]] = add i64 [[W]], 1
2021dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5-NEXT:    ret i64 [[R]]
2031dd85e9dSSam Parker;
2041dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-LABEL: @test_i64(
2051dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:  entry:
2061dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:    br i1 [[A:%.*]], label [[M:%.*]], label [[O:%.*]]
2071dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5:       O:
2081dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:    [[IAJ:%.*]] = add i64 [[I:%.*]], [[J:%.*]]
2091dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:    [[IAJAK:%.*]] = add i64 [[IAJ]], [[K:%.*]]
2101dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:    [[IXJ:%.*]] = xor i64 [[I]], [[J]]
2111dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:    [[IXJXK:%.*]] = xor i64 [[IXJ]], [[K]]
2121dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:    [[WP:%.*]] = select i1 [[B:%.*]], i64 [[IAJAK]], i64 [[IXJXK]]
2131dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:    [[WP2:%.*]] = add i64 [[WP]], [[WP]]
2141dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:    br label [[M]]
2151dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5:       M:
2161dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:    [[W:%.*]] = phi i64 [ [[WP2]], [[O]] ], [ 2, [[ENTRY:%.*]] ]
2171dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:    [[R:%.*]] = add i64 [[W]], 1
2181dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:    ret i64 [[R]]
2191dd85e9dSSam Parker;
2201dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-6-LABEL: @test_i64(
2211dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-6-NEXT:  entry:
222c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6-NEXT:    br i1 [[A:%.*]], label [[M:%.*]], label [[O:%.*]]
223c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6:       O:
224c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6-NEXT:    br i1 [[B:%.*]], label [[P:%.*]], label [[Q:%.*]]
225c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6:       P:
2261dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-6-NEXT:    [[IAJ:%.*]] = add i64 [[I:%.*]], [[J:%.*]]
2271dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-6-NEXT:    [[IAJAK:%.*]] = add i64 [[IAJ]], [[K:%.*]]
228c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6-NEXT:    br label [[N:%.*]]
229c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6:       Q:
2301dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-6-NEXT:    [[IXJ:%.*]] = xor i64 [[I]], [[J]]
2311dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-6-NEXT:    [[IXJXK:%.*]] = xor i64 [[IXJ]], [[K]]
232c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6-NEXT:    br label [[N]]
233c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6:       N:
234c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6-NEXT:    [[WP:%.*]] = phi i64 [ [[IAJAK]], [[P]] ], [ [[IXJXK]], [[Q]] ]
2351dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-6-NEXT:    [[WP2:%.*]] = add i64 [[WP]], [[WP]]
236c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6-NEXT:    br label [[M]]
237c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6:       M:
238c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6-NEXT:    [[W:%.*]] = phi i64 [ [[WP2]], [[N]] ], [ 2, [[ENTRY:%.*]] ]
2391dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-6-NEXT:    [[R:%.*]] = add i64 [[W]], 1
2401dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-6-NEXT:    ret i64 [[R]]
2411dd85e9dSSam Parker;
2421dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-6-LABEL: @test_i64(
2431dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-6-NEXT:  entry:
2441dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-6-NEXT:    [[IAJ:%.*]] = add i64 [[I:%.*]], [[J:%.*]]
2451dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-6-NEXT:    [[IAJAK:%.*]] = add i64 [[IAJ]], [[K:%.*]]
2461dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-6-NEXT:    [[IXJ:%.*]] = xor i64 [[I]], [[J]]
2471dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-6-NEXT:    [[IXJXK:%.*]] = xor i64 [[IXJ]], [[K]]
2481dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-6-NEXT:    [[WP:%.*]] = select i1 [[B:%.*]], i64 [[IAJAK]], i64 [[IXJXK]]
2491dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-6-NEXT:    [[WP2:%.*]] = add i64 [[WP]], [[WP]]
2501dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-6-NEXT:    [[W:%.*]] = select i1 [[A:%.*]], i64 2, i64 [[WP2]]
2511dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-6-NEXT:    [[R:%.*]] = add i64 [[W]], 1
2521dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-6-NEXT:    ret i64 [[R]]
2531dd85e9dSSam Parker;
2541dd85e9dSSam Parkerentry:
2551dd85e9dSSam Parker  br i1 %a, label %M, label %O
2561dd85e9dSSam ParkerO:
2571dd85e9dSSam Parker  br i1 %b, label %P, label %Q
2581dd85e9dSSam ParkerP:
2591dd85e9dSSam Parker  %iaj = add i64 %i, %j
2601dd85e9dSSam Parker  %iajak = add i64 %iaj, %k
2611dd85e9dSSam Parker  br label %N
2621dd85e9dSSam ParkerQ:
2631dd85e9dSSam Parker  %ixj = xor i64 %i, %j
2641dd85e9dSSam Parker  %ixjxk = xor i64 %ixj, %k
2651dd85e9dSSam Parker  br label %N
2661dd85e9dSSam ParkerN:
2671dd85e9dSSam Parker  %Wp = phi i64 [ %iajak, %P ], [ %ixjxk, %Q ]
2681dd85e9dSSam Parker  %Wp2 = add i64 %Wp, %Wp
2691dd85e9dSSam Parker  br label %M
2701dd85e9dSSam ParkerM:
2711dd85e9dSSam Parker  %W = phi i64 [ %Wp2, %N ], [ 2, %entry ]
2721dd85e9dSSam Parker  %R = add i64 %W, 1
2731dd85e9dSSam Parker  ret i64 %R
2741dd85e9dSSam Parker}
2751dd85e9dSSam Parker
2761dd85e9dSSam Parkerdefine i64 @test_i64_minsize(i1 %a, i1 %b, i64 %i, i64 %j, i64 %k) #0 {
2771dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4-LABEL: @test_i64_minsize(
2781dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4-NEXT:  entry:
2791dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4-NEXT:    br i1 [[A:%.*]], label [[M:%.*]], label [[O:%.*]]
2801dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4:       O:
281c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-4-NEXT:    br i1 [[B:%.*]], label [[P:%.*]], label [[Q:%.*]]
282c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-4:       P:
2831dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4-NEXT:    [[IAJ:%.*]] = add i64 [[I:%.*]], [[J:%.*]]
2841dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4-NEXT:    [[IAJAK:%.*]] = add i64 [[IAJ]], [[K:%.*]]
285c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-4-NEXT:    br label [[N:%.*]]
286c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-4:       Q:
2871dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4-NEXT:    [[IXJ:%.*]] = xor i64 [[I]], [[J]]
2881dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4-NEXT:    [[IXJXK:%.*]] = xor i64 [[IXJ]], [[K]]
289c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-4-NEXT:    br label [[N]]
290c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-4:       N:
291c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-4-NEXT:    [[WP:%.*]] = phi i64 [ [[IAJAK]], [[P]] ], [ [[IXJXK]], [[Q]] ]
2921dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4-NEXT:    [[WP2:%.*]] = add i64 [[WP]], [[WP]]
2931dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4-NEXT:    br label [[M]]
2941dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4:       M:
295c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-4-NEXT:    [[W:%.*]] = phi i64 [ [[WP2]], [[N]] ], [ 2, [[ENTRY:%.*]] ]
2961dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4-NEXT:    [[R:%.*]] = add i64 [[W]], 1
2971dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-4-NEXT:    ret i64 [[R]]
2981dd85e9dSSam Parker;
2991dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-LABEL: @test_i64_minsize(
3001dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:  entry:
3011dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:    br i1 [[A:%.*]], label [[M:%.*]], label [[O:%.*]]
3021dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4:       O:
3031dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:    [[IAJ:%.*]] = add i64 [[I:%.*]], [[J:%.*]]
3041dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:    [[IAJAK:%.*]] = add i64 [[IAJ]], [[K:%.*]]
3051dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:    [[IXJ:%.*]] = xor i64 [[I]], [[J]]
3061dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:    [[IXJXK:%.*]] = xor i64 [[IXJ]], [[K]]
3071dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:    [[WP:%.*]] = select i1 [[B:%.*]], i64 [[IAJAK]], i64 [[IXJXK]]
3081dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:    [[WP2:%.*]] = add i64 [[WP]], [[WP]]
3091dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:    br label [[M]]
3101dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4:       M:
3111dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:    [[W:%.*]] = phi i64 [ [[WP2]], [[O]] ], [ 2, [[ENTRY:%.*]] ]
3121dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:    [[R:%.*]] = add i64 [[W]], 1
3131dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-4-NEXT:    ret i64 [[R]]
3141dd85e9dSSam Parker;
3151dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5-LABEL: @test_i64_minsize(
3161dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5-NEXT:  entry:
3171dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5-NEXT:    br i1 [[A:%.*]], label [[M:%.*]], label [[O:%.*]]
3181dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5:       O:
319c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-5-NEXT:    br i1 [[B:%.*]], label [[P:%.*]], label [[Q:%.*]]
320c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-5:       P:
3211dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5-NEXT:    [[IAJ:%.*]] = add i64 [[I:%.*]], [[J:%.*]]
3221dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5-NEXT:    [[IAJAK:%.*]] = add i64 [[IAJ]], [[K:%.*]]
323c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-5-NEXT:    br label [[N:%.*]]
324c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-5:       Q:
3251dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5-NEXT:    [[IXJ:%.*]] = xor i64 [[I]], [[J]]
3261dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5-NEXT:    [[IXJXK:%.*]] = xor i64 [[IXJ]], [[K]]
327c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-5-NEXT:    br label [[N]]
328c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-5:       N:
329c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-5-NEXT:    [[WP:%.*]] = phi i64 [ [[IAJAK]], [[P]] ], [ [[IXJXK]], [[Q]] ]
3301dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5-NEXT:    [[WP2:%.*]] = add i64 [[WP]], [[WP]]
3311dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5-NEXT:    br label [[M]]
3321dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5:       M:
333c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-5-NEXT:    [[W:%.*]] = phi i64 [ [[WP2]], [[N]] ], [ 2, [[ENTRY:%.*]] ]
3341dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5-NEXT:    [[R:%.*]] = add i64 [[W]], 1
3351dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-5-NEXT:    ret i64 [[R]]
3361dd85e9dSSam Parker;
3371dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-LABEL: @test_i64_minsize(
3381dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:  entry:
3391dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:    br i1 [[A:%.*]], label [[M:%.*]], label [[O:%.*]]
3401dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5:       O:
3411dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:    [[IAJ:%.*]] = add i64 [[I:%.*]], [[J:%.*]]
3421dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:    [[IAJAK:%.*]] = add i64 [[IAJ]], [[K:%.*]]
3431dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:    [[IXJ:%.*]] = xor i64 [[I]], [[J]]
3441dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:    [[IXJXK:%.*]] = xor i64 [[IXJ]], [[K]]
3451dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:    [[WP:%.*]] = select i1 [[B:%.*]], i64 [[IAJAK]], i64 [[IXJXK]]
3461dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:    [[WP2:%.*]] = add i64 [[WP]], [[WP]]
3471dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:    br label [[M]]
3481dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5:       M:
3491dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:    [[W:%.*]] = phi i64 [ [[WP2]], [[O]] ], [ 2, [[ENTRY:%.*]] ]
3501dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:    [[R:%.*]] = add i64 [[W]], 1
3511dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-5-NEXT:    ret i64 [[R]]
3521dd85e9dSSam Parker;
3531dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-6-LABEL: @test_i64_minsize(
3541dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-6-NEXT:  entry:
355c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6-NEXT:    br i1 [[A:%.*]], label [[M:%.*]], label [[O:%.*]]
356c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6:       O:
357c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6-NEXT:    br i1 [[B:%.*]], label [[P:%.*]], label [[Q:%.*]]
358c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6:       P:
3591dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-6-NEXT:    [[IAJ:%.*]] = add i64 [[I:%.*]], [[J:%.*]]
3601dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-6-NEXT:    [[IAJAK:%.*]] = add i64 [[IAJ]], [[K:%.*]]
361c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6-NEXT:    br label [[N:%.*]]
362c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6:       Q:
3631dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-6-NEXT:    [[IXJ:%.*]] = xor i64 [[I]], [[J]]
3641dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-6-NEXT:    [[IXJXK:%.*]] = xor i64 [[IXJ]], [[K]]
365c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6-NEXT:    br label [[N]]
366c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6:       N:
367c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6-NEXT:    [[WP:%.*]] = phi i64 [ [[IAJAK]], [[P]] ], [ [[IXJXK]], [[Q]] ]
3681dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-6-NEXT:    [[WP2:%.*]] = add i64 [[WP]], [[WP]]
369c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6-NEXT:    br label [[M]]
370c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6:       M:
371c40126e7SSanjay Patel; CHECK-V8M-TWO-FOLD-6-NEXT:    [[W:%.*]] = phi i64 [ [[WP2]], [[N]] ], [ 2, [[ENTRY:%.*]] ]
3721dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-6-NEXT:    [[R:%.*]] = add i64 [[W]], 1
3731dd85e9dSSam Parker; CHECK-V8M-TWO-FOLD-6-NEXT:    ret i64 [[R]]
3741dd85e9dSSam Parker;
3751dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-6-LABEL: @test_i64_minsize(
3761dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-6-NEXT:  entry:
3771dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-6-NEXT:    [[IAJ:%.*]] = add i64 [[I:%.*]], [[J:%.*]]
3781dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-6-NEXT:    [[IAJAK:%.*]] = add i64 [[IAJ]], [[K:%.*]]
3791dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-6-NEXT:    [[IXJ:%.*]] = xor i64 [[I]], [[J]]
3801dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-6-NEXT:    [[IXJXK:%.*]] = xor i64 [[IXJ]], [[K]]
3811dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-6-NEXT:    [[WP:%.*]] = select i1 [[B:%.*]], i64 [[IAJAK]], i64 [[IXJXK]]
3821dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-6-NEXT:    [[WP2:%.*]] = add i64 [[WP]], [[WP]]
3831dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-6-NEXT:    [[W:%.*]] = select i1 [[A:%.*]], i64 2, i64 [[WP2]]
3841dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-6-NEXT:    [[R:%.*]] = add i64 [[W]], 1
3851dd85e9dSSam Parker; CHECK-V8A-TWO-FOLD-6-NEXT:    ret i64 [[R]]
3861dd85e9dSSam Parker;
3871dd85e9dSSam Parkerentry:
3881dd85e9dSSam Parker  br i1 %a, label %M, label %O
3891dd85e9dSSam ParkerO:
3901dd85e9dSSam Parker  br i1 %b, label %P, label %Q
3911dd85e9dSSam ParkerP:
3921dd85e9dSSam Parker  %iaj = add i64 %i, %j
3931dd85e9dSSam Parker  %iajak = add i64 %iaj, %k
3941dd85e9dSSam Parker  br label %N
3951dd85e9dSSam ParkerQ:
3961dd85e9dSSam Parker  %ixj = xor i64 %i, %j
3971dd85e9dSSam Parker  %ixjxk = xor i64 %ixj, %k
3981dd85e9dSSam Parker  br label %N
3991dd85e9dSSam ParkerN:
4001dd85e9dSSam Parker  %Wp = phi i64 [ %iajak, %P ], [ %ixjxk, %Q ]
4011dd85e9dSSam Parker  %Wp2 = add i64 %Wp, %Wp
4021dd85e9dSSam Parker  br label %M
4031dd85e9dSSam ParkerM:
4041dd85e9dSSam Parker  %W = phi i64 [ %Wp2, %N ], [ 2, %entry ]
4051dd85e9dSSam Parker  %R = add i64 %W, 1
4061dd85e9dSSam Parker  ret i64 %R
4071dd85e9dSSam Parker}
4081dd85e9dSSam Parker
4091dd85e9dSSam Parkerattributes #0 = { minsize optsize }
410