[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