1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 03:02:36 +01:00
llvm-mirror/test/CodeGen/PowerPC/no-dup-of-bdnz.ll
Kang Zhang 8a2bb9ff6f [NFC]][PowerPC] Remove unused intrinsic for old CTR loop pass
Summary:

In the patch D62907 the PPC CTRLoops pass has been replaced by Generic
Hardware Loop pass, and it has imported some new intrinsic for Generic
Hardware Loop.

The old intrinsic used in PPC CTRLoops int_ppc_mtctr and
int_ppc_is_decremented_ctr_nonzero is been replaced by
int_set_loop_iterations and loop_decrement.

This patch is to remove above unused two instrinsic.

Reviewed By: shchenz

Differential Revision: https://reviews.llvm.org/D81539
2020-06-17 07:06:46 +00:00

76 lines
2.4 KiB
LLVM

; RUN: opt -early-cse-memssa -loop-rotate -licm -loop-rotate -S %s -o - | FileCheck %s
; ModuleID = 'bugpoint-reduced-simplified.bc'
source_filename = "bugpoint-output-8903f29.bc"
target datalayout = "e-m:e-i64:64-n32:64"
target triple = "powerpc64le-unknown-linux-gnu"
define void @test(i64 %arg.ssa, i64 %arg.nb) local_unnamed_addr {
; Ensure that loop rotation doesn't duplicate the call to
; llvm.loop.decrement
; CHECK-LABEL: test
; CHECK: call i1 @llvm.loop.decrement
; CHECK-NOT: call i1 @llvm.loop.decrement
; CHECK: declare i1 @llvm.loop.decrement
entry:
switch i32 undef, label %BB_8 [
i32 -2, label %BB_9
i32 0, label %BB_9
]
BB_1: ; preds = %BB_12, %BB_4
%bcount.1.us = phi i64 [ %.810.us, %BB_4 ], [ 0, %BB_12 ]
%0 = add i64 %arg.ssa, %bcount.1.us
%.568.us = load i32, i32* undef, align 4
%.15.i.us = icmp slt i32 0, %.568.us
br i1 %.15.i.us, label %BB_3, label %BB_2
BB_2: ; preds = %BB_1
%.982.us = add nsw i64 %0, 1
unreachable
BB_3: ; preds = %BB_1
%1 = add i64 %arg.ssa, %bcount.1.us
%2 = add i64 %1, 1
%3 = call i1 @llvm.loop.decrement.i32(i32 1)
br i1 %3, label %BB_4, label %BB_7
BB_4: ; preds = %BB_3
%.810.us = add nuw nsw i64 %bcount.1.us, 1
br label %BB_1
BB_5: ; preds = %BB_7, %BB_5
%lsr.iv20.i116 = phi i64 [ %2, %BB_7 ], [ %lsr.iv.next21.i126, %BB_5 ]
%lsr.iv.next21.i126 = add i64 %lsr.iv20.i116, 1
br i1 undef, label %BB_5, label %BB_6
BB_6: ; preds = %BB_5
ret void
BB_7: ; preds = %BB_3
br label %BB_5
BB_8: ; preds = %entry
ret void
BB_9: ; preds = %entry, %entry
br label %BB_10
BB_10: ; preds = %BB_9
br label %BB_11
BB_11: ; preds = %BB_11, %BB_10
br i1 undef, label %BB_11, label %BB_12
BB_12: ; preds = %BB_11
call void @llvm.set.loop.iterations.i64(i64 %arg.nb)
br label %BB_1
}
; Function Attrs: nounwind
declare void @llvm.set.loop.iterations.i64(i64) #0
; Function Attrs: nounwind
declare i1 @llvm.loop.decrement.i32(i32) #0
attributes #0 = { nounwind }