[llvm] 16d9488 - [SCEV] Add additional tests for vscale (NFC)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 16 03:37:24 PDT 2023
Author: Nikita Popov
Date: 2023-03-16T11:05:49+01:00
New Revision: 16d9488ccac668dfa9955d38f4e406c484d15032
URL: https://github.com/llvm/llvm-project/commit/16d9488ccac668dfa9955d38f4e406c484d15032
DIFF: https://github.com/llvm/llvm-project/commit/16d9488ccac668dfa9955d38f4e406c484d15032.diff
LOG: [SCEV] Add additional tests for vscale (NFC)
Added:
Modified:
llvm/test/Analysis/ScalarEvolution/scalable-vector.ll
Removed:
################################################################################
diff --git a/llvm/test/Analysis/ScalarEvolution/scalable-vector.ll b/llvm/test/Analysis/ScalarEvolution/scalable-vector.ll
index b5bd724cb269..3bc709ef026d 100644
--- a/llvm/test/Analysis/ScalarEvolution/scalable-vector.ll
+++ b/llvm/test/Analysis/ScalarEvolution/scalable-vector.ll
@@ -1,16 +1,76 @@
; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
; RUN: opt "-passes=print<scalar-evolution>" -disable-output < %s 2>&1 | FileCheck %s
-define void @a(ptr %p) {
-; CHECK-LABEL: 'a'
-; CHECK-NEXT: Classifying expressions for: @a
+define void @vscale_gep(ptr %p) {
+; CHECK-LABEL: 'vscale_gep'
+; CHECK-NEXT: Classifying expressions for: @vscale_gep
; CHECK-NEXT: %1 = getelementptr <vscale x 4 x i32>, ptr null, i32 3
; CHECK-NEXT: --> ((48 * vscale) + null) U: [0,-15) S: [-9223372036854775808,9223372036854775793)
; CHECK-NEXT: %2 = getelementptr <vscale x 1 x i64>, ptr %p, i32 1
; CHECK-NEXT: --> ((8 * vscale) + %p) U: full-set S: full-set
-; CHECK-NEXT: Determining loop execution counts for: @a
+; CHECK-NEXT: Determining loop execution counts for: @vscale_gep
;
getelementptr <vscale x 4 x i32>, ptr null, i32 3
getelementptr <vscale x 1 x i64>, ptr %p, i32 1
ret void
}
+
+define void @vscale_gep_range(ptr %p) vscale_range(2, 16) {
+; CHECK-LABEL: 'vscale_gep_range'
+; CHECK-NEXT: Classifying expressions for: @vscale_gep_range
+; CHECK-NEXT: %1 = getelementptr <vscale x 4 x i32>, ptr null, i32 3
+; CHECK-NEXT: --> ((48 * vscale) + null) U: [0,-15) S: [-9223372036854775808,9223372036854775793)
+; CHECK-NEXT: %2 = getelementptr <vscale x 1 x i64>, ptr %p, i32 1
+; CHECK-NEXT: --> ((8 * vscale) + %p) U: full-set S: full-set
+; CHECK-NEXT: Determining loop execution counts for: @vscale_gep_range
+;
+ getelementptr <vscale x 4 x i32>, ptr null, i32 3
+ getelementptr <vscale x 1 x i64>, ptr %p, i32 1
+ ret void
+}
+
+define i64 @vscale_no_range() {
+; CHECK-LABEL: 'vscale_no_range'
+; CHECK-NEXT: Classifying expressions for: @vscale_no_range
+; CHECK-NEXT: %vscale = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: --> %vscale U: [1,0) S: [1,0)
+; CHECK-NEXT: Determining loop execution counts for: @vscale_no_range
+;
+ %vscale = call i64 @llvm.vscale.i64()
+ ret i64 %vscale
+}
+
+define i64 @vscale_min_max_range() vscale_range(2, 16) {
+; CHECK-LABEL: 'vscale_min_max_range'
+; CHECK-NEXT: Classifying expressions for: @vscale_min_max_range
+; CHECK-NEXT: %vscale = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: --> %vscale U: [1,32) S: [1,32)
+; CHECK-NEXT: Determining loop execution counts for: @vscale_min_max_range
+;
+ %vscale = call i64 @llvm.vscale.i64()
+ ret i64 %vscale
+}
+
+define i64 @vscale_min_range() vscale_range(2, 0) {
+; CHECK-LABEL: 'vscale_min_range'
+; CHECK-NEXT: Classifying expressions for: @vscale_min_range
+; CHECK-NEXT: %vscale = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: --> %vscale U: [1,0) S: [1,0)
+; CHECK-NEXT: Determining loop execution counts for: @vscale_min_range
+;
+ %vscale = call i64 @llvm.vscale.i64()
+ ret i64 %vscale
+}
+
+define i64 @vscale_exact_range() vscale_range(2) {
+; CHECK-LABEL: 'vscale_exact_range'
+; CHECK-NEXT: Classifying expressions for: @vscale_exact_range
+; CHECK-NEXT: %vscale = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: --> %vscale U: [2,3) S: [2,3)
+; CHECK-NEXT: Determining loop execution counts for: @vscale_exact_range
+;
+ %vscale = call i64 @llvm.vscale.i64()
+ ret i64 %vscale
+}
+
+declare i64 @llvm.vscale.i64()
More information about the llvm-commits
mailing list