68 lines · plain
1; RUN: llc -mtriple=hexagon -hexagon-hwloop-preheader < %s2; REQUIRES: asserts3 4; Checks that a subreg in a Phi is propagated correctly when a5; new preheader is created in the Hardware Loop pass.6 7; Function Attrs: nounwind8define void @f0() #0 {9b0:10 br label %b211 12b1: ; preds = %b2, %b113 %v0 = or i64 0, undef14 %v1 = add nsw i64 0, %v015 %v2 = add nsw i64 %v1, 016 %v3 = add nsw i64 %v2, 017 %v4 = add nsw i64 %v3, 018 %v5 = add nsw i64 %v4, 019 %v6 = add nsw i64 %v5, 020 %v7 = load i32, ptr undef, align 421 %v8 = ashr i32 %v7, 522 %v9 = sext i32 %v8 to i6423 %v10 = mul nsw i64 %v9, %v924 %v11 = add nsw i64 %v6, %v1025 %v12 = add nsw i64 %v11, 026 %v13 = add nsw i64 0, %v1227 %v14 = add nsw i64 %v13, 028 %v15 = add nsw i64 %v14, 029 %v16 = add nsw i64 %v15, 030 %v17 = add nsw i64 %v16, 031 %v18 = add nsw i64 %v17, 032 %v19 = add nsw i64 %v18, 033 %v20 = add nsw i64 %v19, 034 %v21 = lshr i64 %v20, 3235 %v22 = trunc i64 %v21 to i3236 br i1 undef, label %b1, label %b337 38b2: ; preds = %b5, %b039 br i1 undef, label %b1, label %b440 41b3: ; preds = %b142 br i1 false, label %b5, label %b443 44b4: ; preds = %b4, %b3, %b245 %v23 = phi i32 [ %v37, %b4 ], [ undef, %b2 ], [ %v22, %b3 ]46 %v24 = zext i32 %v23 to i6447 %v25 = shl nuw i64 %v24, 3248 %v26 = or i64 %v25, 049 %v27 = add nsw i64 0, %v2650 %v28 = add nsw i64 %v27, 051 %v29 = add nsw i64 %v28, 052 %v30 = add nsw i64 %v29, 053 %v31 = add nsw i64 %v30, 054 %v32 = add nsw i64 %v31, 055 %v33 = add nsw i64 %v32, 056 %v34 = add nsw i64 %v33, 057 %v35 = trunc i64 %v34 to i3258 %v36 = lshr i64 %v34, 3259 %v37 = trunc i64 %v36 to i3260 %v38 = icmp slt i32 undef, undef61 br i1 %v38, label %b4, label %b562 63b5: ; preds = %b4, %b364 br label %b265}66 67attributes #0 = { nounwind "target-cpu"="hexagonv55" }68