• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
2; RUN: opt -mtriple=riscv32 -cost-model -analyze < %s \
3; RUN:   | FileCheck %s -check-prefix=RVI
4; RUN: opt -mtriple=riscv64 -cost-model -analyze < %s \
5; RUN:   | FileCheck %s -check-prefix=RVI
6
7define void @testi8(i8* %a, i32 %i) {
8; RVI-LABEL: 'testi8'
9; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a0 = getelementptr inbounds i8, i8* %a, i32 0
10; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a1 = getelementptr inbounds i8, i8* %a, i32 1
11; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a2 = getelementptr inbounds i8, i8* %a, i32 -1
12; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a3 = getelementptr inbounds i8, i8* %a, i32 2047
13; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %a4 = getelementptr inbounds i8, i8* %a, i32 2048
14; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a5 = getelementptr inbounds i8, i8* %a, i32 -2048
15; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %a6 = getelementptr inbounds i8, i8* %a, i32 -2049
16; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %ai = getelementptr inbounds i8, i8* %a, i32 %i
17; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret void
18;
19  %a0 = getelementptr inbounds i8, i8* %a, i32 0
20  %a1 = getelementptr inbounds i8, i8* %a, i32 1
21  %a2 = getelementptr inbounds i8, i8* %a, i32 -1
22  %a3 = getelementptr inbounds i8, i8* %a, i32 2047
23  %a4 = getelementptr inbounds i8, i8* %a, i32 2048
24  %a5 = getelementptr inbounds i8, i8* %a, i32 -2048
25  %a6 = getelementptr inbounds i8, i8* %a, i32 -2049
26  %ai = getelementptr inbounds i8, i8* %a, i32 %i
27  ret void
28}
29
30define void @testi16(i16* %a, i32 %i) {
31; RVI-LABEL: 'testi16'
32; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a0 = getelementptr inbounds i16, i16* %a, i32 0
33; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a1 = getelementptr inbounds i16, i16* %a, i32 1
34; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a2 = getelementptr inbounds i16, i16* %a, i32 -1
35; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a3 = getelementptr inbounds i16, i16* %a, i32 1023
36; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %a4 = getelementptr inbounds i16, i16* %a, i32 1024
37; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a5 = getelementptr inbounds i16, i16* %a, i32 -1024
38; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %a6 = getelementptr inbounds i16, i16* %a, i32 -1025
39; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %ai = getelementptr inbounds i16, i16* %a, i32 %i
40; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret void
41;
42  %a0 = getelementptr inbounds i16, i16* %a, i32 0
43  %a1 = getelementptr inbounds i16, i16* %a, i32 1
44  %a2 = getelementptr inbounds i16, i16* %a, i32 -1
45  %a3 = getelementptr inbounds i16, i16* %a, i32 1023
46  %a4 = getelementptr inbounds i16, i16* %a, i32 1024
47  %a5 = getelementptr inbounds i16, i16* %a, i32 -1024
48  %a6 = getelementptr inbounds i16, i16* %a, i32 -1025
49  %ai = getelementptr inbounds i16, i16* %a, i32 %i
50  ret void
51}
52
53define void @testi32(i32* %a, i32 %i) {
54; RVI-LABEL: 'testi32'
55; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a0 = getelementptr inbounds i32, i32* %a, i32 0
56; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a1 = getelementptr inbounds i32, i32* %a, i32 1
57; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a2 = getelementptr inbounds i32, i32* %a, i32 -1
58; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a3 = getelementptr inbounds i32, i32* %a, i32 511
59; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %a4 = getelementptr inbounds i32, i32* %a, i32 512
60; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a5 = getelementptr inbounds i32, i32* %a, i32 -512
61; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %a6 = getelementptr inbounds i32, i32* %a, i32 -513
62; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %ai = getelementptr inbounds i32, i32* %a, i32 %i
63; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret void
64;
65  %a0 = getelementptr inbounds i32, i32* %a, i32 0
66  %a1 = getelementptr inbounds i32, i32* %a, i32 1
67  %a2 = getelementptr inbounds i32, i32* %a, i32 -1
68  %a3 = getelementptr inbounds i32, i32* %a, i32 511
69  %a4 = getelementptr inbounds i32, i32* %a, i32 512
70  %a5 = getelementptr inbounds i32, i32* %a, i32 -512
71  %a6 = getelementptr inbounds i32, i32* %a, i32 -513
72  %ai = getelementptr inbounds i32, i32* %a, i32 %i
73  ret void
74}
75
76define void @testi64(i64* %a, i32 %i) {
77; RVI-LABEL: 'testi64'
78; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a0 = getelementptr inbounds i64, i64* %a, i32 0
79; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a1 = getelementptr inbounds i64, i64* %a, i32 1
80; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a2 = getelementptr inbounds i64, i64* %a, i32 -1
81; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a3 = getelementptr inbounds i64, i64* %a, i32 255
82; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %a4 = getelementptr inbounds i64, i64* %a, i32 256
83; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a5 = getelementptr inbounds i64, i64* %a, i32 -256
84; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %a6 = getelementptr inbounds i64, i64* %a, i32 -257
85; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %ai = getelementptr inbounds i64, i64* %a, i32 %i
86; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret void
87;
88  %a0 = getelementptr inbounds i64, i64* %a, i32 0
89  %a1 = getelementptr inbounds i64, i64* %a, i32 1
90  %a2 = getelementptr inbounds i64, i64* %a, i32 -1
91  %a3 = getelementptr inbounds i64, i64* %a, i32 255
92  %a4 = getelementptr inbounds i64, i64* %a, i32 256
93  %a5 = getelementptr inbounds i64, i64* %a, i32 -256
94  %a6 = getelementptr inbounds i64, i64* %a, i32 -257
95  %ai = getelementptr inbounds i64, i64* %a, i32 %i
96  ret void
97}
98
99define void @testfloat(float* %a, i32 %i) {
100; RVI-LABEL: 'testfloat'
101; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a0 = getelementptr inbounds float, float* %a, i32 0
102; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a1 = getelementptr inbounds float, float* %a, i32 1
103; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a2 = getelementptr inbounds float, float* %a, i32 -1
104; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a3 = getelementptr inbounds float, float* %a, i32 511
105; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %a4 = getelementptr inbounds float, float* %a, i32 512
106; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a5 = getelementptr inbounds float, float* %a, i32 -512
107; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %a6 = getelementptr inbounds float, float* %a, i32 -513
108; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %ai = getelementptr inbounds float, float* %a, i32 %i
109; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret void
110;
111  %a0 = getelementptr inbounds float, float* %a, i32 0
112  %a1 = getelementptr inbounds float, float* %a, i32 1
113  %a2 = getelementptr inbounds float, float* %a, i32 -1
114  %a3 = getelementptr inbounds float, float* %a, i32 511
115  %a4 = getelementptr inbounds float, float* %a, i32 512
116  %a5 = getelementptr inbounds float, float* %a, i32 -512
117  %a6 = getelementptr inbounds float, float* %a, i32 -513
118  %ai = getelementptr inbounds float, float* %a, i32 %i
119  ret void
120}
121
122define void @testdouble(double* %a, i32 %i) {
123; RVI-LABEL: 'testdouble'
124; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a0 = getelementptr inbounds double, double* %a, i32 0
125; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a1 = getelementptr inbounds double, double* %a, i32 1
126; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a2 = getelementptr inbounds double, double* %a, i32 -1
127; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a3 = getelementptr inbounds double, double* %a, i32 255
128; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %a4 = getelementptr inbounds double, double* %a, i32 256
129; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a5 = getelementptr inbounds double, double* %a, i32 -256
130; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %a6 = getelementptr inbounds double, double* %a, i32 -257
131; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %ai = getelementptr inbounds double, double* %a, i32 %i
132; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret void
133;
134  %a0 = getelementptr inbounds double, double* %a, i32 0
135  %a1 = getelementptr inbounds double, double* %a, i32 1
136  %a2 = getelementptr inbounds double, double* %a, i32 -1
137  %a3 = getelementptr inbounds double, double* %a, i32 255
138  %a4 = getelementptr inbounds double, double* %a, i32 256
139  %a5 = getelementptr inbounds double, double* %a, i32 -256
140  %a6 = getelementptr inbounds double, double* %a, i32 -257
141  %ai = getelementptr inbounds double, double* %a, i32 %i
142  ret void
143}
144
145define void @testvecs(i32 %i) {
146; RVI-LABEL: 'testvecs'
147; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a0 = getelementptr inbounds <4 x i8>, <4 x i8>* undef, i32 0
148; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a1 = getelementptr inbounds <4 x i16>, <4 x i16>* undef, i32 0
149; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a2 = getelementptr inbounds <4 x i32>, <4 x i32>* undef, i32 0
150; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a3 = getelementptr inbounds <4 x i64>, <4 x i64>* undef, i32 0
151; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a4 = getelementptr inbounds <4 x float>, <4 x float>* undef, i32 0
152; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a5 = getelementptr inbounds <4 x double>, <4 x double>* undef, i32 0
153; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %b0 = getelementptr inbounds <4 x i8>, <4 x i8>* undef, i32 1
154; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %b1 = getelementptr inbounds <4 x i16>, <4 x i16>* undef, i32 1
155; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %b2 = getelementptr inbounds <4 x i32>, <4 x i32>* undef, i32 1
156; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %b3 = getelementptr inbounds <4 x i64>, <4 x i64>* undef, i32 1
157; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %b4 = getelementptr inbounds <4 x float>, <4 x float>* undef, i32 1
158; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %b5 = getelementptr inbounds <4 x double>, <4 x double>* undef, i32 1
159; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %c1 = getelementptr inbounds <4 x i8>, <4 x i8>* undef, i32 128
160; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %c2 = getelementptr inbounds <4 x i16>, <4 x i16>* undef, i32 128
161; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %c3 = getelementptr inbounds <4 x i32>, <4 x i32>* undef, i32 128
162; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %c4 = getelementptr inbounds <4 x i64>, <4 x i64>* undef, i32 128
163; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %c5 = getelementptr inbounds <4 x float>, <4 x float>* undef, i32 128
164; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %c6 = getelementptr inbounds <4 x double>, <4 x double>* undef, i32 128
165; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret void
166;
167  %a0 = getelementptr inbounds <4 x i8>, <4 x i8>* undef, i32 0
168  %a1 = getelementptr inbounds <4 x i16>, <4 x i16>* undef, i32 0
169  %a2 = getelementptr inbounds <4 x i32>, <4 x i32>* undef, i32 0
170  %a3 = getelementptr inbounds <4 x i64>, <4 x i64>* undef, i32 0
171  %a4 = getelementptr inbounds <4 x float>, <4 x float>* undef, i32 0
172  %a5 = getelementptr inbounds <4 x double>, <4 x double>* undef, i32 0
173
174  %b0 = getelementptr inbounds <4 x i8>, <4 x i8>* undef, i32 1
175  %b1 = getelementptr inbounds <4 x i16>, <4 x i16>* undef, i32 1
176  %b2 = getelementptr inbounds <4 x i32>, <4 x i32>* undef, i32 1
177  %b3 = getelementptr inbounds <4 x i64>, <4 x i64>* undef, i32 1
178  %b4 = getelementptr inbounds <4 x float>, <4 x float>* undef, i32 1
179  %b5 = getelementptr inbounds <4 x double>, <4 x double>* undef, i32 1
180
181  %c1 = getelementptr inbounds <4 x i8>, <4 x i8>* undef, i32 128
182  %c2 = getelementptr inbounds <4 x i16>, <4 x i16>* undef, i32 128
183  %c3 = getelementptr inbounds <4 x i32>, <4 x i32>* undef, i32 128
184  %c4 = getelementptr inbounds <4 x i64>, <4 x i64>* undef, i32 128
185  %c5 = getelementptr inbounds <4 x float>, <4 x float>* undef, i32 128
186  %c6 = getelementptr inbounds <4 x double>, <4 x double>* undef, i32 128
187
188  ret void
189}
190