[PATCH] D154005: [InstCombine] Add tests for folding `@llvm.ptrmask` with itself; NFC

Noah Goldstein via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 27 15:43:29 PDT 2023


This revision was automatically updated to reflect the committed changes.
Closed by commit rGaa88df8521e3: [InstCombine] Add tests for folding `@llvm.ptrmask` with itself; NFC (authored by goldstein.w.n).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D154005/new/

https://reviews.llvm.org/D154005

Files:
  llvm/test/Transforms/InstCombine/consecutive-ptrmask.ll


Index: llvm/test/Transforms/InstCombine/consecutive-ptrmask.ll
===================================================================
--- /dev/null
+++ llvm/test/Transforms/InstCombine/consecutive-ptrmask.ll
@@ -0,0 +1,67 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2
+; RUN: opt < %s -passes=instcombine -S | FileCheck %s
+
+declare ptr @llvm.ptrmask.p0.i64(ptr, i64)
+declare ptr @llvm.ptrmask.p0.i32(ptr, i32)
+declare void @use.ptr(ptr)
+define ptr @fold_2x(ptr %p, i64 %m0, i64 %m1) {
+; CHECK-LABEL: define ptr @fold_2x
+; CHECK-SAME: (ptr [[P:%.*]], i64 [[M0:%.*]], i64 [[M1:%.*]]) {
+; CHECK-NEXT:    [[P0:%.*]] = call ptr @llvm.ptrmask.p0.i64(ptr [[P]], i64 [[M0]])
+; CHECK-NEXT:    [[P1:%.*]] = call ptr @llvm.ptrmask.p0.i64(ptr [[P0]], i64 [[M1]])
+; CHECK-NEXT:    ret ptr [[P1]]
+;
+  %p0 = call ptr @llvm.ptrmask.p0.i64(ptr %p, i64 %m0)
+  %p1 = call ptr @llvm.ptrmask.p0.i64(ptr %p0, i64 %m1)
+  ret ptr %p1
+}
+
+define ptr @fold_2x_i32(ptr %p, i32 %m0, i32 %m1) {
+; CHECK-LABEL: define ptr @fold_2x_i32
+; CHECK-SAME: (ptr [[P:%.*]], i32 [[M0:%.*]], i32 [[M1:%.*]]) {
+; CHECK-NEXT:    [[P0:%.*]] = call ptr @llvm.ptrmask.p0.i32(ptr [[P]], i32 [[M0]])
+; CHECK-NEXT:    [[P1:%.*]] = call ptr @llvm.ptrmask.p0.i32(ptr [[P0]], i32 [[M1]])
+; CHECK-NEXT:    ret ptr [[P1]]
+;
+  %p0 = call ptr @llvm.ptrmask.p0.i32(ptr %p, i32 %m0)
+  %p1 = call ptr @llvm.ptrmask.p0.i32(ptr %p0, i32 %m1)
+  ret ptr %p1
+}
+
+define ptr @fold_2x_fail_multiuse(ptr %p, i64 %m0, i64 %m1) {
+; CHECK-LABEL: define ptr @fold_2x_fail_multiuse
+; CHECK-SAME: (ptr [[P:%.*]], i64 [[M0:%.*]], i64 [[M1:%.*]]) {
+; CHECK-NEXT:    [[P0:%.*]] = call ptr @llvm.ptrmask.p0.i64(ptr [[P]], i64 [[M0]])
+; CHECK-NEXT:    call void @use.ptr(ptr [[P0]])
+; CHECK-NEXT:    [[P1:%.*]] = call ptr @llvm.ptrmask.p0.i64(ptr [[P0]], i64 [[M1]])
+; CHECK-NEXT:    ret ptr [[P1]]
+;
+  %p0 = call ptr @llvm.ptrmask.p0.i64(ptr %p, i64 %m0)
+  call void @use.ptr(ptr %p0)
+  %p1 = call ptr @llvm.ptrmask.p0.i64(ptr %p0, i64 %m1)
+  ret ptr %p1
+}
+
+define ptr @fold_2x_fail_type_mismatch(ptr %p, i32 %m0, i64 %m1) {
+; CHECK-LABEL: define ptr @fold_2x_fail_type_mismatch
+; CHECK-SAME: (ptr [[P:%.*]], i32 [[M0:%.*]], i64 [[M1:%.*]]) {
+; CHECK-NEXT:    [[P0:%.*]] = call ptr @llvm.ptrmask.p0.i32(ptr [[P]], i32 [[M0]])
+; CHECK-NEXT:    [[P1:%.*]] = call ptr @llvm.ptrmask.p0.i64(ptr [[P0]], i64 [[M1]])
+; CHECK-NEXT:    ret ptr [[P1]]
+;
+  %p0 = call ptr @llvm.ptrmask.p0.i32(ptr %p, i32 %m0)
+  %p1 = call ptr @llvm.ptrmask.p0.i64(ptr %p0, i64 %m1)
+  ret ptr %p1
+}
+
+define ptr @fold_2x_fail_type_mismatch2(ptr %p, i64 %m0, i32 %m1) {
+; CHECK-LABEL: define ptr @fold_2x_fail_type_mismatch2
+; CHECK-SAME: (ptr [[P:%.*]], i64 [[M0:%.*]], i32 [[M1:%.*]]) {
+; CHECK-NEXT:    [[P0:%.*]] = call ptr @llvm.ptrmask.p0.i64(ptr [[P]], i64 [[M0]])
+; CHECK-NEXT:    [[P1:%.*]] = call ptr @llvm.ptrmask.p0.i32(ptr [[P0]], i32 [[M1]])
+; CHECK-NEXT:    ret ptr [[P1]]
+;
+  %p0 = call ptr @llvm.ptrmask.p0.i64(ptr %p, i64 %m0)
+  %p1 = call ptr @llvm.ptrmask.p0.i32(ptr %p0, i32 %m1)
+  ret ptr %p1
+}


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D154005.544966.patch
Type: text/x-patch
Size: 3124 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230727/aa98e415/attachment.bin>


More information about the llvm-commits mailing list