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