90 lines · plain
1; RUN: llc -mtriple=hexagon < %s | FileCheck %s2 3target triple = "hexagon"4 5; FP elimination enabled.6;7; CHECK-LABEL: danny:8; CHECK: r29 = add(r29,#-[[SIZE:[0-9]+]])9; CHECK: r29 = add(r29,#[[SIZE]])10define i32 @danny(i32 %a0, i32 %a1) local_unnamed_addr #0 {11b2:12 %v3 = alloca [32 x i32], align 813 call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %v3) #314 br label %b515 16b5: ; preds = %b5, %b217 %v6 = phi i32 [ 0, %b2 ], [ %v8, %b5 ]18 %v7 = getelementptr inbounds [32 x i32], ptr %v3, i32 0, i32 %v619 store i32 %v6, ptr %v7, align 420 %v8 = add nuw nsw i32 %v6, 121 %v9 = icmp eq i32 %v8, 3222 br i1 %v9, label %b10, label %b523 24b10: ; preds = %b525 %v11 = getelementptr inbounds [32 x i32], ptr %v3, i32 0, i32 %a026 store i32 %a1, ptr %v11, align 427 br label %b1228 29b12: ; preds = %b12, %b1030 %v13 = phi i32 [ 0, %b10 ], [ %v18, %b12 ]31 %v14 = phi i32 [ 0, %b10 ], [ %v17, %b12 ]32 %v15 = getelementptr inbounds [32 x i32], ptr %v3, i32 0, i32 %v1333 %v16 = load i32, ptr %v15, align 434 %v17 = add nsw i32 %v16, %v1435 %v18 = add nuw nsw i32 %v13, 136 %v19 = icmp eq i32 %v18, 3237 br i1 %v19, label %b20, label %b1238 39b20: ; preds = %b1240 call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %v3) #341 ret i32 %v1742}43 44; FP elimination disabled.45;46; CHECK-LABEL: sammy:47; CHECK: allocframe48; CHECK: dealloc_return49define i32 @sammy(i32 %a0, i32 %a1) local_unnamed_addr #1 {50b2:51 %v3 = alloca [32 x i32], align 852 call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %v3) #353 br label %b554 55b5: ; preds = %b5, %b256 %v6 = phi i32 [ 0, %b2 ], [ %v8, %b5 ]57 %v7 = getelementptr inbounds [32 x i32], ptr %v3, i32 0, i32 %v658 store i32 %v6, ptr %v7, align 459 %v8 = add nuw nsw i32 %v6, 160 %v9 = icmp eq i32 %v8, 3261 br i1 %v9, label %b10, label %b562 63b10: ; preds = %b564 %v11 = getelementptr inbounds [32 x i32], ptr %v3, i32 0, i32 %a065 store i32 %a1, ptr %v11, align 466 br label %b1267 68b12: ; preds = %b12, %b1069 %v13 = phi i32 [ 0, %b10 ], [ %v18, %b12 ]70 %v14 = phi i32 [ 0, %b10 ], [ %v17, %b12 ]71 %v15 = getelementptr inbounds [32 x i32], ptr %v3, i32 0, i32 %v1372 %v16 = load i32, ptr %v15, align 473 %v17 = add nsw i32 %v16, %v1474 %v18 = add nuw nsw i32 %v13, 175 %v19 = icmp eq i32 %v18, 3276 br i1 %v19, label %b20, label %b1277 78b20: ; preds = %b1279 call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %v3) #380 ret i32 %v1781}82 83declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #284declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #285 86attributes #0 = { nounwind readnone "frame-pointer"="none" "target-cpu"="hexagonv60" }87attributes #1 = { nounwind readnone "frame-pointer"="all" "target-cpu"="hexagonv60" }88attributes #2 = { argmemonly nounwind }89attributes #3 = { nounwind }90