Eric Christopher | cee313d | 2019-04-17 04:52:47 +0000 | [diff] [blame] | 1 | ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py |
| 2 | ; RUN: opt -S < %s -simplifycfg -simplifycfg-merge-cond-stores=true -simplifycfg-merge-cond-stores-aggressively=false -phi-node-folding-threshold=1 | FileCheck %s |
| 3 | |
| 4 | target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64" |
| 5 | target triple = "armv7--linux-gnueabihf" |
| 6 | |
| 7 | ; This is a bit reversal that has been run through the early optimizer (-mem2reg -gvn -instcombine). |
| 8 | ; There should be no additional PHIs created at all. The store should be on its own in a predicated |
| 9 | ; block and there should be no PHIs. |
| 10 | |
| 11 | define i32 @f(i32* %b) { |
| 12 | ; CHECK-LABEL: @f( |
| 13 | ; CHECK-NEXT: entry: |
| 14 | ; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[B:%.*]], align 4 |
| 15 | ; CHECK-NEXT: [[AND:%.*]] = and i32 [[TMP0]], 1 |
| 16 | ; CHECK-NEXT: [[TOBOOL:%.*]] = icmp eq i32 [[AND]], 0 |
| 17 | ; CHECK-NEXT: [[OR:%.*]] = or i32 [[TMP0]], -2147483648 |
| 18 | ; CHECK-NEXT: [[TMP1:%.*]] = select i1 [[TOBOOL]], i32 [[TMP0]], i32 [[OR]] |
| 19 | ; CHECK-NEXT: [[AND1:%.*]] = and i32 [[TMP1]], 2 |
| 20 | ; CHECK-NEXT: [[TOBOOL2:%.*]] = icmp eq i32 [[AND1]], 0 |
| 21 | ; CHECK-NEXT: [[OR4:%.*]] = or i32 [[TMP1]], 1073741824 |
| 22 | ; CHECK-NEXT: [[DOTOR4:%.*]] = select i1 [[TOBOOL2]], i32 [[TMP1]], i32 [[OR4]] |
| 23 | ; CHECK-NEXT: [[TMP2:%.*]] = xor i1 [[TOBOOL]], true |
| 24 | ; CHECK-NEXT: [[TMP3:%.*]] = xor i1 [[TOBOOL2]], true |
| 25 | ; CHECK-NEXT: [[TMP4:%.*]] = or i1 [[TMP2]], [[TMP3]] |
| 26 | ; CHECK-NEXT: [[AND6:%.*]] = and i32 [[DOTOR4]], 4 |
| 27 | ; CHECK-NEXT: [[TOBOOL7:%.*]] = icmp eq i32 [[AND6]], 0 |
| 28 | ; CHECK-NEXT: [[OR9:%.*]] = or i32 [[DOTOR4]], 536870912 |
| 29 | ; CHECK-NEXT: [[DOTOR4_OR9:%.*]] = select i1 [[TOBOOL7]], i32 [[DOTOR4]], i32 [[OR9]] |
| 30 | ; CHECK-NEXT: [[TMP5:%.*]] = xor i1 [[TMP4]], true |
| 31 | ; CHECK-NEXT: [[TMP6:%.*]] = xor i1 [[TOBOOL7]], true |
| 32 | ; CHECK-NEXT: [[TMP7:%.*]] = xor i1 [[TMP5]], true |
| 33 | ; CHECK-NEXT: [[TMP8:%.*]] = or i1 [[TMP7]], [[TMP6]] |
| 34 | ; CHECK-NEXT: [[AND11:%.*]] = and i32 [[DOTOR4_OR9]], 8 |
| 35 | ; CHECK-NEXT: [[TOBOOL12:%.*]] = icmp eq i32 [[AND11]], 0 |
| 36 | ; CHECK-NEXT: [[OR14:%.*]] = or i32 [[DOTOR4_OR9]], 268435456 |
| 37 | ; CHECK-NEXT: [[DOTOR4_OR9_OR14:%.*]] = select i1 [[TOBOOL12]], i32 [[DOTOR4_OR9]], i32 [[OR14]] |
| 38 | ; CHECK-NEXT: [[TMP9:%.*]] = xor i1 [[TMP8]], true |
| 39 | ; CHECK-NEXT: [[TMP10:%.*]] = xor i1 [[TOBOOL12]], true |
| 40 | ; CHECK-NEXT: [[TMP11:%.*]] = xor i1 [[TMP9]], true |
| 41 | ; CHECK-NEXT: [[TMP12:%.*]] = or i1 [[TMP11]], [[TMP10]] |
| 42 | ; CHECK-NEXT: [[AND16:%.*]] = and i32 [[DOTOR4_OR9_OR14]], 16 |
| 43 | ; CHECK-NEXT: [[TOBOOL17:%.*]] = icmp eq i32 [[AND16]], 0 |
| 44 | ; CHECK-NEXT: [[OR19:%.*]] = or i32 [[DOTOR4_OR9_OR14]], 134217728 |
| 45 | ; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19:%.*]] = select i1 [[TOBOOL17]], i32 [[DOTOR4_OR9_OR14]], i32 [[OR19]] |
| 46 | ; CHECK-NEXT: [[TMP13:%.*]] = xor i1 [[TMP12]], true |
| 47 | ; CHECK-NEXT: [[TMP14:%.*]] = xor i1 [[TOBOOL17]], true |
| 48 | ; CHECK-NEXT: [[TMP15:%.*]] = xor i1 [[TMP13]], true |
| 49 | ; CHECK-NEXT: [[TMP16:%.*]] = or i1 [[TMP15]], [[TMP14]] |
| 50 | ; CHECK-NEXT: [[AND21:%.*]] = and i32 [[DOTOR4_OR9_OR14_OR19]], 32 |
| 51 | ; CHECK-NEXT: [[TOBOOL22:%.*]] = icmp eq i32 [[AND21]], 0 |
| 52 | ; CHECK-NEXT: [[OR24:%.*]] = or i32 [[DOTOR4_OR9_OR14_OR19]], 67108864 |
| 53 | ; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19_OR24:%.*]] = select i1 [[TOBOOL22]], i32 [[DOTOR4_OR9_OR14_OR19]], i32 [[OR24]] |
| 54 | ; CHECK-NEXT: [[TMP17:%.*]] = xor i1 [[TMP16]], true |
| 55 | ; CHECK-NEXT: [[TMP18:%.*]] = xor i1 [[TOBOOL22]], true |
| 56 | ; CHECK-NEXT: [[TMP19:%.*]] = xor i1 [[TMP17]], true |
| 57 | ; CHECK-NEXT: [[TMP20:%.*]] = or i1 [[TMP19]], [[TMP18]] |
| 58 | ; CHECK-NEXT: [[AND26:%.*]] = and i32 [[DOTOR4_OR9_OR14_OR19_OR24]], 64 |
| 59 | ; CHECK-NEXT: [[TOBOOL27:%.*]] = icmp eq i32 [[AND26]], 0 |
| 60 | ; CHECK-NEXT: [[OR29:%.*]] = or i32 [[DOTOR4_OR9_OR14_OR19_OR24]], 33554432 |
| 61 | ; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19_OR24_OR29:%.*]] = select i1 [[TOBOOL27]], i32 [[DOTOR4_OR9_OR14_OR19_OR24]], i32 [[OR29]] |
| 62 | ; CHECK-NEXT: [[TMP21:%.*]] = xor i1 [[TMP20]], true |
| 63 | ; CHECK-NEXT: [[TMP22:%.*]] = xor i1 [[TOBOOL27]], true |
| 64 | ; CHECK-NEXT: [[TMP23:%.*]] = xor i1 [[TMP21]], true |
| 65 | ; CHECK-NEXT: [[TMP24:%.*]] = or i1 [[TMP23]], [[TMP22]] |
| 66 | ; CHECK-NEXT: [[AND31:%.*]] = and i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29]], 256 |
| 67 | ; CHECK-NEXT: [[TOBOOL32:%.*]] = icmp eq i32 [[AND31]], 0 |
| 68 | ; CHECK-NEXT: [[OR34:%.*]] = or i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29]], 8388608 |
| 69 | ; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34:%.*]] = select i1 [[TOBOOL32]], i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29]], i32 [[OR34]] |
| 70 | ; CHECK-NEXT: [[TMP25:%.*]] = xor i1 [[TMP24]], true |
| 71 | ; CHECK-NEXT: [[TMP26:%.*]] = xor i1 [[TOBOOL32]], true |
| 72 | ; CHECK-NEXT: [[TMP27:%.*]] = xor i1 [[TMP25]], true |
| 73 | ; CHECK-NEXT: [[TMP28:%.*]] = or i1 [[TMP27]], [[TMP26]] |
| 74 | ; CHECK-NEXT: [[AND36:%.*]] = and i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34]], 512 |
| 75 | ; CHECK-NEXT: [[TOBOOL37:%.*]] = icmp eq i32 [[AND36]], 0 |
| 76 | ; CHECK-NEXT: [[OR39:%.*]] = or i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34]], 4194304 |
| 77 | ; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39:%.*]] = select i1 [[TOBOOL37]], i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34]], i32 [[OR39]] |
| 78 | ; CHECK-NEXT: [[TMP29:%.*]] = xor i1 [[TMP28]], true |
| 79 | ; CHECK-NEXT: [[TMP30:%.*]] = xor i1 [[TOBOOL37]], true |
| 80 | ; CHECK-NEXT: [[TMP31:%.*]] = xor i1 [[TMP29]], true |
| 81 | ; CHECK-NEXT: [[TMP32:%.*]] = or i1 [[TMP31]], [[TMP30]] |
| 82 | ; CHECK-NEXT: [[AND41:%.*]] = and i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39]], 1024 |
| 83 | ; CHECK-NEXT: [[TOBOOL42:%.*]] = icmp eq i32 [[AND41]], 0 |
| 84 | ; CHECK-NEXT: [[OR44:%.*]] = or i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39]], 2097152 |
| 85 | ; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44:%.*]] = select i1 [[TOBOOL42]], i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39]], i32 [[OR44]] |
| 86 | ; CHECK-NEXT: [[TMP33:%.*]] = xor i1 [[TMP32]], true |
| 87 | ; CHECK-NEXT: [[TMP34:%.*]] = xor i1 [[TOBOOL42]], true |
| 88 | ; CHECK-NEXT: [[TMP35:%.*]] = xor i1 [[TMP33]], true |
| 89 | ; CHECK-NEXT: [[TMP36:%.*]] = or i1 [[TMP35]], [[TMP34]] |
| 90 | ; CHECK-NEXT: [[AND46:%.*]] = and i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44]], 2048 |
| 91 | ; CHECK-NEXT: [[TOBOOL47:%.*]] = icmp eq i32 [[AND46]], 0 |
| 92 | ; CHECK-NEXT: [[OR49:%.*]] = or i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44]], 1048576 |
| 93 | ; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49:%.*]] = select i1 [[TOBOOL47]], i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44]], i32 [[OR49]] |
| 94 | ; CHECK-NEXT: [[TMP37:%.*]] = xor i1 [[TMP36]], true |
| 95 | ; CHECK-NEXT: [[TMP38:%.*]] = xor i1 [[TOBOOL47]], true |
| 96 | ; CHECK-NEXT: [[TMP39:%.*]] = xor i1 [[TMP37]], true |
| 97 | ; CHECK-NEXT: [[TMP40:%.*]] = or i1 [[TMP39]], [[TMP38]] |
| 98 | ; CHECK-NEXT: [[AND51:%.*]] = and i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49]], 4096 |
| 99 | ; CHECK-NEXT: [[TOBOOL52:%.*]] = icmp eq i32 [[AND51]], 0 |
| 100 | ; CHECK-NEXT: [[OR54:%.*]] = or i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49]], 524288 |
| 101 | ; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54:%.*]] = select i1 [[TOBOOL52]], i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49]], i32 [[OR54]] |
| 102 | ; CHECK-NEXT: [[TMP41:%.*]] = xor i1 [[TMP40]], true |
| 103 | ; CHECK-NEXT: [[TMP42:%.*]] = xor i1 [[TOBOOL52]], true |
| 104 | ; CHECK-NEXT: [[TMP43:%.*]] = xor i1 [[TMP41]], true |
| 105 | ; CHECK-NEXT: [[TMP44:%.*]] = or i1 [[TMP43]], [[TMP42]] |
| 106 | ; CHECK-NEXT: [[AND56:%.*]] = and i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54]], 8192 |
| 107 | ; CHECK-NEXT: [[TOBOOL57:%.*]] = icmp eq i32 [[AND56]], 0 |
| 108 | ; CHECK-NEXT: [[OR59:%.*]] = or i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54]], 262144 |
| 109 | ; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59:%.*]] = select i1 [[TOBOOL57]], i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54]], i32 [[OR59]] |
| 110 | ; CHECK-NEXT: [[TMP45:%.*]] = xor i1 [[TMP44]], true |
| 111 | ; CHECK-NEXT: [[TMP46:%.*]] = xor i1 [[TOBOOL57]], true |
| 112 | ; CHECK-NEXT: [[TMP47:%.*]] = xor i1 [[TMP45]], true |
| 113 | ; CHECK-NEXT: [[TMP48:%.*]] = or i1 [[TMP47]], [[TMP46]] |
| 114 | ; CHECK-NEXT: [[AND61:%.*]] = and i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59]], 16384 |
| 115 | ; CHECK-NEXT: [[TOBOOL62:%.*]] = icmp eq i32 [[AND61]], 0 |
| 116 | ; CHECK-NEXT: [[OR64:%.*]] = or i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59]], 131072 |
| 117 | ; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59_OR64:%.*]] = select i1 [[TOBOOL62]], i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59]], i32 [[OR64]] |
| 118 | ; CHECK-NEXT: [[TMP49:%.*]] = xor i1 [[TMP48]], true |
| 119 | ; CHECK-NEXT: [[TMP50:%.*]] = xor i1 [[TOBOOL62]], true |
| 120 | ; CHECK-NEXT: [[TMP51:%.*]] = xor i1 [[TMP49]], true |
| 121 | ; CHECK-NEXT: [[TMP52:%.*]] = or i1 [[TMP51]], [[TMP50]] |
| 122 | ; CHECK-NEXT: [[AND66:%.*]] = and i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59_OR64]], 32768 |
| 123 | ; CHECK-NEXT: [[TOBOOL67:%.*]] = icmp eq i32 [[AND66]], 0 |
| 124 | ; CHECK-NEXT: [[OR69:%.*]] = or i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59_OR64]], 65536 |
| 125 | ; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59_OR64_OR69:%.*]] = select i1 [[TOBOOL67]], i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59_OR64]], i32 [[OR69]] |
| 126 | ; CHECK-NEXT: [[TMP53:%.*]] = xor i1 [[TMP52]], true |
| 127 | ; CHECK-NEXT: [[TMP54:%.*]] = xor i1 [[TOBOOL67]], true |
| 128 | ; CHECK-NEXT: [[TMP55:%.*]] = xor i1 [[TMP53]], true |
| 129 | ; CHECK-NEXT: [[TMP56:%.*]] = or i1 [[TMP55]], [[TMP54]] |
| 130 | ; CHECK-NEXT: [[AND71:%.*]] = and i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59_OR64_OR69]], 128 |
| 131 | ; CHECK-NEXT: [[TOBOOL72:%.*]] = icmp eq i32 [[AND71]], 0 |
| 132 | ; CHECK-NEXT: [[OR74:%.*]] = or i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59_OR64_OR69]], 16777216 |
| 133 | ; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59_OR64_OR69_OR74:%.*]] = select i1 [[TOBOOL72]], i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59_OR64_OR69]], i32 [[OR74]] |
| 134 | ; CHECK-NEXT: [[TMP57:%.*]] = xor i1 [[TMP56]], true |
| 135 | ; CHECK-NEXT: [[TMP58:%.*]] = xor i1 [[TOBOOL72]], true |
| 136 | ; CHECK-NEXT: [[TMP59:%.*]] = xor i1 [[TMP57]], true |
| 137 | ; CHECK-NEXT: [[TMP60:%.*]] = or i1 [[TMP59]], [[TMP58]] |
| 138 | ; CHECK-NEXT: br i1 [[TMP60]], label [[TMP61:%.*]], label [[TMP62:%.*]] |
| 139 | ; CHECK: store i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59_OR64_OR69_OR74]], i32* [[B]], align 4 |
| 140 | ; CHECK-NEXT: br label [[TMP62]] |
| 141 | ; CHECK: ret i32 0 |
| 142 | ; |
| 143 | entry: |
| 144 | %0 = load i32, i32* %b, align 4 |
| 145 | %and = and i32 %0, 1 |
| 146 | %tobool = icmp eq i32 %and, 0 |
| 147 | br i1 %tobool, label %if.end, label %if.then |
| 148 | |
| 149 | if.then: ; preds = %entry |
| 150 | %or = or i32 %0, -2147483648 |
| 151 | store i32 %or, i32* %b, align 4 |
| 152 | br label %if.end |
| 153 | |
| 154 | if.end: ; preds = %entry, %if.then |
| 155 | %1 = phi i32 [ %0, %entry ], [ %or, %if.then ] |
| 156 | %and1 = and i32 %1, 2 |
| 157 | %tobool2 = icmp eq i32 %and1, 0 |
| 158 | br i1 %tobool2, label %if.end5, label %if.then3 |
| 159 | |
| 160 | if.then3: ; preds = %if.end |
| 161 | %or4 = or i32 %1, 1073741824 |
| 162 | store i32 %or4, i32* %b, align 4 |
| 163 | br label %if.end5 |
| 164 | |
| 165 | if.end5: ; preds = %if.end, %if.then3 |
| 166 | %2 = phi i32 [ %1, %if.end ], [ %or4, %if.then3 ] |
| 167 | %and6 = and i32 %2, 4 |
| 168 | %tobool7 = icmp eq i32 %and6, 0 |
| 169 | br i1 %tobool7, label %if.end10, label %if.then8 |
| 170 | |
| 171 | if.then8: ; preds = %if.end5 |
| 172 | %or9 = or i32 %2, 536870912 |
| 173 | store i32 %or9, i32* %b, align 4 |
| 174 | br label %if.end10 |
| 175 | |
| 176 | if.end10: ; preds = %if.end5, %if.then8 |
| 177 | %3 = phi i32 [ %2, %if.end5 ], [ %or9, %if.then8 ] |
| 178 | %and11 = and i32 %3, 8 |
| 179 | %tobool12 = icmp eq i32 %and11, 0 |
| 180 | br i1 %tobool12, label %if.end15, label %if.then13 |
| 181 | |
| 182 | if.then13: ; preds = %if.end10 |
| 183 | %or14 = or i32 %3, 268435456 |
| 184 | store i32 %or14, i32* %b, align 4 |
| 185 | br label %if.end15 |
| 186 | |
| 187 | if.end15: ; preds = %if.end10, %if.then13 |
| 188 | %4 = phi i32 [ %3, %if.end10 ], [ %or14, %if.then13 ] |
| 189 | %and16 = and i32 %4, 16 |
| 190 | %tobool17 = icmp eq i32 %and16, 0 |
| 191 | br i1 %tobool17, label %if.end20, label %if.then18 |
| 192 | |
| 193 | if.then18: ; preds = %if.end15 |
| 194 | %or19 = or i32 %4, 134217728 |
| 195 | store i32 %or19, i32* %b, align 4 |
| 196 | br label %if.end20 |
| 197 | |
| 198 | if.end20: ; preds = %if.end15, %if.then18 |
| 199 | %5 = phi i32 [ %4, %if.end15 ], [ %or19, %if.then18 ] |
| 200 | %and21 = and i32 %5, 32 |
| 201 | %tobool22 = icmp eq i32 %and21, 0 |
| 202 | br i1 %tobool22, label %if.end25, label %if.then23 |
| 203 | |
| 204 | if.then23: ; preds = %if.end20 |
| 205 | %or24 = or i32 %5, 67108864 |
| 206 | store i32 %or24, i32* %b, align 4 |
| 207 | br label %if.end25 |
| 208 | |
| 209 | if.end25: ; preds = %if.end20, %if.then23 |
| 210 | %6 = phi i32 [ %5, %if.end20 ], [ %or24, %if.then23 ] |
| 211 | %and26 = and i32 %6, 64 |
| 212 | %tobool27 = icmp eq i32 %and26, 0 |
| 213 | br i1 %tobool27, label %if.end30, label %if.then28 |
| 214 | |
| 215 | if.then28: ; preds = %if.end25 |
| 216 | %or29 = or i32 %6, 33554432 |
| 217 | store i32 %or29, i32* %b, align 4 |
| 218 | br label %if.end30 |
| 219 | |
| 220 | if.end30: ; preds = %if.end25, %if.then28 |
| 221 | %7 = phi i32 [ %6, %if.end25 ], [ %or29, %if.then28 ] |
| 222 | %and31 = and i32 %7, 256 |
| 223 | %tobool32 = icmp eq i32 %and31, 0 |
| 224 | br i1 %tobool32, label %if.end35, label %if.then33 |
| 225 | |
| 226 | if.then33: ; preds = %if.end30 |
| 227 | %or34 = or i32 %7, 8388608 |
| 228 | store i32 %or34, i32* %b, align 4 |
| 229 | br label %if.end35 |
| 230 | |
| 231 | if.end35: ; preds = %if.end30, %if.then33 |
| 232 | %8 = phi i32 [ %7, %if.end30 ], [ %or34, %if.then33 ] |
| 233 | %and36 = and i32 %8, 512 |
| 234 | %tobool37 = icmp eq i32 %and36, 0 |
| 235 | br i1 %tobool37, label %if.end40, label %if.then38 |
| 236 | |
| 237 | if.then38: ; preds = %if.end35 |
| 238 | %or39 = or i32 %8, 4194304 |
| 239 | store i32 %or39, i32* %b, align 4 |
| 240 | br label %if.end40 |
| 241 | |
| 242 | if.end40: ; preds = %if.end35, %if.then38 |
| 243 | %9 = phi i32 [ %8, %if.end35 ], [ %or39, %if.then38 ] |
| 244 | %and41 = and i32 %9, 1024 |
| 245 | %tobool42 = icmp eq i32 %and41, 0 |
| 246 | br i1 %tobool42, label %if.end45, label %if.then43 |
| 247 | |
| 248 | if.then43: ; preds = %if.end40 |
| 249 | %or44 = or i32 %9, 2097152 |
| 250 | store i32 %or44, i32* %b, align 4 |
| 251 | br label %if.end45 |
| 252 | |
| 253 | if.end45: ; preds = %if.end40, %if.then43 |
| 254 | %10 = phi i32 [ %9, %if.end40 ], [ %or44, %if.then43 ] |
| 255 | %and46 = and i32 %10, 2048 |
| 256 | %tobool47 = icmp eq i32 %and46, 0 |
| 257 | br i1 %tobool47, label %if.end50, label %if.then48 |
| 258 | |
| 259 | if.then48: ; preds = %if.end45 |
| 260 | %or49 = or i32 %10, 1048576 |
| 261 | store i32 %or49, i32* %b, align 4 |
| 262 | br label %if.end50 |
| 263 | |
| 264 | if.end50: ; preds = %if.end45, %if.then48 |
| 265 | %11 = phi i32 [ %10, %if.end45 ], [ %or49, %if.then48 ] |
| 266 | %and51 = and i32 %11, 4096 |
| 267 | %tobool52 = icmp eq i32 %and51, 0 |
| 268 | br i1 %tobool52, label %if.end55, label %if.then53 |
| 269 | |
| 270 | if.then53: ; preds = %if.end50 |
| 271 | %or54 = or i32 %11, 524288 |
| 272 | store i32 %or54, i32* %b, align 4 |
| 273 | br label %if.end55 |
| 274 | |
| 275 | if.end55: ; preds = %if.end50, %if.then53 |
| 276 | %12 = phi i32 [ %11, %if.end50 ], [ %or54, %if.then53 ] |
| 277 | %and56 = and i32 %12, 8192 |
| 278 | %tobool57 = icmp eq i32 %and56, 0 |
| 279 | br i1 %tobool57, label %if.end60, label %if.then58 |
| 280 | |
| 281 | if.then58: ; preds = %if.end55 |
| 282 | %or59 = or i32 %12, 262144 |
| 283 | store i32 %or59, i32* %b, align 4 |
| 284 | br label %if.end60 |
| 285 | |
| 286 | if.end60: ; preds = %if.end55, %if.then58 |
| 287 | %13 = phi i32 [ %12, %if.end55 ], [ %or59, %if.then58 ] |
| 288 | %and61 = and i32 %13, 16384 |
| 289 | %tobool62 = icmp eq i32 %and61, 0 |
| 290 | br i1 %tobool62, label %if.end65, label %if.then63 |
| 291 | |
| 292 | if.then63: ; preds = %if.end60 |
| 293 | %or64 = or i32 %13, 131072 |
| 294 | store i32 %or64, i32* %b, align 4 |
| 295 | br label %if.end65 |
| 296 | |
| 297 | if.end65: ; preds = %if.end60, %if.then63 |
| 298 | %14 = phi i32 [ %13, %if.end60 ], [ %or64, %if.then63 ] |
| 299 | %and66 = and i32 %14, 32768 |
| 300 | %tobool67 = icmp eq i32 %and66, 0 |
| 301 | br i1 %tobool67, label %if.end70, label %if.then68 |
| 302 | |
| 303 | if.then68: ; preds = %if.end65 |
| 304 | %or69 = or i32 %14, 65536 |
| 305 | store i32 %or69, i32* %b, align 4 |
| 306 | br label %if.end70 |
| 307 | |
| 308 | if.end70: ; preds = %if.end65, %if.then68 |
| 309 | %15 = phi i32 [ %14, %if.end65 ], [ %or69, %if.then68 ] |
| 310 | %and71 = and i32 %15, 128 |
| 311 | %tobool72 = icmp eq i32 %and71, 0 |
| 312 | br i1 %tobool72, label %if.end75, label %if.then73 |
| 313 | |
| 314 | if.then73: ; preds = %if.end70 |
| 315 | %or74 = or i32 %15, 16777216 |
| 316 | store i32 %or74, i32* %b, align 4 |
| 317 | br label %if.end75 |
| 318 | |
| 319 | if.end75: ; preds = %if.end70, %if.then73 |
| 320 | ret i32 0 |
| 321 | } |