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