[llvm] d625439 - [DemandedBits] Add tests for shl.

Florian Hahn via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 6 06:33:28 PDT 2023


Author: Florian Hahn
Date: 2023-07-06T14:33:12+01:00
New Revision: d6254396197267f3fe939f1613d22479f4de5440

URL: https://github.com/llvm/llvm-project/commit/d6254396197267f3fe939f1613d22479f4de5440
DIFF: https://github.com/llvm/llvm-project/commit/d6254396197267f3fe939f1613d22479f4de5440.diff

LOG: [DemandedBits] Add tests for shl.

Add test coverage for demanded bit analysis of shl.

Added: 
    llvm/test/Analysis/DemandedBits/shl.ll

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/llvm/test/Analysis/DemandedBits/shl.ll b/llvm/test/Analysis/DemandedBits/shl.ll
new file mode 100644
index 00000000000000..e41f5f41077353
--- /dev/null
+++ b/llvm/test/Analysis/DemandedBits/shl.ll
@@ -0,0 +1,66 @@
+; RUN: opt -S -disable-output -passes="print<demanded-bits>" < %s 2>&1 | FileCheck %s
+
+define i8 @test_shl_const_amount_4(i32 %a) {
+; CHECK-LABEL: 'test_shl_const_amount_4'
+; CHECK-DAG:  DemandedBits: 0xff for %shl = shl i32 %a, 4
+; CHECK-DAG:  DemandedBits: 0xf for %a in %shl = shl i32 %a, 4
+; CHECK-DAG:  DemandedBits: 0xffffffff for 4 in %shl = shl i32 %a, 4
+; CHECK-DAG:  DemandedBits: 0xff for %shl.t = trunc i32 %shl to i8
+; CHECK-DAG:  DemandedBits: 0xff for %shl in %shl.t = trunc i32 %shl to i8
+;
+  %shl = shl i32 %a, 4
+  %shl.t = trunc i32 %shl to i8
+  ret i8 %shl.t
+}
+
+define i8 @test_shl_const_amount_5(i32 %a) {
+; CHECK-LABEL: 'test_shl_const_amount_5'
+; CHECK-DAG:  DemandedBits: 0xff for %shl = shl i32 %a, 5
+; CHECK-DAG:  DemandedBits: 0x7 for %a in %shl = shl i32 %a, 5
+; CHECK-DAG:  DemandedBits: 0xffffffff for 5 in %shl = shl i32 %a, 5
+; CHECK-DAG:  DemandedBits: 0xff for %shl.t = trunc i32 %shl to i8
+; CHECK-DAG:  DemandedBits: 0xff for %shl in %shl.t = trunc i32 %shl to i8
+;
+  %shl = shl i32 %a, 5
+  %shl.t = trunc i32 %shl to i8
+  ret i8 %shl.t
+}
+
+define i8 @test_shl_const_amount_8(i32 %a) {
+; CHECK-LABEL: 'test_shl_const_amount_8'
+; CHECK-DAG:  DemandedBits: 0xff for %shl.t = trunc i32 %shl to i8
+; CHECK-DAG:  DemandedBits: 0xff for %shl in %shl.t = trunc i32 %shl to i8
+; CHECK-DAG:  DemandedBits: 0xff for %shl = shl i32 %a, 8
+; CHECK-DAG:  DemandedBits: 0x0 for %a in %shl = shl i32 %a, 8
+; CHECK-DAG:  DemandedBits: 0xffffffff for 8 in %shl = shl i32 %a, 8
+;
+  %shl = shl i32 %a, 8
+  %shl.t = trunc i32 %shl to i8
+  ret i8 %shl.t
+}
+
+define i8 @test_shl_const_amount_9(i32 %a) {
+; CHECK-LABEL: 'test_shl_const_amount_9'
+; CHECK-DAG:  DemandedBits: 0xff for %shl = shl i32 %a, 9
+; CHECK-DAG:  DemandedBits: 0x0 for %a in %shl = shl i32 %a, 9
+; CHECK-DAG:  DemandedBits: 0xffffffff for 9 in %shl = shl i32 %a, 9
+; CHECK-DAG:  DemandedBits: 0xff for %shl.t = trunc i32 %shl to i8
+; CHECK-DAG:  DemandedBits: 0xff for %shl in %shl.t = trunc i32 %shl to i8
+;
+  %shl = shl i32 %a, 9
+  %shl.t = trunc i32 %shl to i8
+  ret i8 %shl.t
+}
+
+define i8 @test_shl(i32 %a, i32 %b) {
+; CHECK-LABEL: 'test_shl'
+; CHECK-DAG:  DemandedBits: 0xff for %shl.t = trunc i32 %shl to i8
+; CHECK-DAG:  DemandedBits: 0xff for %shl in %shl.t = trunc i32 %shl to i8
+; CHECK-DAG:  DemandedBits: 0xff for %shl = shl i32 %a, %b
+; CHECK-DAG:  DemandedBits: 0xffffffff for %a in %shl = shl i32 %a, %b
+; CHECK-DAG:  DemandedBits: 0xffffffff for %b in %shl = shl i32 %a, %b
+;
+  %shl = shl i32 %a, %b
+  %shl.t = trunc i32 %shl to i8
+  ret i8 %shl.t
+}


        


More information about the llvm-commits mailing list