158 lines · plain
1; RUN: llc -mtriple=hexagon -hexagon-initial-cfg-cleanup=0 -hexagon-instsimplify=0 < %s | FileCheck %s2; REQUIRES: asserts3 4; Test that the compiler doesn't assert because IMPLICIT_DEF instructions are5; are added to the same packet as a use. This test case asserts if the6; IMPLICIT_DEFs are not handled properly.7;8; r0 = IMPLICIT_DEF9; r1 = IMPLICIT_DEF10; S2_storerd_io r29, 0, d011 12; CHECK: memd(r29+#0) = r{{[0-9]+}}:{{[0-9]+}}13; CHECK: memd(r29+#0) = r{{[0-9]+}}:{{[0-9]+}}14 15define ptr @f0(ptr %a0) local_unnamed_addr {16b0:17 %v0 = tail call ptr @f1(i32 0)18 %v1 = tail call ptr @f1(i32 8)19 %v3 = load i32, ptr undef, align 420 %v4 = tail call ptr @f4(ptr %a0, i32 0, i32 %v3)21 %v5 = sub nsw i32 %v3, 022 br label %b123 24b1: ; preds = %b025 switch i8 undef, label %b3 [26 i8 0, label %b427 i8 92, label %b228 i8 44, label %b429 ]30 31b2: ; preds = %b132 unreachable33 34b3: ; preds = %b135 unreachable36 37b4: ; preds = %b1, %b138 br label %b539 40b5: ; preds = %b441 br i1 undef, label %b27, label %b642 43b6: ; preds = %b544 %v6 = ptrtoint ptr %v4 to i3245 %v7 = sub i32 0, %v646 %v8 = call ptr @f4(ptr nonnull %v4, i32 0, i32 %v7)47 %v9 = call ptr @f4(ptr nonnull %v4, i32 undef, i32 %v5)48 br label %b749 50b7: ; preds = %b651 br i1 undef, label %b8, label %b952 53b8: ; preds = %b754 br label %b955 56b9: ; preds = %b8, %b757 %v10 = phi i32 [ 2, %b8 ], [ 0, %b7 ]58 %v11 = load i8, ptr %v9, align 159 switch i8 %v11, label %b12 [60 i8 43, label %b1061 i8 45, label %b1062 ]63 64b10: ; preds = %b9, %b965 br i1 undef, label %b11, label %b1266 67b11: ; preds = %b1068 %v12 = call i64 @f6(ptr nonnull %v9, ptr nonnull undef, i32 10)69 %v13 = load ptr, ptr undef, align 470 %v14 = ptrtoint ptr %v13 to i3271 br label %b1572 73b12: ; preds = %b10, %b974 switch i8 undef, label %b14 [75 i8 0, label %b1376 i8 46, label %b1377 ]78 79b13: ; preds = %b12, %b1280 br label %b1581 82b14: ; preds = %b1283 unreachable84 85b15: ; preds = %b13, %b1186 %v15 = phi i32 [ undef, %b13 ], [ %v14, %b11 ]87 %v16 = phi i32 [ 2, %b13 ], [ 1, %b11 ]88 %v17 = phi i64 [ undef, %b13 ], [ %v12, %b11 ]89 %v18 = call ptr @f5()90 br label %b1691 92b16: ; preds = %b1593 %v19 = icmp ne i32 %v10, %v1694 %v20 = or i1 undef, %v1995 br i1 %v20, label %b17, label %b1896 97b17: ; preds = %b1698 call void @f2(ptr %v8)99 br label %b27100 101b18: ; preds = %b16102 br i1 undef, label %b19, label %b20103 104b19: ; preds = %b18105 br label %b24106 107b20: ; preds = %b18108 %v21 = add i32 %v5, -2109 %v22 = sub i32 %v21, %v7110 %v23 = add i32 %v22, %v15111 %v24 = sub i32 %v23, 0112 br label %b21113 114b21: ; preds = %b20115 %v25 = icmp ne i32 %v24, 2116 %v26 = and i1 %v25, undef117 br i1 %v26, label %b22, label %b23118 119b22: ; preds = %b21120 unreachable121 122b23: ; preds = %b21123 br label %b24124 125b24: ; preds = %b23, %b19126 %v27 = phi i64 [ 0, %b19 ], [ %v17, %b23 ]127 br label %b25128 129b25: ; preds = %b24130 %v28 = icmp sgt i64 0, %v27131 br i1 %v28, label %b28, label %b26132 133b26: ; preds = %b25134 unreachable135 136b27: ; preds = %b17, %b5137 call void @f2(ptr %v4)138 call void @f2(ptr %v0)139 %v29 = call ptr @f3(ptr undef, ptr nonnull %a0)140 ret ptr %v1141 142b28: ; preds = %b25143 call void @f2(ptr %v9)144 unreachable145}146 147declare ptr @f1(i32) local_unnamed_addr148 149declare void @f2(ptr nocapture) local_unnamed_addr150 151declare ptr @f3(ptr, ptr nocapture readonly) local_unnamed_addr152 153declare ptr @f4(ptr, i32, i32) local_unnamed_addr154 155declare ptr @f5() local_unnamed_addr156 157declare i64 @f6(ptr, ptr, i32) local_unnamed_addr158