@@ -126,6 +126,79 @@ define i1 @vscale_ugt_min() vscale_range(5,10) {
126
126
ret i1 %res
127
127
}
128
128
129
+ define i1 @vscale_uge_no_max () vscale_range(5 ) {
130
+ ; CHECK-LABEL: @vscale_uge_no_max(
131
+ ; CHECK-NEXT: ret i1 true
132
+ ;
133
+ %vscale = call i8 @llvm.vscale.i8 ()
134
+ %res = icmp uge i8 %vscale , 5
135
+ ret i1 %res
136
+ }
137
+
138
+ define i1 @vscale_ugt_no_max () vscale_range(5 ) {
139
+ ; CHECK-LABEL: @vscale_ugt_no_max(
140
+ ; CHECK-NEXT: ret i1 false
141
+ ;
142
+ %vscale = call i8 @llvm.vscale.i8 ()
143
+ %res = icmp ugt i8 %vscale , 5
144
+ ret i1 %res
145
+ }
146
+
147
+ define i1 @vscale_uge_max_overflow () vscale_range(5 ,256 ) {
148
+ ; CHECK-LABEL: @vscale_uge_max_overflow(
149
+ ; CHECK-NEXT: [[VSCALE:%.*]] = call i8 @llvm.vscale.i8()
150
+ ; CHECK-NEXT: [[RES:%.*]] = icmp ugt i8 [[VSCALE]], 4
151
+ ; CHECK-NEXT: ret i1 [[RES]]
152
+ ;
153
+ %vscale = call i8 @llvm.vscale.i8 ()
154
+ %res = icmp uge i8 %vscale , 5
155
+ ret i1 %res
156
+ }
157
+
158
+ define i1 @vscale_ugt_max_overflow () vscale_range(5 ,256 ) {
159
+ ; CHECK-LABEL: @vscale_ugt_max_overflow(
160
+ ; CHECK-NEXT: [[VSCALE:%.*]] = call i8 @llvm.vscale.i8()
161
+ ; CHECK-NEXT: [[RES:%.*]] = icmp ugt i8 [[VSCALE]], 5
162
+ ; CHECK-NEXT: ret i1 [[RES]]
163
+ ;
164
+ %vscale = call i8 @llvm.vscale.i8 ()
165
+ %res = icmp ugt i8 %vscale , 5
166
+ ret i1 %res
167
+ }
168
+
169
+ define i1 @vscale_eq_min_overflow () vscale_range(256 ,300 ) {
170
+ ; CHECK-LABEL: @vscale_eq_min_overflow(
171
+ ; CHECK-NEXT: [[VSCALE:%.*]] = call i8 @llvm.vscale.i8()
172
+ ; CHECK-NEXT: [[RES:%.*]] = icmp eq i8 [[VSCALE]], 42
173
+ ; CHECK-NEXT: ret i1 [[RES]]
174
+ ;
175
+ %vscale = call i8 @llvm.vscale.i8 ()
176
+ %res = icmp eq i8 %vscale , 42
177
+ ret i1 %res
178
+ }
179
+
180
+ define i1 @vscale_ult_min_overflow () vscale_range(256 ,300 ) {
181
+ ; CHECK-LABEL: @vscale_ult_min_overflow(
182
+ ; CHECK-NEXT: [[VSCALE:%.*]] = call i8 @llvm.vscale.i8()
183
+ ; CHECK-NEXT: [[RES:%.*]] = icmp ult i8 [[VSCALE]], 42
184
+ ; CHECK-NEXT: ret i1 [[RES]]
185
+ ;
186
+ %vscale = call i8 @llvm.vscale.i8 ()
187
+ %res = icmp ult i8 %vscale , 42
188
+ ret i1 %res
189
+ }
190
+
191
+ define i1 @vscale_ugt_min_overflow () vscale_range(256 ,300 ) {
192
+ ; CHECK-LABEL: @vscale_ugt_min_overflow(
193
+ ; CHECK-NEXT: [[VSCALE:%.*]] = call i8 @llvm.vscale.i8()
194
+ ; CHECK-NEXT: [[RES:%.*]] = icmp ult i8 [[VSCALE]], 42
195
+ ; CHECK-NEXT: ret i1 [[RES]]
196
+ ;
197
+ %vscale = call i8 @llvm.vscale.i8 ()
198
+ %res = icmp ult i8 %vscale , 42
199
+ ret i1 %res
200
+ }
201
+
129
202
declare i8 @llvm.vscale.i8 ()
130
203
declare i16 @llvm.vscale.i16 ()
131
204
declare i32 @llvm.vscale.i32 ()
0 commit comments