diff options
-rw-r--r-- | lib/Transforms/Utils/SimplifyCFG.cpp | 42 | ||||
-rw-r--r-- | test/Transforms/SimplifyCFG/switch_to_lookup_table.ll | 822 |
2 files changed, 842 insertions, 22 deletions
diff --git a/lib/Transforms/Utils/SimplifyCFG.cpp b/lib/Transforms/Utils/SimplifyCFG.cpp index 870e2b2ade..427ac4ed14 100644 --- a/lib/Transforms/Utils/SimplifyCFG.cpp +++ b/lib/Transforms/Utils/SimplifyCFG.cpp @@ -3583,32 +3583,30 @@ static bool SwitchToLookupTable(SwitchInst *SI, } bool SimplifyCFGOpt::SimplifySwitch(SwitchInst *SI, IRBuilder<> &Builder) { - // If this switch is too complex to want to look at, ignore it. - if (!isValueEqualityComparison(SI)) - return false; - BasicBlock *BB = SI->getParent(); - // If we only have one predecessor, and if it is a branch on this value, - // see if that predecessor totally determines the outcome of this switch. - if (BasicBlock *OnlyPred = BB->getSinglePredecessor()) - if (SimplifyEqualityComparisonWithOnlyPredecessor(SI, OnlyPred, Builder)) - return SimplifyCFG(BB) | true; + if (isValueEqualityComparison(SI)) { + // If we only have one predecessor, and if it is a branch on this value, + // see if that predecessor totally determines the outcome of this switch. + if (BasicBlock *OnlyPred = BB->getSinglePredecessor()) + if (SimplifyEqualityComparisonWithOnlyPredecessor(SI, OnlyPred, Builder)) + return SimplifyCFG(BB) | true; - Value *Cond = SI->getCondition(); - if (SelectInst *Select = dyn_cast<SelectInst>(Cond)) - if (SimplifySwitchOnSelect(SI, Select)) - return SimplifyCFG(BB) | true; + Value *Cond = SI->getCondition(); + if (SelectInst *Select = dyn_cast<SelectInst>(Cond)) + if (SimplifySwitchOnSelect(SI, Select)) + return SimplifyCFG(BB) | true; - // If the block only contains the switch, see if we can fold the block - // away into any preds. - BasicBlock::iterator BBI = BB->begin(); - // Ignore dbg intrinsics. - while (isa<DbgInfoIntrinsic>(BBI)) - ++BBI; - if (SI == &*BBI) - if (FoldValueComparisonIntoPredecessors(SI, Builder)) - return SimplifyCFG(BB) | true; + // If the block only contains the switch, see if we can fold the block + // away into any preds. + BasicBlock::iterator BBI = BB->begin(); + // Ignore dbg intrinsics. + while (isa<DbgInfoIntrinsic>(BBI)) + ++BBI; + if (SI == &*BBI) + if (FoldValueComparisonIntoPredecessors(SI, Builder)) + return SimplifyCFG(BB) | true; + } // Try to transform the switch into an icmp and a branch. if (TurnSwitchRangeIntoICmp(SI, Builder)) diff --git a/test/Transforms/SimplifyCFG/switch_to_lookup_table.ll b/test/Transforms/SimplifyCFG/switch_to_lookup_table.ll index aa48ec6481..80153355c4 100644 --- a/test/Transforms/SimplifyCFG/switch_to_lookup_table.ll +++ b/test/Transforms/SimplifyCFG/switch_to_lookup_table.ll @@ -15,6 +15,9 @@ target triple = "x86_64-unknown-linux-gnu" ; The table for @earlyreturncrash ; CHECK: @switch.table3 = private unnamed_addr constant [4 x i32] [i32 42, i32 9, i32 88, i32 5] +; The table for @large. +; CHECK: @switch.table4 = private unnamed_addr constant [199 x i32] [i32 1, i32 4, i32 9, + ; A simple int-to-int selection switch. ; It is dense enough to be replaced by table lookup. ; The result is directly by a ret from an otherwise empty bb, @@ -293,3 +296,822 @@ bb3: ; preds = %bb2, %bb1, %bb ; CHECK: %switch.cast = trunc i32 %switch.tableidx to i9 ; CHECK: %switch.downshift = lshr i9 3, %switch.shiftamt } + +; Also handle large switches that would be rejected by +; isValueEqualityComparison() +; CHECK: large +; CHECK-NOT: switch i32 +define i32 @large(i32 %x) nounwind uwtable readnone ssp { +entry: + %cmp = icmp slt i32 %x, 0 + br i1 %cmp, label %if.then, label %if.end + +if.then: ; preds = %entry + %mul = mul i32 %x, -10 + br label %if.end + +if.end: ; preds = %if.then, %entry + %x.addr.0 = phi i32 [ %mul, %if.then ], [ %x, %entry ] + switch i32 %x.addr.0, label %return [ + i32 199, label %sw.bb203 + i32 1, label %sw.bb1 + i32 2, label %sw.bb2 + i32 3, label %sw.bb3 + i32 4, label %sw.bb4 + i32 5, label %sw.bb5 + i32 6, label %sw.bb6 + i32 7, label %sw.bb7 + i32 8, label %sw.bb8 + i32 9, label %sw.bb9 + i32 10, label %sw.bb10 + i32 11, label %sw.bb11 + i32 12, label %sw.bb12 + i32 13, label %sw.bb13 + i32 14, label %sw.bb14 + i32 15, label %sw.bb15 + i32 16, label %sw.bb16 + i32 17, label %sw.bb17 + i32 18, label %sw.bb18 + i32 19, label %sw.bb19 + i32 20, label %sw.bb20 + i32 21, label %sw.bb21 + i32 22, label %sw.bb22 + i32 23, label %sw.bb23 + i32 24, label %sw.bb24 + i32 25, label %sw.bb25 + i32 26, label %sw.bb26 + i32 27, label %sw.bb27 + i32 28, label %sw.bb28 + i32 29, label %sw.bb29 + i32 30, label %sw.bb30 + i32 31, label %sw.bb31 + i32 32, label %sw.bb32 + i32 33, label %sw.bb33 + i32 34, label %sw.bb34 + i32 35, label %sw.bb35 + i32 36, label %sw.bb37 + i32 37, label %sw.bb38 + i32 38, label %sw.bb39 + i32 39, label %sw.bb40 + i32 40, label %sw.bb41 + i32 41, label %sw.bb42 + i32 42, label %sw.bb43 + i32 43, label %sw.bb44 + i32 44, label %sw.bb45 + i32 45, label %sw.bb47 + i32 46, label %sw.bb48 + i32 47, label %sw.bb49 + i32 48, label %sw.bb50 + i32 49, label %sw.bb51 + i32 50, label %sw.bb52 + i32 51, label %sw.bb53 + i32 52, label %sw.bb54 + i32 53, label %sw.bb55 + i32 54, label %sw.bb56 + i32 55, label %sw.bb58 + i32 56, label %sw.bb59 + i32 57, label %sw.bb60 + i32 58, label %sw.bb61 + i32 59, label %sw.bb62 + i32 60, label %sw.bb63 + i32 61, label %sw.bb64 + i32 62, label %sw.bb65 + i32 63, label %sw.bb66 + i32 64, label %sw.bb67 + i32 65, label %sw.bb68 + i32 66, label %sw.bb69 + i32 67, label %sw.bb70 + i32 68, label %sw.bb71 + i32 69, label %sw.bb72 + i32 70, label %sw.bb73 + i32 71, label %sw.bb74 + i32 72, label %sw.bb76 + i32 73, label %sw.bb77 + i32 74, label %sw.bb78 + i32 75, label %sw.bb79 + i32 76, label %sw.bb80 + i32 77, label %sw.bb81 + i32 78, label %sw.bb82 + i32 79, label %sw.bb83 + i32 80, label %sw.bb84 + i32 81, label %sw.bb85 + i32 82, label %sw.bb86 + i32 83, label %sw.bb87 + i32 84, label %sw.bb88 + i32 85, label %sw.bb89 + i32 86, label %sw.bb90 + i32 87, label %sw.bb91 + i32 88, label %sw.bb92 + i32 89, label %sw.bb93 + i32 90, label %sw.bb94 + i32 91, label %sw.bb95 + i32 92, label %sw.bb96 + i32 93, label %sw.bb97 + i32 94, label %sw.bb98 + i32 95, label %sw.bb99 + i32 96, label %sw.bb100 + i32 97, label %sw.bb101 + i32 98, label %sw.bb102 + i32 99, label %sw.bb103 + i32 100, label %sw.bb104 + i32 101, label %sw.bb105 + i32 102, label %sw.bb106 + i32 103, label %sw.bb107 + i32 104, label %sw.bb108 + i32 105, label %sw.bb109 + i32 106, label %sw.bb110 + i32 107, label %sw.bb111 + i32 108, label %sw.bb112 + i32 109, label %sw.bb113 + i32 110, label %sw.bb114 + i32 111, label %sw.bb115 + i32 112, label %sw.bb116 + i32 113, label %sw.bb117 + i32 114, label %sw.bb118 + i32 115, label %sw.bb119 + i32 116, label %sw.bb120 + i32 117, label %sw.bb121 + i32 118, label %sw.bb122 + i32 119, label %sw.bb123 + i32 120, label %sw.bb124 + i32 121, label %sw.bb125 + i32 122, label %sw.bb126 + i32 123, label %sw.bb127 + i32 124, label %sw.bb128 + i32 125, label %sw.bb129 + i32 126, label %sw.bb130 + i32 127, label %sw.bb131 + i32 128, label %sw.bb132 + i32 129, label %sw.bb133 + i32 130, label %sw.bb134 + i32 131, label %sw.bb135 + i32 132, label %sw.bb136 + i32 133, label %sw.bb137 + i32 134, label %sw.bb138 + i32 135, label %sw.bb139 + i32 136, label %sw.bb140 + i32 137, label %sw.bb141 + i32 138, label %sw.bb142 + i32 139, label %sw.bb143 + i32 140, label %sw.bb144 + i32 141, label %sw.bb145 + i32 142, label %sw.bb146 + i32 143, label %sw.bb147 + i32 144, label %sw.bb148 + i32 145, label %sw.bb149 + i32 146, label %sw.bb150 + i32 147, label %sw.bb151 + i32 148, label %sw.bb152 + i32 149, label %sw.bb153 + i32 150, label %sw.bb154 + i32 151, label %sw.bb155 + i32 152, label %sw.bb156 + i32 153, label %sw.bb157 + i32 154, label %sw.bb158 + i32 155, label %sw.bb159 + i32 156, label %sw.bb160 + i32 157, label %sw.bb161 + i32 158, label %sw.bb162 + i32 159, label %sw.bb163 + i32 160, label %sw.bb164 + i32 161, label %sw.bb165 + i32 162, label %sw.bb166 + i32 163, label %sw.bb167 + i32 164, label %sw.bb168 + i32 165, label %sw.bb169 + i32 166, label %sw.bb170 + i32 167, label %sw.bb171 + i32 168, label %sw.bb172 + i32 169, label %sw.bb173 + i32 170, label %sw.bb174 + i32 171, label %sw.bb175 + i32 172, label %sw.bb176 + i32 173, label %sw.bb177 + i32 174, label %sw.bb178 + i32 175, label %sw.bb179 + i32 176, label %sw.bb180 + i32 177, label %sw.bb181 + i32 178, label %sw.bb182 + i32 179, label %sw.bb183 + i32 180, label %sw.bb184 + i32 181, label %sw.bb185 + i32 182, label %sw.bb186 + i32 183, label %sw.bb187 + i32 184, label %sw.bb188 + i32 185, label %sw.bb189 + i32 186, label %sw.bb190 + i32 187, label %sw.bb191 + i32 188, label %sw.bb192 + i32 189, label %sw.bb193 + i32 190, label %sw.bb194 + i32 191, label %sw.bb195 + i32 192, label %sw.bb196 + i32 193, label %sw.bb197 + i32 194, label %sw.bb198 + i32 195, label %sw.bb199 + i32 196, label %sw.bb200 + i32 197, label %sw.bb201 + i32 198, label %sw.bb202 + ] + +sw.bb1: ; preds = %if.end + br label %return + +sw.bb2: ; preds = %if.end + br label %return + +sw.bb3: ; preds = %if.end + br label %return + +sw.bb4: ; preds = %if.end + br label %return + +sw.bb5: ; preds = %if.end + br label %return + +sw.bb6: ; preds = %if.end + br label %return + +sw.bb7: ; preds = %if.end + br label %return + +sw.bb8: ; preds = %if.end + br label %return + +sw.bb9: ; preds = %if.end + br label %return + +sw.bb10: ; preds = %if.end + br label %return + +sw.bb11: ; preds = %if.end + br label %return + +sw.bb12: ; preds = %if.end + br label %return + +sw.bb13: ; preds = %if.end + br label %return + +sw.bb14: ; preds = %if.end + br label %return + +sw.bb15: ; preds = %if.end + br label %return + +sw.bb16: ; preds = %if.end + br label %return + +sw.bb17: ; preds = %if.end + br label %return + +sw.bb18: ; preds = %if.end + br label %return + +sw.bb19: ; preds = %if.end + br label %return + +sw.bb20: ; preds = %if.end + br label %return + +sw.bb21: ; preds = %if.end + br label %return + +sw.bb22: ; preds = %if.end + br label %return + +sw.bb23: ; preds = %if.end + br label %return + +sw.bb24: ; preds = %if.end + br label %return + +sw.bb25: ; preds = %if.end + br label %return + +sw.bb26: ; preds = %if.end + br label %return + +sw.bb27: ; preds = %if.end + br label %return + +sw.bb28: ; preds = %if.end + br label %return + +sw.bb29: ; preds = %if.end + br label %return + +sw.bb30: ; preds = %if.end + br label %return + +sw.bb31: ; preds = %if.end + br label %return + +sw.bb32: ; preds = %if.end + br label %return + +sw.bb33: ; preds = %if.end + br label %return + +sw.bb34: ; preds = %if.end + br label %return + +sw.bb35: ; preds = %if.end + br label %return + +sw.bb37: ; preds = %if.end + br label %return + +sw.bb38: ; preds = %if.end + br label %return + +sw.bb39: ; preds = %if.end + br label %return + +sw.bb40: ; preds = %if.end + br label %return + +sw.bb41: ; preds = %if.end + br label %return + +sw.bb42: ; preds = %if.end + br label %return + +sw.bb43: ; preds = %if.end + br label %return + +sw.bb44: ; preds = %if.end + br label %return + +sw.bb45: ; preds = %if.end + br label %return + +sw.bb47: ; preds = %if.end + br label %return + +sw.bb48: ; preds = %if.end + br label %return + +sw.bb49: ; preds = %if.end + br label %return + +sw.bb50: ; preds = %if.end + br label %return + +sw.bb51: ; preds = %if.end + br label %return + +sw.bb52: ; preds = %if.end + br label %return + +sw.bb53: ; preds = %if.end + br label %return + +sw.bb54: ; preds = %if.end + br label %return + +sw.bb55: ; preds = %if.end + br label %return + +sw.bb56: ; preds = %if.end + br label %return + +sw.bb58: ; preds = %if.end + br label %return + +sw.bb59: ; preds = %if.end + br label %return + +sw.bb60: ; preds = %if.end + br label %return + +sw.bb61: ; preds = %if.end + br label %return + +sw.bb62: ; preds = %if.end + br label %return + +sw.bb63: ; preds = %if.end + br label %return + +sw.bb64: ; preds = %if.end + br label %return + +sw.bb65: ; preds = %if.end + br label %return + +sw.bb66: ; preds = %if.end + br label %return + +sw.bb67: ; preds = %if.end + br label %return + +sw.bb68: ; preds = %if.end + br label %return + +sw.bb69: ; preds = %if.end + br label %return + +sw.bb70: ; preds = %if.end + br label %return + +sw.bb71: ; preds = %if.end + br label %return + +sw.bb72: ; preds = %if.end + br label %return + +sw.bb73: ; preds = %if.end + br label %return + +sw.bb74: ; preds = %if.end + br label %return + +sw.bb76: ; preds = %if.end + br label %return + +sw.bb77: ; preds = %if.end + br label %return + +sw.bb78: ; preds = %if.end + br label %return + +sw.bb79: ; preds = %if.end + br label %return + +sw.bb80: ; preds = %if.end + br label %return + +sw.bb81: ; preds = %if.end + br label %return + +sw.bb82: ; preds = %if.end + br label %return + +sw.bb83: ; preds = %if.end + br label %return + +sw.bb84: ; preds = %if.end + br label %return + +sw.bb85: ; preds = %if.end + br label %return + +sw.bb86: ; preds = %if.end + br label %return + +sw.bb87: ; preds = %if.end + br label %return + +sw.bb88: ; preds = %if.end + br label %return + +sw.bb89: ; preds = %if.end + br label %return + +sw.bb90: ; preds = %if.end + br label %return + +sw.bb91: ; preds = %if.end + br label %return + +sw.bb92: ; preds = %if.end + br label %return + +sw.bb93: ; preds = %if.end + br label %return + +sw.bb94: ; preds = %if.end + br label %return + +sw.bb95: ; preds = %if.end + br label %return + +sw.bb96: ; preds = %if.end + br label %return + +sw.bb97: ; preds = %if.end + br label %return + +sw.bb98: ; preds = %if.end + br label %return + +sw.bb99: ; preds = %if.end + br label %return + +sw.bb100: ; preds = %if.end + br label %return + +sw.bb101: ; preds = %if.end + br label %return + +sw.bb102: ; preds = %if.end + br label %return + +sw.bb103: ; preds = %if.end + br label %return + +sw.bb104: ; preds = %if.end + br label %return + +sw.bb105: ; preds = %if.end + br label %return + +sw.bb106: ; preds = %if.end + br label %return + +sw.bb107: ; preds = %if.end + br label %return + +sw.bb108: ; preds = %if.end + br label %return + +sw.bb109: ; preds = %if.end + br label %return + +sw.bb110: ; preds = %if.end + br label %return + +sw.bb111: ; preds = %if.end + br label %return + +sw.bb112: ; preds = %if.end + br label %return + +sw.bb113: ; preds = %if.end + br label %return + +sw.bb114: ; preds = %if.end + br label %return + +sw.bb115: ; preds = %if.end + br label %return + +sw.bb116: ; preds = %if.end + br label %return + +sw.bb117: ; preds = %if.end + br label %return + +sw.bb118: ; preds = %if.end + br label %return + +sw.bb119: ; preds = %if.end + br label %return + +sw.bb120: ; preds = %if.end + br label %return + +sw.bb121: ; preds = %if.end + br label %return + +sw.bb122: ; preds = %if.end + br label %return + +sw.bb123: ; preds = %if.end + br label %return + +sw.bb124: ; preds = %if.end + br label %return + +sw.bb125: ; preds = %if.end + br label %return + +sw.bb126: ; preds = %if.end + br label %return + +sw.bb127: ; preds = %if.end + br label %return + +sw.bb128: ; preds = %if.end + br label %return + +sw.bb129: ; preds = %if.end + br label %return + +sw.bb130: ; preds = %if.end + br label %return + +sw.bb131: ; preds = %if.end + br label %return + +sw.bb132: ; preds = %if.end + br label %return + +sw.bb133: ; preds = %if.end + br label %return + +sw.bb134: ; preds = %if.end + br label %return + +sw.bb135: ; preds = %if.end + br label %return + +sw.bb136: ; preds = %if.end + br label %return + +sw.bb137: ; preds = %if.end + br label %return + +sw.bb138: ; preds = %if.end + br label %return + +sw.bb139: ; preds = %if.end + br label %return + +sw.bb140: ; preds = %if.end + br label %return + +sw.bb141: ; preds = %if.end + br label %return + +sw.bb142: ; preds = %if.end + br label %return + +sw.bb143: ; preds = %if.end + br label %return + +sw.bb144: ; preds = %if.end + br label %return + +sw.bb145: ; preds = %if.end + br label %return + +sw.bb146: ; preds = %if.end + br label %return + +sw.bb147: ; preds = %if.end + br label %return + +sw.bb148: ; preds = %if.end + br label %return + +sw.bb149: ; preds = %if.end + br label %return + +sw.bb150: ; preds = %if.end + br label %return + +sw.bb151: ; preds = %if.end + br label %return + +sw.bb152: ; preds = %if.end + br label %return + +sw.bb153: ; preds = %if.end + br label %return + +sw.bb154: ; preds = %if.end + br label %return + +sw.bb155: ; preds = %if.end + br label %return + +sw.bb156: ; preds = %if.end + br label %return + +sw.bb157: ; preds = %if.end + br label %return + +sw.bb158: ; preds = %if.end + br label %return + +sw.bb159: ; preds = %if.end + br label %return + +sw.bb160: ; preds = %if.end + br label %return + +sw.bb161: ; preds = %if.end + br label %return + +sw.bb162: ; preds = %if.end + br label %return + +sw.bb163: ; preds = %if.end + br label %return + +sw.bb164: ; preds = %if.end + br label %return + +sw.bb165: ; preds = %if.end + br label %return + +sw.bb166: ; preds = %if.end + br label %return + +sw.bb167: ; preds = %if.end + br label %return + +sw.bb168: ; preds = %if.end + br label %return + +sw.bb169: ; preds = %if.end + br label %return + +sw.bb170: ; preds = %if.end + br label %return + +sw.bb171: ; preds = %if.end + br label %return + +sw.bb172: ; preds = %if.end + br label %return + +sw.bb173: ; preds = %if.end + br label %return + +sw.bb174: ; preds = %if.end + br label %return + +sw.bb175: ; preds = %if.end + br label %return + +sw.bb176: ; preds = %if.end + br label %return + +sw.bb177: ; preds = %if.end + br label %return + +sw.bb178: ; preds = %if.end + br label %return + +sw.bb179: ; preds = %if.end + br label %return + +sw.bb180: ; preds = %if.end + br label %return + +sw.bb181: ; preds = %if.end + br label %return + +sw.bb182: ; preds = %if.end + br label %return + +sw.bb183: ; preds = %if.end + br label %return + +sw.bb184: ; preds = %if.end + br label %return + +sw.bb185: ; preds = %if.end + br label %return + +sw.bb186: ; preds = %if.end + br label %return + +sw.bb187: ; preds = %if.end + br label %return + +sw.bb188: ; preds = %if.end + br label %return + +sw.bb189: ; preds = %if.end + br label %return + +sw.bb190: ; preds = %if.end + br label %return + +sw.bb191: ; preds = %if.end + br label %return + +sw.bb192: ; preds = %if.end + br label %return + +sw.bb193: ; preds = %if.end + br label %return + +sw.bb194: ; preds = %if.end + br label %return + +sw.bb195: ; preds = %if.end + br label %return + +sw.bb196: ; preds = %if.end + br label %return + +sw.bb197: ; preds = %if.end + br label %return + +sw.bb198: ; preds = %if.end + br label %return + +sw.bb199: ; preds = %if.end + br label %return + +sw.bb200: ; preds = %if.end + br label %return + +sw.bb201: ; preds = %if.end + br label %return + +sw.bb202: ; preds = %if.end + br label %return + +sw.bb203: ; preds = %if.end + br label %return + +return: + %retval.0 = phi i32 [ 39204, %sw.bb202 ], [ 38809, %sw.bb201 ], [ 38416, %sw.bb200 ], [ 38025, %sw.bb199 ], [ 37636, %sw.bb198 ], [ 37249, %sw.bb197 ], [ 36864, %sw.bb196 ], [ 36481, %sw.bb195 ], [ 36100, %sw.bb194 ], [ 35721, %sw.bb193 ], [ 35344, %sw.bb192 ], [ 34969, %sw.bb191 ], [ 34596, %sw.bb190 ], [ 34225, %sw.bb189 ], [ 33856, %sw.bb188 ], [ 33489, %sw.bb187 ], [ 33124, %sw.bb186 ], [ 32761, %sw.bb185 ], [ 32400, %sw.bb184 ], [ 32041, %sw.bb183 ], [ 31684, %sw.bb182 ], [ 31329, %sw.bb181 ], [ 30976, %sw.bb180 ], [ 30625, %sw.bb179 ], [ 30276, %sw.bb178 ], [ 29929, %sw.bb177 ], [ 29584, %sw.bb176 ], [ 29241, %sw.bb175 ], [ 28900, %sw.bb174 ], [ 28561, %sw.bb173 ], [ 28224, %sw.bb172 ], [ 27889, %sw.bb171 ], [ 27556, %sw.bb170 ], [ 27225, %sw.bb169 ], [ 26896, %sw.bb168 ], [ 26569, %sw.bb167 ], [ 26244, %sw.bb166 ], [ 25921, %sw.bb165 ], [ 25600, %sw.bb164 ], [ 25281, %sw.bb163 ], [ 24964, %sw.bb162 ], [ 24649, %sw.bb161 ], [ 24336, %sw.bb160 ], [ 24025, %sw.bb159 ], [ 23716, %sw.bb158 ], [ 23409, %sw.bb157 ], [ 23104, %sw.bb156 ], [ 22801, %sw.bb155 ], [ 22500, %sw.bb154 ], [ 22201, %sw.bb153 ], [ 21904, %sw.bb152 ], [ 21609, %sw.bb151 ], [ 21316, %sw.bb150 ], [ 21025, %sw.bb149 ], [ 20736, %sw.bb148 ], [ 20449, %sw.bb147 ], [ 20164, %sw.bb146 ], [ 19881, %sw.bb145 ], [ 19600, %sw.bb144 ], [ 19321, %sw.bb143 ], [ 19044, %sw.bb142 ], [ 18769, %sw.bb141 ], [ 18496, %sw.bb140 ], [ 18225, %sw.bb139 ], [ 17956, %sw.bb138 ], [ 17689, %sw.bb137 ], [ 17424, %sw.bb136 ], [ 17161, %sw.bb135 ], [ 16900, %sw.bb134 ], [ 16641, %sw.bb133 ], [ 16384, %sw.bb132 ], [ 16129, %sw.bb131 ], [ 15876, %sw.bb130 ], [ 15625, %sw.bb129 ], [ 15376, %sw.bb128 ], [ 15129, %sw.bb127 ], [ 14884, %sw.bb126 ], [ 14641, %sw.bb125 ], [ 14400, %sw.bb124 ], [ 14161, %sw.bb123 ], [ 13924, %sw.bb122 ], [ 13689, %sw.bb121 ], [ 13456, %sw.bb120 ], [ 13225, %sw.bb119 ], [ 12996, %sw.bb118 ], [ 12769, %sw.bb117 ], [ 12544, %sw.bb116 ], [ 12321, %sw.bb115 ], [ 12100, %sw.bb114 ], [ 11881, %sw.bb113 ], [ 11664, %sw.bb112 ], [ 11449, %sw.bb111 ], [ 11236, %sw.bb110 ], [ 11025, %sw.bb109 ], [ 10816, %sw.bb108 ], [ 10609, %sw.bb107 ], [ 10404, %sw.bb106 ], [ 10201, %sw.bb105 ], [ 10000, %sw.bb104 ], [ 9801, %sw.bb103 ], [ 9604, %sw.bb102 ], [ 9409, %sw.bb101 ], [ 9216, %sw.bb100 ], [ 9025, %sw.bb99 ], [ 8836, %sw.bb98 ], [ 8649, %sw.bb97 ], [ 8464, %sw.bb96 ], [ 8281, %sw.bb95 ], [ 8100, %sw.bb94 ], [ 7921, %sw.bb93 ], [ 7744, %sw.bb92 ], [ 7569, %sw.bb91 ], [ 7396, %sw.bb90 ], [ 7225, %sw.bb89 ], [ 7056, %sw.bb88 ], [ 6889, %sw.bb87 ], [ 6724, %sw.bb86 ], [ 6561, %sw.bb85 ], [ 6400, %sw.bb84 ], [ 6241, %sw.bb83 ], [ 6084, %sw.bb82 ], [ 5929, %sw.bb81 ], [ 5776, %sw.bb80 ], [ 5625, %sw.bb79 ], [ 5476, %sw.bb78 ], [ 5329, %sw.bb77 ], [ 5184, %sw.bb76 ], [ 5112, %sw.bb74 ], [ 4900, %sw.bb73 ], [ 4761, %sw.bb72 ], [ 4624, %sw.bb71 ], [ 4489, %sw.bb70 ], [ 4356, %sw.bb69 ], [ 4225, %sw.bb68 ], [ 4096, %sw.bb67 ], [ 3969, %sw.bb66 ], [ 3844, %sw.bb65 ], [ 3721, %sw.bb64 ], [ 3600, %sw.bb63 ], [ 3481, %sw.bb62 ], [ 3364, %sw.bb61 ], [ 3249, %sw.bb60 ], [ 3136, %sw.bb59 ], [ 3025, %sw.bb58 ], [ 2970, %sw.bb56 ], [ 2809, %sw.bb55 ], [ 2704, %sw.bb54 ], [ 2601, %sw.bb53 ], [ 2500, %sw.bb52 ], [ 2401, %sw.bb51 ], [ 2304, %sw.bb50 ], [ 2209, %sw.bb49 ], [ 2116, %sw.bb48 ], [ 2025, %sw.bb47 ], [ 1980, %sw.bb45 ], [ 1849, %sw.bb44 ], [ 1764, %sw.bb43 ], [ 1681, %sw.bb42 ], [ 1600, %sw.bb41 ], [ 1521, %sw.bb40 ], [ 1444, %sw.bb39 ], [ 1369, %sw.bb38 ], [ 1296, %sw.bb37 ], [ 1260, %sw.bb35 ], [ 1156, %sw.bb34 ], [ 1089, %sw.bb33 ], [ 1024, %sw.bb32 ], [ 961, %sw.bb31 ], [ 900, %sw.bb30 ], [ 841, %sw.bb29 ], [ 784, %sw.bb28 ], [ 729, %sw.bb27 ], [ 676, %sw.bb26 ], [ 625, %sw.bb25 ], [ 576, %sw.bb24 ], [ 529, %sw.bb23 ], [ 484, %sw.bb22 ], [ 441, %sw.bb21 ], [ 400, %sw.bb20 ], [ 361, %sw.bb19 ], [ 342, %sw.bb18 ], [ 289, %sw.bb17 ], [ 256, %sw.bb16 ], [ 225, %sw.bb15 ], [ 196, %sw.bb14 ], [ 169, %sw.bb13 ], [ 144, %sw.bb12 ], [ 121, %sw.bb11 ], [ 100, %sw.bb10 ], [ 81, %sw.bb9 ], [ 64, %sw.bb8 ], [ 49, %sw.bb7 ], [ 36, %sw.bb6 ], [ 25, %sw.bb5 ], [ 16, %sw.bb4 ], [ 9, %sw.bb3 ], [ 4, %sw.bb2 ], [ 1, %sw.bb1 ], [ 39601, %sw.bb203 ], [ 0, %if.end ] + ret i32 %retval.0 +} |