mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 13:11:39 +01:00
59f22c6fd7
#pragma clang loop pipeline(disable) Disable SWP optimization for the next loop. “disable” is the only possible value. #pragma clang loop pipeline_initiation_interval(number) Set value of initiation interval for SWP optimization to specified number value for the next loop. Number is the positive value greater than 0. These pragmas could be used for debugging or reducing compile time purposes. It is possible to disable SWP for concrete loops to save compilation time or to find bugs by not doing SWP to certain loops. It is possible to set value of initiation interval to concrete number to save compilation time by not doing extra pipeliner passes or to check created schedule for specific initiation interval. That is llvm part of the fix Clang part of fix: https://reviews.llvm.org/D55710 Patch by Alexey Lapshin! Differential Revision: https://reviews.llvm.org/D56403 llvm-svn: 351923
50 lines
1.4 KiB
Plaintext
50 lines
1.4 KiB
Plaintext
; RUN: llc -disable-lsr -march=hexagon -enable-pipeliner \
|
|
; RUN: -debug-only=pipeliner < %s 2>&1 > /dev/null | FileCheck %s
|
|
; REQUIRES: asserts
|
|
;
|
|
; Test that checks if pipeliner disabled by pragma
|
|
|
|
; CHECK: Can not pipeline loop
|
|
|
|
; Function Attrs: nounwind
|
|
define void @f0(i32* nocapture %a0, i32 %a1) #0 {
|
|
b0:
|
|
%v0 = icmp sgt i32 %a1, 1
|
|
br i1 %v0, label %b1, label %b4
|
|
|
|
b1: ; preds = %b0
|
|
%v1 = load i32, i32* %a0, align 4
|
|
%v2 = add i32 %v1, 10
|
|
%v3 = getelementptr i32, i32* %a0, i32 1
|
|
%v4 = add i32 %a1, -1
|
|
br label %b2
|
|
|
|
b2: ; preds = %b2, %b1
|
|
%v5 = phi i32 [ %v12, %b2 ], [ %v4, %b1 ]
|
|
%v6 = phi i32* [ %v11, %b2 ], [ %v3, %b1 ]
|
|
%v7 = phi i32 [ %v10, %b2 ], [ %v2, %b1 ]
|
|
store i32 %v7, i32* %v6, align 4
|
|
%v8 = add i32 %v7, 10
|
|
%v9 = getelementptr i32, i32* %v6, i32 -1
|
|
store i32 %v8, i32* %v9, align 4
|
|
%v10 = add i32 %v7, 10
|
|
%v11 = getelementptr i32, i32* %v6, i32 1
|
|
%v12 = add i32 %v5, -1
|
|
%v13 = icmp eq i32 %v12, 0
|
|
br i1 %v13, label %b3, label %b2
|
|
|
|
b3: ; preds = %b2
|
|
br label %b4 , !llvm.loop !2
|
|
|
|
b4: ; preds = %b3, %b0
|
|
ret void
|
|
}
|
|
|
|
attributes #0 = { nounwind }
|
|
|
|
!0 = !{i32 1, !"wchar_size", i32 4}
|
|
!1 = !{!2, !2, i64 0}
|
|
!2 = distinct !{!2, !3}
|
|
!3 = !{!"llvm.loop.pipeline.disable", i1 true}
|
|
|