[llvm] d4da4b8 - [NFC] Added tests for D109283

Dávid Bolvanský via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 6 10:40:59 PDT 2021


Author: Dávid Bolvanský
Date: 2021-09-06T19:40:52+02:00
New Revision: d4da4b80258c56f5f88f2ecbfbf6315c2842e76c

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

LOG: [NFC] Added tests for D109283

Added: 
    

Modified: 
    llvm/test/Transforms/InstCombine/icmp-rotate.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/InstCombine/icmp-rotate.ll b/llvm/test/Transforms/InstCombine/icmp-rotate.ll
index 30e3e6aa2d1ad..caf8cf8246d6f 100644
--- a/llvm/test/Transforms/InstCombine/icmp-rotate.ll
+++ b/llvm/test/Transforms/InstCombine/icmp-rotate.ll
@@ -105,6 +105,86 @@ define <2 x i1> @ror_eq_vec(<2 x i5> %x, <2 x i5> %y, <2 x i5> %z) {
   ret <2 x i1> %r
 }
 
+
+define i1 @rol_eq_cst(i8 %x) {
+; CHECK-LABEL: @rol_eq_cst(
+; CHECK-NEXT:    [[F:%.*]] = tail call i8 @llvm.fshl.i8(i8 [[X:%.*]], i8 [[X]], i8 3)
+; CHECK-NEXT:    [[R:%.*]] = icmp eq i8 [[F]], 2
+; CHECK-NEXT:    ret i1 [[R]]
+;
+  %f = tail call i8 @llvm.fshl.i8(i8 %x, i8 %x, i8 3)
+  %r = icmp eq i8 %f, 2
+  ret i1 %r
+}
+
+define i1 @rol_ne_cst(i8 %x) {
+; CHECK-LABEL: @rol_ne_cst(
+; CHECK-NEXT:    [[F:%.*]] = tail call i8 @llvm.fshl.i8(i8 [[X:%.*]], i8 [[X]], i8 3)
+; CHECK-NEXT:    [[R:%.*]] = icmp ne i8 [[F]], 2
+; CHECK-NEXT:    ret i1 [[R]]
+;
+  %f = tail call i8 @llvm.fshl.i8(i8 %x, i8 %x, i8 3)
+  %r = icmp ne i8 %f, 2
+  ret i1 %r
+}
+
+define i1 @rol_eq_cst_use(i8 %x) {
+; CHECK-LABEL: @rol_eq_cst_use(
+; CHECK-NEXT:    [[F:%.*]] = tail call i8 @llvm.fshl.i8(i8 [[X:%.*]], i8 [[X]], i8 3)
+; CHECK-NEXT:    call void @use(i8 [[F]])
+; CHECK-NEXT:    [[R:%.*]] = icmp eq i8 [[F]], 2
+; CHECK-NEXT:    ret i1 [[R]]
+;
+  %f = tail call i8 @llvm.fshl.i8(i8 %x, i8 %x, i8 3)
+  call void @use(i8 %f)
+  %r = icmp eq i8 %f, 2
+  ret i1 %r
+}
+
+define i1 @ror_eq_cst(i8 %x) {
+; CHECK-LABEL: @ror_eq_cst(
+; CHECK-NEXT:    [[F:%.*]] = call i8 @llvm.fshl.i8(i8 [[X:%.*]], i8 [[X]], i8 6)
+; CHECK-NEXT:    [[R:%.*]] = icmp eq i8 [[F]], 3
+; CHECK-NEXT:    ret i1 [[R]]
+;
+  %f = tail call i8 @llvm.fshr.i8(i8 %x, i8 %x, i8 2)
+  %r = icmp eq i8 %f, 3
+  ret i1 %r
+}
+
+define i1 @ror_ne_cst(i8 %x) {
+; CHECK-LABEL: @ror_ne_cst(
+; CHECK-NEXT:    [[F:%.*]] = call i8 @llvm.fshl.i8(i8 [[X:%.*]], i8 [[X]], i8 6)
+; CHECK-NEXT:    [[R:%.*]] = icmp ne i8 [[F]], 3
+; CHECK-NEXT:    ret i1 [[R]]
+;
+  %f = tail call i8 @llvm.fshr.i8(i8 %x, i8 %x, i8 2)
+  %r = icmp ne i8 %f, 3
+  ret i1 %r
+}
+
+define <2 x i1> @rol_eq_cst_vec(<2 x i5> %x) {
+; CHECK-LABEL: @rol_eq_cst_vec(
+; CHECK-NEXT:    [[F:%.*]] = tail call <2 x i5> @llvm.fshl.v2i5(<2 x i5> [[X:%.*]], <2 x i5> [[X]], <2 x i5> <i5 3, i5 3>)
+; CHECK-NEXT:    [[R:%.*]] = icmp eq <2 x i5> [[F]], <i5 2, i5 2>
+; CHECK-NEXT:    ret <2 x i1> [[R]]
+;
+  %f = tail call <2 x i5> @llvm.fshl.v2i5(<2 x i5> %x, <2 x i5> %x, <2 x i5> <i5 3, i5 3>)
+  %r = icmp eq <2 x i5> %f, <i5 2, i5 2>
+  ret <2 x i1> %r
+}
+
+define <2 x i1> @rol_eq_cst_undef(<2 x i5> %x) {
+; CHECK-LABEL: @rol_eq_cst_undef(
+; CHECK-NEXT:    [[F:%.*]] = tail call <2 x i5> @llvm.fshl.v2i5(<2 x i5> [[X:%.*]], <2 x i5> [[X]], <2 x i5> <i5 3, i5 3>)
+; CHECK-NEXT:    [[R:%.*]] = icmp eq <2 x i5> [[F]], <i5 2, i5 undef>
+; CHECK-NEXT:    ret <2 x i1> [[R]]
+;
+  %f = tail call <2 x i5> @llvm.fshl.v2i5(<2 x i5> %x, <2 x i5> %x, <2 x i5> <i5 3, i5 3>)
+  %r = icmp eq <2 x i5> %f, <i5 2, i5 undef>
+  ret <2 x i1> %r
+}
+
 ; negative test - not a rotate
 define i1 @no_rotate(i8 %x, i8 %y, i8 %z) {
 ; CHECK-LABEL: @no_rotate(
@@ -146,3 +226,15 @@ define i1 @amounts_mismatch(i8 %x, i8 %y, i8 %z, i8 %w) {
   %r = icmp eq i8 %f, %f2
   ret i1 %r
 }
+
+; negative test - wrong predicate
+define i1 @wrong_pred2(i8 %x) {
+; CHECK-LABEL: @wrong_pred2(
+; CHECK-NEXT:    [[F:%.*]] = call i8 @llvm.fshl.i8(i8 [[X:%.*]], i8 [[X]], i8 5)
+; CHECK-NEXT:    [[R:%.*]] = icmp ugt i8 [[F]], 2
+; CHECK-NEXT:    ret i1 [[R]]
+;
+  %f = tail call i8 @llvm.fshr.i8(i8 %x, i8 %x, i8 27)
+  %r = icmp ugt i8 %f, 2
+  ret i1 %r
+}


        


More information about the llvm-commits mailing list