Mercurial > hg > CbC > CbC_llvm
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 |