[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