84 lines · plain
1; RUN: llc -mtriple=hexagon -O3 -hexagon-eif=0 < %s | FileCheck %s2; Without TFR cleanup, the last block contained3; {4; r3 = xor(r1, r2)5; r1 = #06; }7; {8; r7 = r19; r0 = zxtb(r3)10; }11; After TFR cleanup, the copy "r7 = r1" should be simplified to "r7 = #0".12; There shouldn't be any register copies in that block anymore.13;14; CHECK: LBB0_5:15; CHECK-NOT: r{{[0-9]+}} = r{{[0-9]+}}16 17target triple = "hexagon"18 19; Function Attrs: nounwind readnone20define i64 @f0(i64 %a0, i32 %a1, i32 %a2) #0 {21b0:22 %v0 = trunc i64 %a0 to i3223 %v1 = lshr i64 %a0, 3224 %v2 = trunc i64 %v1 to i3225 %v3 = lshr i64 %a0, 4026 %v4 = lshr i64 %a0, 4827 %v5 = trunc i64 %v4 to i1628 %v6 = icmp sgt i32 %a2, %a129 %v7 = lshr i32 %v0, 1030 br i1 %v6, label %b1, label %b231 32b1: ; preds = %b033 %v8 = add nsw i32 %v7, 419097134 %v9 = and i32 %v8, 419430335 %v10 = shl nuw nsw i64 %v3, 2436 %v11 = trunc i64 %v10 to i3237 %v12 = ashr exact i32 %v11, 2438 %v13 = or i32 %v12, 10239 br label %b340 41b2: ; preds = %b042 %v14 = add nsw i32 %v7, 418976043 %v15 = trunc i64 %v3 to i3244 %v16 = or i32 %v15, 11945 br label %b346 47b3: ; preds = %b2, %b148 %v17 = phi i32 [ %v13, %b1 ], [ %v16, %b2 ]49 %v18 = phi i32 [ %v9, %b1 ], [ %v14, %b2 ]50 %v19 = shl i32 %v18, 1051 %v20 = icmp sgt i32 %a1, %a252 br i1 %v20, label %b4, label %b553 54b4: ; preds = %b355 %v21 = and i32 %v2, 14056 %v22 = or i32 %v21, 11557 %v23 = and i16 %v5, 1234558 br label %b659 60b5: ; preds = %b361 %v24 = xor i32 %v2, 2362 %v25 = or i16 %v5, 1234563 br label %b664 65b6: ; preds = %b5, %b466 %v26 = phi i16 [ %v23, %b4 ], [ %v25, %b5 ]67 %v27 = phi i32 [ %v22, %b4 ], [ %v24, %b5 ]68 %v28 = zext i16 %v26 to i6469 %v29 = shl nuw i64 %v28, 4870 %v30 = and i32 %v27, 25571 %v31 = zext i32 %v30 to i6472 %v32 = shl nuw nsw i64 %v31, 4073 %v33 = and i32 %v17, 25574 %v34 = zext i32 %v33 to i6475 %v35 = shl nuw nsw i64 %v34, 3276 %v36 = zext i32 %v19 to i6477 %v37 = or i64 %v36, %v3578 %v38 = or i64 %v37, %v2979 %v39 = or i64 %v38, %v3280 ret i64 %v3981}82 83attributes #0 = { nounwind readnone "target-cpu"="hexagonv55" }84