[llvm] 9d1071e - [NFC][Test][PowerPC] Add more tests for 'and mask'
QingShan Zhang via llvm-commits
llvm-commits at lists.llvm.org
Sun Dec 22 23:00:08 PST 2019
Author: QingShan Zhang
Date: 2019-12-23T06:59:14Z
New Revision: 9d1071eac401830b07edf3e3ca91c40f1df112d7
URL: https://github.com/llvm/llvm-project/commit/9d1071eac401830b07edf3e3ca91c40f1df112d7
DIFF: https://github.com/llvm/llvm-project/commit/9d1071eac401830b07edf3e3ca91c40f1df112d7.diff
LOG: [NFC][Test][PowerPC] Add more tests for 'and mask'
Added:
llvm/test/CodeGen/PowerPC/and-mask.ll
Modified:
llvm/test/CodeGen/PowerPC/shift_mask.ll
Removed:
################################################################################
diff --git a/llvm/test/CodeGen/PowerPC/and-mask.ll b/llvm/test/CodeGen/PowerPC/and-mask.ll
new file mode 100644
index 000000000000..886657185301
--- /dev/null
+++ b/llvm/test/CodeGen/PowerPC/and-mask.ll
@@ -0,0 +1,91 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
+
+; mask 0xFFFFFFFE
+define i32 @test1(i32 %a) {
+; CHECK-LABEL: test1:
+; CHECK: # %bb.0:
+; CHECK-NEXT: lis 4, 32767
+; CHECK-NEXT: ori 4, 4, 65535
+; CHECK-NEXT: sldi 4, 4, 1
+; CHECK-NEXT: and 3, 3, 4
+; CHECK-NEXT: blr
+ %and = and i32 %a, -2
+ ret i32 %and
+}
+
+; mask 0xFFFFFFFFFFFFFFF9
+define i64 @test2(i64 %a) {
+; CHECK-LABEL: test2:
+; CHECK: # %bb.0:
+; CHECK-NEXT: li 4, -7
+; CHECK-NEXT: and 3, 3, 4
+; CHECK-NEXT: blr
+ %and = and i64 %a, -7
+ ret i64 %and
+}
+
+; mask: 0xFFFFFFC00000
+define i64 @test3(i64 %a) {
+; CHECK-LABEL: test3:
+; CHECK: # %bb.0:
+; CHECK-NEXT: lis 4, 1023
+; CHECK-NEXT: ori 4, 4, 65535
+; CHECK-NEXT: sldi 4, 4, 22
+; CHECK-NEXT: and 3, 3, 4
+; CHECK-NEXT: blr
+ %and = and i64 %a, 281474972516352
+ ret i64 %and
+}
+
+; mask: 0xC000000FF
+define i64 @test4(i64 %a) {
+; CHECK-LABEL: test4:
+; CHECK: # %bb.0:
+; CHECK-NEXT: li 4, 12
+; CHECK-NEXT: sldi 4, 4, 32
+; CHECK-NEXT: ori 4, 4, 255
+; CHECK-NEXT: and 3, 3, 4
+; CHECK-NEXT: blr
+ %and = and i64 %a, 51539607807
+ ret i64 %and
+}
+
+; mask: 0xFFC0FFFF
+define i64 @test5(i64 %a) {
+; CHECK-LABEL: test5:
+; CHECK: # %bb.0:
+; CHECK-NEXT: li 4, 0
+; CHECK-NEXT: oris 4, 4, 65472
+; CHECK-NEXT: ori 4, 4, 65535
+; CHECK-NEXT: and 3, 3, 4
+; CHECK-NEXT: blr
+ %and = and i64 %a, 4290838527
+ ret i64 %and
+}
+
+; mask: 0x3FC0FFE0
+define i64 @test6(i64 %a) {
+; CHECK-LABEL: test6:
+; CHECK: # %bb.0:
+; CHECK-NEXT: lis 4, 16320
+; CHECK-NEXT: ori 4, 4, 65504
+; CHECK-NEXT: and 3, 3, 4
+; CHECK-NEXT: blr
+ %and = and i64 %a, 1069613024
+ ret i64 %and
+}
+
+; mask: 0x3FC000001FFFF
+define i64 @test7(i64 %a) {
+; CHECK-LABEL: test7:
+; CHECK: # %bb.0:
+; CHECK-NEXT: li 4, -32767
+; CHECK-NEXT: sldi 4, 4, 32
+; CHECK-NEXT: oris 4, 4, 65024
+; CHECK-NEXT: rldicr 4, 4, 17, 63
+; CHECK-NEXT: and 3, 3, 4
+; CHECK-NEXT: blr
+ %and = and i64 %a, 1121501860462591
+ ret i64 %and
+}
diff --git a/llvm/test/CodeGen/PowerPC/shift_mask.ll b/llvm/test/CodeGen/PowerPC/shift_mask.ll
index ebd30926ca76..59382c615311 100644
--- a/llvm/test/CodeGen/PowerPC/shift_mask.ll
+++ b/llvm/test/CodeGen/PowerPC/shift_mask.ll
@@ -257,25 +257,3 @@ define <2 x i64> @test213(<2 x i64> %a, <2 x i64> %b) {
%ashr = ashr <2 x i64> %a, %rem
ret <2 x i64> %ashr
}
-
-define i32 @test214(i32 %a) {
-; CHECK-LABEL: test214:
-; CHECK: # %bb.0:
-; CHECK-NEXT: lis 4, 32767
-; CHECK-NEXT: ori 4, 4, 65535
-; CHECK-NEXT: sldi 4, 4, 1
-; CHECK-NEXT: and 3, 3, 4
-; CHECK-NEXT: blr
- %and = and i32 %a, -2
- ret i32 %and
-}
-
-define i64 @test215(i64 %a) {
-; CHECK-LABEL: test215:
-; CHECK: # %bb.0:
-; CHECK-NEXT: li 4, -7
-; CHECK-NEXT: and 3, 3, 4
-; CHECK-NEXT: blr
- %and = and i64 %a, -7
- ret i64 %and
-}
More information about the llvm-commits
mailing list