brintos

brintos / llvm-project-archived public Read only

0
0
Text · 18.6 KiB · 3488fac Raw
405 lines · plain
1; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr72 3target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"4target triple = "powerpc64-unknown-linux-gnu"5 6; This test case triggers several functions related to cr spilling, both in7; frame lowering and to handle cr register pressure. When the register kill8; flags were not being set correctly, this would cause the register scavenger to9; assert.10 11@SetupFastFullPelSearch.orig_pels = external unnamed_addr global [768 x i16], align 212@weight_luma = external global i3213@offset_luma = external global i3214@wp_luma_round = external global i32, align 415@luma_log_weight_denom = external global i32, align 416 17define void @SetupFastFullPelSearch() #0 {18entry:19  %mul10 = mul nsw i32 undef, undef20  br i1 undef, label %land.end, label %land.lhs.true21 22land.lhs.true:                                    ; preds = %entry23  switch i32 0, label %land.end [24    i32 0, label %land.rhs25    i32 3, label %land.rhs26  ]27 28land.rhs:                                         ; preds = %land.lhs.true, %land.lhs.true29  %tobool21 = icmp ne i32 undef, 030  br label %land.end31 32land.end:                                         ; preds = %land.rhs, %land.lhs.true, %entry33  %0 = phi i1 [ %tobool21, %land.rhs ], [ false, %land.lhs.true ], [ false, %entry ]34  %cond = load ptr, ptr undef, align 835  br i1 undef, label %if.then95, label %for.body.lr.ph36 37if.then95:                                        ; preds = %land.end38  %cmp.i4.i1427 = icmp slt i32 undef, undef39  br label %for.body.lr.ph40 41for.body.lr.ph:                                   ; preds = %if.then95, %land.end42  br label %for.body43 44for.body:                                         ; preds = %for.body, %for.body.lr.ph45  br i1 undef, label %for.body, label %for.body25246 47for.body252:                                      ; preds = %for.inc997, %for.body48  %shl263 = add i32 undef, 8049  br i1 %0, label %for.cond286.preheader, label %for.cond713.preheader50 51for.cond286.preheader:                            ; preds = %for.body25252  br label %for.cond290.preheader53 54for.cond290.preheader:                            ; preds = %for.end520, %for.cond286.preheader55  %srcptr.31595 = phi ptr [ @SetupFastFullPelSearch.orig_pels, %for.cond286.preheader ], [ null, %for.end520 ]56  %1 = load i32, ptr undef, align 457  %2 = load i32, ptr @weight_luma, align 458  %3 = load i32, ptr @wp_luma_round, align 459  %4 = load i32, ptr @luma_log_weight_denom, align 460  %5 = load i32, ptr @offset_luma, align 461  %incdec.ptr502.sum = add i64 undef, 1662  br label %for.body29363 64for.body293:                                      ; preds = %for.body293, %for.cond290.preheader65  %srcptr.41591 = phi ptr [ %srcptr.31595, %for.cond290.preheader ], [ undef, %for.body293 ]66  %refptr.11590 = phi ptr [ undef, %for.cond290.preheader ], [ %add.ptr517, %for.body293 ]67  %LineSadBlk0.01588 = phi i32 [ 0, %for.cond290.preheader ], [ %add346, %for.body293 ]68  %LineSadBlk1.01587 = phi i32 [ 0, %for.cond290.preheader ], [ %add402, %for.body293 ]69  %LineSadBlk3.01586 = phi i32 [ 0, %for.cond290.preheader ], [ %add514, %for.body293 ]70  %LineSadBlk2.01585 = phi i32 [ 0, %for.cond290.preheader ], [ %add458, %for.body293 ]71  %6 = load i16, ptr %refptr.11590, align 272  %conv294 = zext i16 %6 to i3273  %mul295 = mul nsw i32 %conv294, %274  %add296 = add nsw i32 %mul295, %375  %shr = ashr i32 %add296, %476  %add297 = add nsw i32 %shr, %577  %cmp.i.i1513 = icmp sgt i32 %add297, 078  %cond.i.i1514 = select i1 %cmp.i.i1513, i32 %add297, i32 079  %cmp.i4.i1515 = icmp slt i32 %cond.i.i1514, %180  %cond.i5.i1516 = select i1 %cmp.i4.i1515, i32 %cond.i.i1514, i32 %181  %7 = load i16, ptr %srcptr.41591, align 282  %conv300 = zext i16 %7 to i3283  %sub301 = sub nsw i32 %cond.i5.i1516, %conv30084  %idxprom302 = sext i32 %sub301 to i6485  %arrayidx303 = getelementptr inbounds i32, ptr %cond, i64 %idxprom30286  %8 = load i32, ptr %arrayidx303, align 487  %add304 = add nsw i32 %8, %LineSadBlk0.0158888  %9 = load i32, ptr undef, align 489  %add318 = add nsw i32 %add304, %990  %10 = load i16, ptr undef, align 291  %conv321 = zext i16 %10 to i3292  %mul322 = mul nsw i32 %conv321, %293  %add323 = add nsw i32 %mul322, %394  %shr324 = ashr i32 %add323, %495  %add325 = add nsw i32 %shr324, %596  %cmp.i.i1505 = icmp sgt i32 %add325, 097  %cond.i.i1506 = select i1 %cmp.i.i1505, i32 %add325, i32 098  %cmp.i4.i1507 = icmp slt i32 %cond.i.i1506, %199  %cond.i5.i1508 = select i1 %cmp.i4.i1507, i32 %cond.i.i1506, i32 %1100  %sub329 = sub nsw i32 %cond.i5.i1508, 0101  %idxprom330 = sext i32 %sub329 to i64102  %arrayidx331 = getelementptr inbounds i32, ptr %cond, i64 %idxprom330103  %11 = load i32, ptr %arrayidx331, align 4104  %add332 = add nsw i32 %add318, %11105  %cmp.i.i1501 = icmp sgt i32 undef, 0106  %cond.i.i1502 = select i1 %cmp.i.i1501, i32 undef, i32 0107  %cmp.i4.i1503 = icmp slt i32 %cond.i.i1502, %1108  %cond.i5.i1504 = select i1 %cmp.i4.i1503, i32 %cond.i.i1502, i32 %1109  %incdec.ptr341 = getelementptr inbounds i16, ptr %srcptr.41591, i64 4110  %12 = load i16, ptr null, align 2111  %conv342 = zext i16 %12 to i32112  %sub343 = sub nsw i32 %cond.i5.i1504, %conv342113  %idxprom344 = sext i32 %sub343 to i64114  %arrayidx345 = getelementptr inbounds i32, ptr %cond, i64 %idxprom344115  %13 = load i32, ptr %arrayidx345, align 4116  %add346 = add nsw i32 %add332, %13117  %incdec.ptr348 = getelementptr inbounds i16, ptr %refptr.11590, i64 5118  %14 = load i16, ptr null, align 2119  %conv349 = zext i16 %14 to i32120  %mul350 = mul nsw i32 %conv349, %2121  %add351 = add nsw i32 %mul350, %3122  %shr352 = ashr i32 %add351, %4123  %add353 = add nsw i32 %shr352, %5124  %cmp.i.i1497 = icmp sgt i32 %add353, 0125  %cond.i.i1498 = select i1 %cmp.i.i1497, i32 %add353, i32 0126  %cmp.i4.i1499 = icmp slt i32 %cond.i.i1498, %1127  %cond.i5.i1500 = select i1 %cmp.i4.i1499, i32 %cond.i.i1498, i32 %1128  %incdec.ptr355 = getelementptr inbounds i16, ptr %srcptr.41591, i64 5129  %15 = load i16, ptr %incdec.ptr341, align 2130  %conv356 = zext i16 %15 to i32131  %sub357 = sub nsw i32 %cond.i5.i1500, %conv356132  %idxprom358 = sext i32 %sub357 to i64133  %arrayidx359 = getelementptr inbounds i32, ptr %cond, i64 %idxprom358134  %16 = load i32, ptr %arrayidx359, align 4135  %add360 = add nsw i32 %16, %LineSadBlk1.01587136  %incdec.ptr362 = getelementptr inbounds i16, ptr %refptr.11590, i64 6137  %17 = load i16, ptr %incdec.ptr348, align 2138  %conv363 = zext i16 %17 to i32139  %mul364 = mul nsw i32 %conv363, %2140  %add365 = add nsw i32 %mul364, %3141  %shr366 = ashr i32 %add365, %4142  %add367 = add nsw i32 %shr366, %5143  %cmp.i.i1493 = icmp sgt i32 %add367, 0144  %cond.i.i1494 = select i1 %cmp.i.i1493, i32 %add367, i32 0145  %cmp.i4.i1495 = icmp slt i32 %cond.i.i1494, %1146  %cond.i5.i1496 = select i1 %cmp.i4.i1495, i32 %cond.i.i1494, i32 %1147  %incdec.ptr369 = getelementptr inbounds i16, ptr %srcptr.41591, i64 6148  %18 = load i16, ptr %incdec.ptr355, align 2149  %conv370 = zext i16 %18 to i32150  %sub371 = sub nsw i32 %cond.i5.i1496, %conv370151  %idxprom372 = sext i32 %sub371 to i64152  %arrayidx373 = getelementptr inbounds i32, ptr %cond, i64 %idxprom372153  %19 = load i32, ptr %arrayidx373, align 4154  %add374 = add nsw i32 %add360, %19155  %incdec.ptr376 = getelementptr inbounds i16, ptr %refptr.11590, i64 7156  %20 = load i16, ptr %incdec.ptr362, align 2157  %conv377 = zext i16 %20 to i32158  %mul378 = mul nsw i32 %conv377, %2159  %add379 = add nsw i32 %mul378, %3160  %shr380 = ashr i32 %add379, %4161  %add381 = add nsw i32 %shr380, %5162  %cmp.i.i1489 = icmp sgt i32 %add381, 0163  %cond.i.i1490 = select i1 %cmp.i.i1489, i32 %add381, i32 0164  %cmp.i4.i1491 = icmp slt i32 %cond.i.i1490, %1165  %cond.i5.i1492 = select i1 %cmp.i4.i1491, i32 %cond.i.i1490, i32 %1166  %incdec.ptr383 = getelementptr inbounds i16, ptr %srcptr.41591, i64 7167  %21 = load i16, ptr %incdec.ptr369, align 2168  %conv384 = zext i16 %21 to i32169  %sub385 = sub nsw i32 %cond.i5.i1492, %conv384170  %idxprom386 = sext i32 %sub385 to i64171  %arrayidx387 = getelementptr inbounds i32, ptr %cond, i64 %idxprom386172  %22 = load i32, ptr %arrayidx387, align 4173  %add388 = add nsw i32 %add374, %22174  %23 = load i16, ptr %incdec.ptr376, align 2175  %conv391 = zext i16 %23 to i32176  %mul392 = mul nsw i32 %conv391, %2177  %add395 = add nsw i32 0, %5178  %cmp.i.i1485 = icmp sgt i32 %add395, 0179  %cond.i.i1486 = select i1 %cmp.i.i1485, i32 %add395, i32 0180  %cmp.i4.i1487 = icmp slt i32 %cond.i.i1486, %1181  %cond.i5.i1488 = select i1 %cmp.i4.i1487, i32 %cond.i.i1486, i32 %1182  %incdec.ptr397 = getelementptr inbounds i16, ptr %srcptr.41591, i64 8183  %24 = load i16, ptr %incdec.ptr383, align 2184  %conv398 = zext i16 %24 to i32185  %sub399 = sub nsw i32 %cond.i5.i1488, %conv398186  %idxprom400 = sext i32 %sub399 to i64187  %arrayidx401 = getelementptr inbounds i32, ptr %cond, i64 %idxprom400188  %25 = load i32, ptr %arrayidx401, align 4189  %add402 = add nsw i32 %add388, %25190  %incdec.ptr404 = getelementptr inbounds i16, ptr %refptr.11590, i64 9191  %cmp.i4.i1483 = icmp slt i32 undef, %1192  %cond.i5.i1484 = select i1 %cmp.i4.i1483, i32 undef, i32 %1193  %26 = load i16, ptr %incdec.ptr397, align 2194  %conv412 = zext i16 %26 to i32195  %sub413 = sub nsw i32 %cond.i5.i1484, %conv412196  %idxprom414 = sext i32 %sub413 to i64197  %arrayidx415 = getelementptr inbounds i32, ptr %cond, i64 %idxprom414198  %27 = load i32, ptr %arrayidx415, align 4199  %add416 = add nsw i32 %27, %LineSadBlk2.01585200  %incdec.ptr418 = getelementptr inbounds i16, ptr %refptr.11590, i64 10201  %28 = load i16, ptr %incdec.ptr404, align 2202  %conv419 = zext i16 %28 to i32203  %mul420 = mul nsw i32 %conv419, %2204  %add421 = add nsw i32 %mul420, %3205  %shr422 = ashr i32 %add421, %4206  %add423 = add nsw i32 %shr422, %5207  %cmp.i.i1477 = icmp sgt i32 %add423, 0208  %cond.i.i1478 = select i1 %cmp.i.i1477, i32 %add423, i32 0209  %cmp.i4.i1479 = icmp slt i32 %cond.i.i1478, %1210  %cond.i5.i1480 = select i1 %cmp.i4.i1479, i32 %cond.i.i1478, i32 %1211  %incdec.ptr425 = getelementptr inbounds i16, ptr %srcptr.41591, i64 10212  %sub427 = sub nsw i32 %cond.i5.i1480, 0213  %idxprom428 = sext i32 %sub427 to i64214  %arrayidx429 = getelementptr inbounds i32, ptr %cond, i64 %idxprom428215  %29 = load i32, ptr %arrayidx429, align 4216  %add430 = add nsw i32 %add416, %29217  %incdec.ptr432 = getelementptr inbounds i16, ptr %refptr.11590, i64 11218  %30 = load i16, ptr %incdec.ptr418, align 2219  %conv433 = zext i16 %30 to i32220  %mul434 = mul nsw i32 %conv433, %2221  %add435 = add nsw i32 %mul434, %3222  %shr436 = ashr i32 %add435, %4223  %add437 = add nsw i32 %shr436, %5224  %cmp.i.i1473 = icmp sgt i32 %add437, 0225  %cond.i.i1474 = select i1 %cmp.i.i1473, i32 %add437, i32 0226  %cmp.i4.i1475 = icmp slt i32 %cond.i.i1474, %1227  %cond.i5.i1476 = select i1 %cmp.i4.i1475, i32 %cond.i.i1474, i32 %1228  %31 = load i16, ptr %incdec.ptr425, align 2229  %conv440 = zext i16 %31 to i32230  %sub441 = sub nsw i32 %cond.i5.i1476, %conv440231  %idxprom442 = sext i32 %sub441 to i64232  %arrayidx443 = getelementptr inbounds i32, ptr %cond, i64 %idxprom442233  %32 = load i32, ptr %arrayidx443, align 4234  %add444 = add nsw i32 %add430, %32235  %incdec.ptr446 = getelementptr inbounds i16, ptr %refptr.11590, i64 12236  %33 = load i16, ptr %incdec.ptr432, align 2237  %conv447 = zext i16 %33 to i32238  %mul448 = mul nsw i32 %conv447, %2239  %add449 = add nsw i32 %mul448, %3240  %shr450 = ashr i32 %add449, %4241  %add451 = add nsw i32 %shr450, %5242  %cmp.i.i1469 = icmp sgt i32 %add451, 0243  %cond.i.i1470 = select i1 %cmp.i.i1469, i32 %add451, i32 0244  %cmp.i4.i1471 = icmp slt i32 %cond.i.i1470, %1245  %cond.i5.i1472 = select i1 %cmp.i4.i1471, i32 %cond.i.i1470, i32 %1246  %incdec.ptr453 = getelementptr inbounds i16, ptr %srcptr.41591, i64 12247  %34 = load i16, ptr undef, align 2248  %conv454 = zext i16 %34 to i32249  %sub455 = sub nsw i32 %cond.i5.i1472, %conv454250  %idxprom456 = sext i32 %sub455 to i64251  %arrayidx457 = getelementptr inbounds i32, ptr %cond, i64 %idxprom456252  %35 = load i32, ptr %arrayidx457, align 4253  %add458 = add nsw i32 %add444, %35254  %incdec.ptr460 = getelementptr inbounds i16, ptr %refptr.11590, i64 13255  %36 = load i16, ptr %incdec.ptr446, align 2256  %conv461 = zext i16 %36 to i32257  %mul462 = mul nsw i32 %conv461, %2258  %add463 = add nsw i32 %mul462, %3259  %shr464 = ashr i32 %add463, %4260  %add465 = add nsw i32 %shr464, %5261  %cmp.i.i1465 = icmp sgt i32 %add465, 0262  %cond.i.i1466 = select i1 %cmp.i.i1465, i32 %add465, i32 0263  %cmp.i4.i1467 = icmp slt i32 %cond.i.i1466, %1264  %cond.i5.i1468 = select i1 %cmp.i4.i1467, i32 %cond.i.i1466, i32 %1265  %incdec.ptr467 = getelementptr inbounds i16, ptr %srcptr.41591, i64 13266  %37 = load i16, ptr %incdec.ptr453, align 2267  %conv468 = zext i16 %37 to i32268  %sub469 = sub nsw i32 %cond.i5.i1468, %conv468269  %idxprom470 = sext i32 %sub469 to i64270  %arrayidx471 = getelementptr inbounds i32, ptr %cond, i64 %idxprom470271  %38 = load i32, ptr %arrayidx471, align 4272  %add472 = add nsw i32 %38, %LineSadBlk3.01586273  %incdec.ptr474 = getelementptr inbounds i16, ptr %refptr.11590, i64 14274  %add477 = add nsw i32 0, %3275  %shr478 = ashr i32 %add477, %4276  %add479 = add nsw i32 %shr478, %5277  %cmp.i.i1461 = icmp sgt i32 %add479, 0278  %cond.i.i1462 = select i1 %cmp.i.i1461, i32 %add479, i32 0279  %cmp.i4.i1463 = icmp slt i32 %cond.i.i1462, %1280  %cond.i5.i1464 = select i1 %cmp.i4.i1463, i32 %cond.i.i1462, i32 %1281  %incdec.ptr481 = getelementptr inbounds i16, ptr %srcptr.41591, i64 14282  %39 = load i16, ptr %incdec.ptr467, align 2283  %conv482 = zext i16 %39 to i32284  %sub483 = sub nsw i32 %cond.i5.i1464, %conv482285  %idxprom484 = sext i32 %sub483 to i64286  %arrayidx485 = getelementptr inbounds i32, ptr %cond, i64 %idxprom484287  %40 = load i32, ptr %arrayidx485, align 4288  %add486 = add nsw i32 %add472, %40289  %incdec.ptr488 = getelementptr inbounds i16, ptr %refptr.11590, i64 15290  %41 = load i16, ptr %incdec.ptr474, align 2291  %conv489 = zext i16 %41 to i32292  %mul490 = mul nsw i32 %conv489, %2293  %add491 = add nsw i32 %mul490, %3294  %shr492 = ashr i32 %add491, %4295  %add493 = add nsw i32 %shr492, %5296  %cmp.i.i1457 = icmp sgt i32 %add493, 0297  %cond.i.i1458 = select i1 %cmp.i.i1457, i32 %add493, i32 0298  %cmp.i4.i1459 = icmp slt i32 %cond.i.i1458, %1299  %cond.i5.i1460 = select i1 %cmp.i4.i1459, i32 %cond.i.i1458, i32 %1300  %incdec.ptr495 = getelementptr inbounds i16, ptr %srcptr.41591, i64 15301  %42 = load i16, ptr %incdec.ptr481, align 2302  %conv496 = zext i16 %42 to i32303  %sub497 = sub nsw i32 %cond.i5.i1460, %conv496304  %idxprom498 = sext i32 %sub497 to i64305  %arrayidx499 = getelementptr inbounds i32, ptr %cond, i64 %idxprom498306  %43 = load i32, ptr %arrayidx499, align 4307  %add500 = add nsw i32 %add486, %43308  %44 = load i16, ptr %incdec.ptr488, align 2309  %conv503 = zext i16 %44 to i32310  %mul504 = mul nsw i32 %conv503, %2311  %add505 = add nsw i32 %mul504, %3312  %shr506 = ashr i32 %add505, %4313  %add507 = add nsw i32 %shr506, %5314  %cmp.i.i1453 = icmp sgt i32 %add507, 0315  %cond.i.i1454 = select i1 %cmp.i.i1453, i32 %add507, i32 0316  %cmp.i4.i1455 = icmp slt i32 %cond.i.i1454, %1317  %cond.i5.i1456 = select i1 %cmp.i4.i1455, i32 %cond.i.i1454, i32 %1318  %45 = load i16, ptr %incdec.ptr495, align 2319  %conv510 = zext i16 %45 to i32320  %sub511 = sub nsw i32 %cond.i5.i1456, %conv510321  %idxprom512 = sext i32 %sub511 to i64322  %arrayidx513 = getelementptr inbounds i32, ptr %cond, i64 %idxprom512323  %46 = load i32, ptr %arrayidx513, align 4324  %add514 = add nsw i32 %add500, %46325  %add.ptr517 = getelementptr inbounds i16, ptr %refptr.11590, i64 %incdec.ptr502.sum326  %exitcond1692 = icmp eq i32 undef, 4327  br i1 %exitcond1692, label %for.end520, label %for.body293328 329for.end520:                                       ; preds = %for.body293330  store i32 %add346, ptr undef, align 4331  store i32 %add402, ptr undef, align 4332  store i32 %add458, ptr undef, align 4333  store i32 %add514, ptr null, align 4334  br i1 undef, label %for.end543, label %for.cond290.preheader335 336for.end543:                                       ; preds = %for.end520337  br i1 undef, label %for.inc997, label %for.body549338 339for.body549:                                      ; preds = %for.inc701, %for.end543340  %call554 = call ptr null(ptr null, i32 signext undef, i32 signext %shl263) #1341  br label %for.cond559.preheader342 343for.cond559.preheader:                            ; preds = %for.cond559.preheader, %for.body549344  br i1 undef, label %for.inc701, label %for.cond559.preheader345 346for.inc701:                                       ; preds = %for.cond559.preheader347  br i1 undef, label %for.inc997, label %for.body549348 349for.cond713.preheader:                            ; preds = %for.end850, %for.body252350  br label %for.body716351 352for.body716:                                      ; preds = %for.body716, %for.cond713.preheader353  br i1 undef, label %for.end850, label %for.body716354 355for.end850:                                       ; preds = %for.body716356  br i1 undef, label %for.end873, label %for.cond713.preheader357 358for.end873:                                       ; preds = %for.end850359  br i1 undef, label %for.inc997, label %for.body879360 361for.body879:                                      ; preds = %for.inc992, %for.end873362  br label %for.cond889.preheader363 364for.cond889.preheader:                            ; preds = %for.end964, %for.body879365  br i1 undef, label %for.cond894.preheader.lr.ph, label %for.end964366 367for.cond894.preheader.lr.ph:                      ; preds = %for.cond889.preheader368  br label %for.body898.lr.ph.us369 370for.end957.us:                                    ; preds = %for.body946.us371  br i1 undef, label %for.body898.lr.ph.us, label %for.end964372 373for.body946.us:                                   ; preds = %for.body930.us, %for.body946.us374  br i1 false, label %for.body946.us, label %for.end957.us375 376for.body930.us:                                   ; preds = %for.body914.us, %for.body930.us377  br i1 undef, label %for.body930.us, label %for.body946.us378 379for.body914.us:                                   ; preds = %for.body898.us, %for.body914.us380  br i1 undef, label %for.body914.us, label %for.body930.us381 382for.body898.us:                                   ; preds = %for.body898.lr.ph.us, %for.body898.us383  br i1 undef, label %for.body898.us, label %for.body914.us384 385for.body898.lr.ph.us:                             ; preds = %for.end957.us, %for.cond894.preheader.lr.ph386  br label %for.body898.us387 388for.end964:                                       ; preds = %for.end957.us, %for.cond889.preheader389  %inc990 = add nsw i32 undef, 1390  br i1 false, label %for.inc992, label %for.cond889.preheader391 392for.inc992:                                       ; preds = %for.end964393  br i1 false, label %for.inc997, label %for.body879394 395for.inc997:                                       ; preds = %for.inc992, %for.end873, %for.inc701, %for.end543396  %cmp250 = icmp slt i32 undef, %mul10397  br i1 %cmp250, label %for.body252, label %for.end999398 399for.end999:                                       ; preds = %for.inc997400  ret void401}402 403attributes #0 = { nounwind "less-precise-fpmad"="false" "frame-pointer"="non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "use-soft-float"="false" }404attributes #1 = { nounwind }405