comparison llvm/test/Transforms/LoopDistribute/basic.ll @ 236:c4bab56944e8 llvm-original

LLVM 16
author kono
date Wed, 09 Nov 2022 17:45:10 +0900
parents 79ff65ed7e25
children 1f2b6ac9f198
comparison
equal deleted inserted replaced
232:70dce7da266c 236:c4bab56944e8
1 ; RUN: opt -basic-aa -loop-distribute -enable-loop-distribute -verify-loop-info -verify-dom-info -S \ 1 ; RUN: opt -aa-pipeline=basic-aa -passes=loop-distribute -enable-loop-distribute -verify-loop-info -verify-dom-info -S \
2 ; RUN: < %s | FileCheck %s 2 ; RUN: < %s | FileCheck %s
3 3
4 ; RUN: opt -basic-aa -loop-distribute -enable-loop-distribute -verify-loop-info -verify-dom-info \ 4 ; RUN: opt -aa-pipeline=basic-aa -passes='loop-distribute,print<access-info>' -enable-loop-distribute \
5 ; RUN: -loop-accesses -analyze < %s -enable-new-pm=0 | FileCheck %s --check-prefix=ANALYSIS 5 ; RUN: -verify-loop-info -verify-dom-info -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ANALYSIS
6 6
7 ; TODO: the following changes the order loop-access printing prints loops, remove legacy RUN and change after NPM switch 7 ; RUN: opt -aa-pipeline=basic-aa -passes=loop-distribute,loop-vectorize -enable-loop-distribute -force-vector-width=4 -S \
8 ; TODO: opt -aa-pipeline=basic-aa -passes='loop-distribute,print-access-info' -enable-loop-distribute \
9 ; TODO: -verify-loop-info -verify-dom-info -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ANALYSIS
10
11 ; RUN: opt -basic-aa -loop-distribute -enable-loop-distribute -loop-vectorize -force-vector-width=4 -S \
12 ; RUN: < %s | FileCheck %s --check-prefix=VECTORIZE 8 ; RUN: < %s | FileCheck %s --check-prefix=VECTORIZE
13 9
14 ; We should distribute this loop into a safe (2nd statement) and unsafe loop 10 ; We should distribute this loop into a safe (2nd statement) and unsafe loop
15 ; (1st statement): 11 ; (1st statement):
16 ; for (i = 0; i < n; i++) { 12 ; for (i = 0; i < n; i++) {
44 ; CHECK: for.body: 40 ; CHECK: for.body:
45 ; CHECK: %mulC = mul i32 %loadD, %loadE 41 ; CHECK: %mulC = mul i32 %loadD, %loadE
46 ; CHECK: for.end: 42 ; CHECK: for.end:
47 43
48 44
45 ; ANALYSIS: for.body.ldist1:
46 ; ANALYSIS-NEXT: Report: unsafe dependent memory operations in loop
49 ; ANALYSIS: for.body: 47 ; ANALYSIS: for.body:
50 ; ANALYSIS-NEXT: Memory dependences are safe{{$}} 48 ; ANALYSIS-NEXT: Memory dependences are safe{{$}}
51 ; ANALYSIS: for.body.ldist1:
52 ; ANALYSIS-NEXT: Report: unsafe dependent memory operations in loop
53 49
54 50
55 ; VECTORIZE: mul <4 x i32> 51 ; VECTORIZE: mul <4 x i32>
56 52
57 for.body: ; preds = %for.body, %entry 53 for.body: ; preds = %for.body, %entry
114 ; CHECK: %convergentD = call i32 @llvm.convergent(i32 %loadD) 110 ; CHECK: %convergentD = call i32 @llvm.convergent(i32 %loadD)
115 ; CHECK: %mulC = mul i32 %convergentD, %loadE 111 ; CHECK: %mulC = mul i32 %convergentD, %loadE
116 ; CHECK: for.end: 112 ; CHECK: for.end:
117 113
118 114
115 ; ANALYSIS: for.body.ldist1:
116 ; ANALYSIS-NEXT: Report: unsafe dependent memory operations in loop
119 ; ANALYSIS: for.body: 117 ; ANALYSIS: for.body:
120 ; ANALYSIS-NEXT: Has convergent operation in loop 118 ; ANALYSIS-NEXT: Has convergent operation in loop
121 ; ANALYSIS-NEXT: Report: cannot add control dependency to convergent operation 119 ; ANALYSIS-NEXT: Report: cannot add control dependency to convergent operation
122 ; ANALYSIS: for.body.ldist1:
123 ; ANALYSIS-NEXT: Report: unsafe dependent memory operations in loop
124 120
125 ; convergent instruction happens to block vectorization 121 ; convergent instruction happens to block vectorization
126 ; VECTORIZE: call i32 @llvm.convergent 122 ; VECTORIZE: call i32 @llvm.convergent
127 ; VECTORIZE: mul i32 123 ; VECTORIZE: mul i32
128 124