summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/SystemZ/not-01.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/SystemZ/not-01.ll')
-rw-r--r--llvm/test/CodeGen/SystemZ/not-01.ll26
1 files changed, 26 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/SystemZ/not-01.ll b/llvm/test/CodeGen/SystemZ/not-01.ll
index be2a5a88d73..62248d6a1eb 100644
--- a/llvm/test/CodeGen/SystemZ/not-01.ll
+++ b/llvm/test/CodeGen/SystemZ/not-01.ll
@@ -124,3 +124,29 @@ define i64 @f12(i64 %a) {
ret i64 %ret
}
+; NXOR 32-bit (alternate match).
+define i32 @f13(i32 %a) {
+; CHECK-LABEL: f13:
+; CHECK: lhi [[REG:%r[0-5]]], -256
+; CHECK: nxrk %r2, %r2, [[REG]]
+; CHECK: br %r14
+ ; Use an opaque const so the pattern doesn't get optimized away early.
+ %const = bitcast i32 -256 to i32
+ %neg = xor i32 %a, -1
+ %ret = xor i32 %neg, %const
+ ret i32 %ret
+}
+
+; NXOR 64-bit (alternate match).
+define i64 @f14(i64 %a) {
+; CHECK-LABEL: f14:
+; CHECK: lghi [[REG:%r[0-5]]], -256
+; CHECK: nxgrk %r2, %r2, [[REG]]
+; CHECK: br %r14
+ ; Use an opaque const so the pattern doesn't get optimized away early.
+ %const = bitcast i64 -256 to i64
+ %neg = xor i64 %a, -1
+ %ret = xor i64 %neg, %const
+ ret i64 %ret
+}
+
OpenPOWER on IntegriCloud