xref: /llvm-project/llvm/test/Transforms/InstCombine/pr83947.ll (revision deab451e7a7f2dff42097049274637052c87eabd)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4
2; RUN: opt -S -passes=instcombine < %s | FileCheck %s
3
4@c = global i32 0, align 4
5@b = global i32 0, align 4
6
7define void @masked_scatter1() {
8; CHECK-LABEL: define void @masked_scatter1() {
9; CHECK-NEXT:    call void @llvm.masked.scatter.nxv4i32.nxv4p0(<vscale x 4 x i32> zeroinitializer, <vscale x 4 x ptr> shufflevector (<vscale x 4 x ptr> insertelement (<vscale x 4 x ptr> poison, ptr @c, i64 0), <vscale x 4 x ptr> poison, <vscale x 4 x i32> zeroinitializer), i32 4, <vscale x 4 x i1> shufflevector (<vscale x 4 x i1> insertelement (<vscale x 4 x i1> poison, i1 ptrtoint (ptr @b to i1), i64 0), <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer))
10; CHECK-NEXT:    ret void
11;
12  call void @llvm.masked.scatter.nxv4i32.nxv4p0(<vscale x 4 x i32> zeroinitializer, <vscale x 4 x ptr> splat (ptr @c), i32 4, <vscale x 4 x i1> splat (i1 ptrtoint (ptr @b to i1)))
13  ret void
14}
15
16define void @masked_scatter2() {
17; CHECK-LABEL: define void @masked_scatter2() {
18; CHECK-NEXT:    store i32 0, ptr @c, align 4
19; CHECK-NEXT:    ret void
20;
21  call void @llvm.masked.scatter.v2i32.v2p0(<2 x i32> zeroinitializer, <2 x ptr> splat (ptr @c), i32 4, <2 x i1> splat (i1 true))
22  ret void
23}
24
25define void @masked_scatter3() {
26; CHECK-LABEL: define void @masked_scatter3() {
27; CHECK-NEXT:    store i32 0, ptr @c, align 4
28; CHECK-NEXT:    ret void
29;
30  call void @llvm.masked.scatter.v2i32.v2p0(<2 x i32> zeroinitializer, <2 x ptr> splat (ptr @c), i32 4, <2 x i1> undef)
31  ret void
32}
33
34define void @masked_scatter4() {
35; CHECK-LABEL: define void @masked_scatter4() {
36; CHECK-NEXT:    ret void
37;
38  call void @llvm.masked.scatter.v2i32.v2p0(<2 x i32> zeroinitializer, <2 x ptr> splat (ptr @c), i32 4, <2 x i1> splat (i1 false))
39  ret void
40}
41
42define void @masked_scatter5() {
43; CHECK-LABEL: define void @masked_scatter5() {
44; CHECK-NEXT:    store i32 0, ptr @c, align 4
45; CHECK-NEXT:    ret void
46;
47  call void @llvm.masked.scatter.v2i32.v2p0(<2 x i32> zeroinitializer, <2 x ptr> splat (ptr @c), i32 4, <2 x i1> <i1 true, i1 false>)
48  ret void
49}
50
51define void @masked_scatter6() {
52; CHECK-LABEL: define void @masked_scatter6() {
53; CHECK-NEXT:    store i32 0, ptr @c, align 4
54; CHECK-NEXT:    ret void
55;
56  call void @llvm.masked.scatter.v2i32.v2p0(<2 x i32> zeroinitializer, <2 x ptr> splat (ptr @c), i32 4, <2 x i1> <i1 undef, i1 false>)
57  ret void
58}
59
60define void @masked_scatter7() {
61; CHECK-LABEL: define void @masked_scatter7() {
62; CHECK-NEXT:    call void @llvm.masked.scatter.v2i32.v2p0(<2 x i32> zeroinitializer, <2 x ptr> <ptr @c, ptr @c>, i32 4, <2 x i1> <i1 ptrtoint (ptr @b to i1), i1 ptrtoint (ptr @b to i1)>)
63; CHECK-NEXT:    ret void
64;
65  call void @llvm.masked.scatter.v2i32.v2p0(<2 x i32> zeroinitializer, <2 x ptr> splat (ptr @c), i32 4, <2 x i1> splat (i1 ptrtoint (ptr @b to i1)))
66  ret void
67}
68