1
- ; RUN: opt -S < %s -passes=loop-vectorize -force-target-instruction-cost=1 | FileCheck %s
1
+ ; RUN: opt -S < %s -passes=loop-vectorize -mcpu=generic | FileCheck %s --check-prefix=CHECK-GENERIC
2
+ ; RUN: opt -S < %s -passes=loop-vectorize -mcpu=neoverse-v2 | FileCheck %s --check-prefix=CHECK-PREFFIXED
3
+ ; RUN: opt -S < %s -passes=loop-vectorize -mcpu=cortex-x2 | FileCheck %s --check-prefix=CHECK-PREFFIXED
4
+ ; RUN: opt -S < %s -passes=loop-vectorize -mcpu=cortex-x3 | FileCheck %s --check-prefix=CHECK-PREFFIXED
5
+ ; RUN: opt -S < %s -passes=loop-vectorize -mcpu=cortex-x4 | FileCheck %s --check-prefix=CHECK-PREFFIXED
6
+ ; RUN: opt -S < %s -passes=loop-vectorize -mcpu=cortex-x925 | FileCheck %s --check-prefix=CHECK-PREFFIXED
2
7
3
8
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32"
4
9
target triple = "aarch64-unknown-linux-gnu"
5
10
6
11
@a = dso_local local_unnamed_addr global [32000 x float ] zeroinitializer , align 64
7
12
@b = dso_local local_unnamed_addr global [32000 x float ] zeroinitializer , align 64
8
13
9
- define void @NeoverseV2 () #0 {
10
- ; CHECK-LABEL: define void @NeoverseV2(
11
- ; CHECK: store <4 x float>
14
+ define void @test () #0 {
15
+ ; CHECK-GENERIC-LABEL: define void @test(
16
+ ; CHECK-GENERIC: store <vscale x 4 x float>
17
+ ; CHECK-PREFFIXED-LABEL: define void @test(
18
+ ; CHECK-PREFFIXED: store <4 x float>
12
19
;
13
20
entry:
14
21
br label %for.body
@@ -31,30 +38,4 @@ for.body:
31
38
br i1 %exitcond.not , label %for.cond.cleanup , label %for.body
32
39
}
33
40
34
- define void @GenericCPU () #1 {
35
- ; CHECK-LABEL: define void @GenericCPU(
36
- ; CHECK: store <vscale x 4 x float>
37
- ;
38
- entry:
39
- br label %for.body
40
-
41
- for.cond.cleanup:
42
- ret void
43
-
44
- for.body:
45
- %indvars.iv = phi i64 [ 0 , %entry ], [ %indvars.iv.next , %for.body ]
46
- %arrayidx = getelementptr inbounds [32000 x float ], ptr @a , i64 0 , i64 %indvars.iv
47
- %0 = load float , ptr %arrayidx , align 4
48
- %arrayidx2 = getelementptr inbounds [32000 x float ], ptr @b , i64 0 , i64 %indvars.iv
49
- %1 = load float , ptr %arrayidx2 , align 4
50
- %add = fadd fast float %1 , %0
51
- %2 = add nuw nsw i64 %indvars.iv , 16000
52
- %arrayidx5 = getelementptr inbounds [32000 x float ], ptr @a , i64 0 , i64 %2
53
- store float %add , ptr %arrayidx5 , align 4
54
- %indvars.iv.next = add nuw nsw i64 %indvars.iv , 1
55
- %exitcond.not = icmp eq i64 %indvars.iv.next , 16000
56
- br i1 %exitcond.not , label %for.cond.cleanup , label %for.body
57
- }
58
-
59
- attributes #0 = { vscale_range(1 ,16 ) "target-cpu" ="neoverse-v2" "target-features" ="+sve,+sve2,+v9a" }
60
- attributes #1 = { vscale_range(1 ,16 ) "target-cpu" ="generic" "target-features" ="+sve,+v9a" }
41
+ attributes #0 = { vscale_range(1 ,16 ) "target-features" ="+sve,+sve2,+v9a" }
0 commit comments