[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / PowerPC / pr41088.ll
blobf3899bb15381a0e770301a72f8608d6e6de74c79
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mcpu=pwr8 -ppc-asm-full-reg-names \
3 ; RUN:   -mtriple=powerpc64le-unknown-unknown -verify-machineinstrs < %s | \
4 ; RUN:   FileCheck %s
6 %0 = type { [0 x i64], %1, [0 x i64], { i64, i8* }, [0 x i64] }
7 %1 = type { [0 x i64], %2, [0 x i64], i64*, [0 x i64] }
8 %2 = type { [0 x i64], %3, [0 x i64], %4, [0 x i8], i8, [7 x i8] }
9 %3 = type { [0 x i64], { i64*, i64* }, [0 x i64], i64*, [0 x i8], i8, [7 x i8] }
10 %4 = type { [0 x i64], { i64*, i64* }, [0 x i64], %5, [0 x i64] }
11 %5 = type { [0 x i64], { i64*, i64* }, [0 x i64], i64*, [0 x i64] }
12 %6 = type { [0 x i64], i64, [2 x i64] }
13 %7 = type { [0 x i64], { i64*, i64* }, [0 x i64], %8, [0 x i64] }
14 %8 = type { [0 x i64], %9*, [0 x i32], { i32, i32 }, [0 x i8], i8, [7 x i8] }
15 %9 = type { [0 x i64], i64, [0 x i64], [0 x %10], [0 x i8], %11 }
16 %10 = type { [0 x i8], i8, [31 x i8] }
17 %11 = type {}
18 %12 = type { [0 x i64], %13, [0 x i32], i32, [0 x i32], i32, [0 x i32] }
19 %13 = type { [0 x i8], i8, [23 x i8] }
20 %14 = type { [0 x i64], i64, [0 x i64], %15, [0 x i32], i32, [0 x i8], i8, [0 x i8], { i8, i8 }, [0 x i8], { i8, i8 }, [0 x i8], { i8, i8 }, [0 x i8], { i8, i8 }, [0 x i8], { i8, i8 }, [0 x i8], { i8, i8 }, [0 x i8], { i8, i8 }, [0 x i8], { i8, i8 }, [0 x i8], { i8, i8 }, [0 x i8], { i8, i8 }, [7 x i8] }
21 %15 = type { [0 x i64], { i64*, i64 }, [0 x i64], i64, [0 x i64] }
22 %16 = type { [0 x i64], %17, [0 x i64], %18, [0 x i64], %19, [0 x i64], i64, [0 x i8], { i8, i8 }, [6 x i8] }
23 %17 = type { [0 x i32], i32, [27 x i32] }
24 %18 = type { [0 x i64], i64, [6 x i64] }
25 %19 = type { [0 x i8], i8, [103 x i8] }
26 %20 = type { [0 x i64], { i64*, i64* }*, [0 x i64], %7**, [0 x i64], i64**, [0 x i64] }
27 %21 = type { [0 x i64], i64, [0 x i64], void (i32, %21*)*, [0 x i64], [2 x i64], [0 x i64] }
28 %22 = type { [0 x i8] }
30 @var = external dso_local unnamed_addr constant <{ i8*, [8 x i8], i8*, [16 x i8] }>, align 8
32 declare dso_local fastcc { i64*, i8* } @test2(%0**) unnamed_addr
34 define void @test(%6* %arg, %7* %arg1, %12* %arg2) unnamed_addr personality i32 (i32, i32, i64, %21*, %22*)* @personality {
35 ; CHECK-LABEL: test:
36 ; CHECK:         .cfi_personality 148, DW.ref.personality
37 ; CHECK-NEXT:    .cfi_lsda 20, .Lexception0
38 ; CHECK-NEXT:  .Lfunc_gep0:
39 ; CHECK-NEXT:    addis r2, r12, .TOC.-.Lfunc_gep0@ha
40 ; CHECK-NEXT:    addi r2, r2, .TOC.-.Lfunc_gep0@l
41 ; CHECK-NEXT:  .Lfunc_lep0:
42 ; CHECK-NEXT:    .localentry test, .Lfunc_lep0-.Lfunc_gep0
43 ; CHECK-NEXT:  # %bb.0: # %bb
44 ; CHECK-NEXT:    mflr r0
45 ; CHECK-NEXT:    std r0, 16(r1)
46 ; CHECK-NEXT:    stdu r1, -32(r1)
47 ; CHECK-NEXT:    .cfi_def_cfa_offset 32
48 ; CHECK-NEXT:    .cfi_offset lr, 16
49 ; CHECK-NEXT:    li r3, 0
50 ; CHECK-NEXT:  # %bb.1: # %bb9
51 ; CHECK-NEXT:    bl test5
52 ; CHECK-NEXT:    nop
53 ; CHECK-NEXT:    rlwinm r3, r3, 8, 16, 23
54 ; CHECK-NEXT:  # %bb.2: # %bb12
55 ; CHECK-NEXT:    clrldi r4, r3, 32
56 ; CHECK-NEXT:    bl test3
57 ; CHECK-NEXT:    nop
58 ; CHECK-NEXT:    addi r1, r1, 32
59 ; CHECK-NEXT:    ld r0, 16(r1)
60 ; CHECK-NEXT:    mtlr r0
61 ; CHECK-NEXT:    blr
62 bb:
63   switch i64 undef, label %bb21 [
64     i64 3, label %bb3
65   ]
67 bb3:                                              ; preds = %bb
68   switch i3 undef, label %bb4 [
69     i3 0, label %bb9
70     i3 1, label %bb12
71   ]
73 bb4:                                              ; preds = %bb3
74   unreachable
76 bb5:                                              ; No predecessors!
77   br label %bb12
79 bb6:                                              ; No predecessors!
80   br label %bb12
82 bb7:                                              ; No predecessors!
83   br label %bb12
85 bb8:                                              ; No predecessors!
86   br label %bb12
88 bb9:                                              ; preds = %bb3
89   %tmp = call i8 @test5(%14* noalias nonnull readonly align 8 dereferenceable(64) undef), !range !0
90   %tmp10 = zext i8 %tmp to i24
91   %tmp11 = shl nuw nsw i24 %tmp10, 8
92   br label %bb12
94 bb12:                                             ; preds = %bb9, %bb8, %bb7, %bb6, %bb5, %bb3
95   %tmp13 = phi i24 [ 1024, %bb8 ], [ 768, %bb7 ], [ 512, %bb6 ], [ 256, %bb5 ], [ %tmp11, %bb9 ], [ 0, %bb3 ]
96   %tmp14 = call fastcc align 8 dereferenceable(288) %16* @test3(%20* noalias nonnull readonly align 8 dereferenceable(24) undef, i24 %tmp13)
97   br label %bb22
99 bb15:                                             ; No predecessors!
100   %tmp16 = invoke fastcc { i64*, i8* } @test2(%0** nonnull align 8 dereferenceable(8) undef)
101           to label %bb17 unwind label %bb18
103 bb17:                                             ; preds = %bb15
104   invoke void @test4({ [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly align 8 dereferenceable(40) bitcast (<{ i8*, [8 x i8], i8*, [16 x i8] }>* @var to { [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*))
105           to label %bb23 unwind label %bb25
107 bb18:                                             ; preds = %bb15
108   %tmp19 = landingpad { i8*, i32 }
109           cleanup
110   resume { i8*, i32 } undef
112 bb20:                                             ; No predecessors!
113   invoke void @test4({ [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly align 8 dereferenceable(40) bitcast (<{ i8*, [8 x i8], i8*, [16 x i8] }>* @var to { [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*))
114           to label %bb24 unwind label %bb25
116 bb21:                                             ; preds = %bb
117   unreachable
119 bb22:                                             ; preds = %bb12
120   ret void
122 bb23:                                             ; preds = %bb17
123   unreachable
125 bb24:                                             ; preds = %bb20
126   unreachable
128 bb25:                                             ; preds = %bb20, %bb17
129   %tmp26 = landingpad { i8*, i32 }
130           cleanup
131   resume { i8*, i32 } undef
134 declare dso_local fastcc %16* @test3(%20*, i24) unnamed_addr
136 declare i32 @personality(i32, i32, i64, %21*, %22*) unnamed_addr
138 declare void @test4({ [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*) unnamed_addr
140 declare i8 @test5(%14*) unnamed_addr
142 !0 = !{i8 0, i8 5}