xref: /llvm-project/llvm/test/CodeGen/PowerPC/vector-sum-sat-bit-side-effect.ll (revision a3b57bca97c0bf56ee1db319a5ff633b516f927e)
1a81ba80eSChen Zheng; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2a81ba80eSChen Zheng; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
3a81ba80eSChen Zheng; RUN:   -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | FileCheck %s
4a81ba80eSChen Zheng; RUN: llc -verify-machineinstrs -mtriple=powerpc64-aix-xcoff \
5a81ba80eSChen Zheng; RUN:   -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | FileCheck %s
6a81ba80eSChen Zheng; RUN: llc -verify-machineinstrs -mtriple=powerpc-aix-xcoff \
7a81ba80eSChen Zheng; RUN:   -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | FileCheck %s
8a81ba80eSChen Zheng
9a81ba80eSChen Zhengdefine void @test1(<16 x i8> %0) {
10a81ba80eSChen Zheng; CHECK-LABEL: test1:
11a81ba80eSChen Zheng; CHECK:       # %bb.0: # %entry
12a81ba80eSChen Zheng; CHECK-NEXT:    blr
13a81ba80eSChen Zhengentry:
14a81ba80eSChen Zheng  %1 = tail call <4 x i32> @llvm.ppc.altivec.vsum4sbs(<16 x i8> %0, <4 x i32> zeroinitializer)
15a81ba80eSChen Zheng  ret void
16a81ba80eSChen Zheng}
17a81ba80eSChen Zheng
18a81ba80eSChen Zhengdefine void @test2(<8 x i16> %0) {
19a81ba80eSChen Zheng; CHECK-LABEL: test2:
20a81ba80eSChen Zheng; CHECK:       # %bb.0: # %entry
21a81ba80eSChen Zheng; CHECK-NEXT:    blr
22a81ba80eSChen Zhengentry:
23a81ba80eSChen Zheng  %1 = tail call <4 x i32> @llvm.ppc.altivec.vsum4shs(<8 x i16> %0, <4 x i32> zeroinitializer)
24a81ba80eSChen Zheng  ret void
25a81ba80eSChen Zheng}
26a81ba80eSChen Zheng
27a81ba80eSChen Zhengdefine void @test3(<16 x i8> %0) {
28a81ba80eSChen Zheng; CHECK-LABEL: test3:
29a81ba80eSChen Zheng; CHECK:       # %bb.0: # %entry
30a81ba80eSChen Zheng; CHECK-NEXT:    blr
31a81ba80eSChen Zhengentry:
32a81ba80eSChen Zheng  %1 = tail call <4 x i32> @llvm.ppc.altivec.vsum4ubs(<16 x i8> %0, <4 x i32> zeroinitializer)
33a81ba80eSChen Zheng  ret void
34a81ba80eSChen Zheng}
35a81ba80eSChen Zheng
36a81ba80eSChen Zhengdefine void @test4(<16 x i8> %0) {
37a81ba80eSChen Zheng; CHECK-LABEL: test4:
38a81ba80eSChen Zheng; CHECK:       # %bb.0: # %entry
39a81ba80eSChen Zheng; CHECK-NEXT:    vspltisw v3, 1
40a81ba80eSChen Zheng; CHECK-NEXT:    vsum4sbs v2, v2, v3
41a81ba80eSChen Zheng; CHECK-NEXT:    blr
42a81ba80eSChen Zhengentry:
43a81ba80eSChen Zheng  %1 = tail call <4 x i32> @llvm.ppc.altivec.vsum4sbs(<16 x i8> %0, <4 x i32> <i32 1, i32 1, i32 1, i32 1>)
44a81ba80eSChen Zheng  ret void
45a81ba80eSChen Zheng}
46a81ba80eSChen Zheng
47a81ba80eSChen Zhengdefine void @test5(<8 x i16> %0) {
48a81ba80eSChen Zheng; CHECK-LABEL: test5:
49a81ba80eSChen Zheng; CHECK:       # %bb.0: # %entry
50a81ba80eSChen Zheng; CHECK-NEXT:    vspltisw v3, 1
51a81ba80eSChen Zheng; CHECK-NEXT:    vsum4shs v2, v2, v3
52a81ba80eSChen Zheng; CHECK-NEXT:    blr
53a81ba80eSChen Zhengentry:
54a81ba80eSChen Zheng  %1 = tail call <4 x i32> @llvm.ppc.altivec.vsum4shs(<8 x i16> %0, <4 x i32> <i32 1, i32 1, i32 1, i32 1>)
55a81ba80eSChen Zheng  ret void
56a81ba80eSChen Zheng}
57a81ba80eSChen Zheng
58a81ba80eSChen Zhengdefine void @test6(<16 x i8> %0) {
59a81ba80eSChen Zheng; CHECK-LABEL: test6:
60a81ba80eSChen Zheng; CHECK:       # %bb.0: # %entry
61a81ba80eSChen Zheng; CHECK-NEXT:    vspltisw v3, 1
62a81ba80eSChen Zheng; CHECK-NEXT:    vsum4ubs v2, v2, v3
63a81ba80eSChen Zheng; CHECK-NEXT:    blr
64a81ba80eSChen Zhengentry:
65a81ba80eSChen Zheng  %1 = tail call <4 x i32> @llvm.ppc.altivec.vsum4ubs(<16 x i8> %0, <4 x i32> <i32 1, i32 1, i32 1, i32 1>)
66a81ba80eSChen Zheng  ret void
67a81ba80eSChen Zheng}
68a81ba80eSChen Zheng
69a81ba80eSChen Zhengdefine <4 x i32> @test7(<16 x i8> %0) {
70a81ba80eSChen Zheng; CHECK-LABEL: test7:
71a81ba80eSChen Zheng; CHECK:       # %bb.0: # %entry
72a81ba80eSChen Zheng; CHECK-NEXT:    xxlxor v3, v3, v3
73a81ba80eSChen Zheng; CHECK-NEXT:    vsum4sbs v2, v2, v3
74a81ba80eSChen Zheng; CHECK-NEXT:    blr
75a81ba80eSChen Zhengentry:
76a81ba80eSChen Zheng  %1 = tail call <4 x i32> @llvm.ppc.altivec.vsum4sbs(<16 x i8> %0, <4 x i32> zeroinitializer)
77a81ba80eSChen Zheng  ret <4 x i32> %1
78a81ba80eSChen Zheng}
79a81ba80eSChen Zheng
80a81ba80eSChen Zhengdefine <4 x i32> @test8(<8 x i16> %0) {
81a81ba80eSChen Zheng; CHECK-LABEL: test8:
82a81ba80eSChen Zheng; CHECK:       # %bb.0: # %entry
83a81ba80eSChen Zheng; CHECK-NEXT:    xxlxor v3, v3, v3
84a81ba80eSChen Zheng; CHECK-NEXT:    vsum4shs v2, v2, v3
85a81ba80eSChen Zheng; CHECK-NEXT:    blr
86a81ba80eSChen Zhengentry:
87a81ba80eSChen Zheng  %1 = tail call <4 x i32> @llvm.ppc.altivec.vsum4shs(<8 x i16> %0, <4 x i32> zeroinitializer)
88a81ba80eSChen Zheng  ret <4 x i32> %1
89a81ba80eSChen Zheng}
90a81ba80eSChen Zheng
91a81ba80eSChen Zhengdefine <4 x i32> @test9(<16 x i8> %0) {
92a81ba80eSChen Zheng; CHECK-LABEL: test9:
93a81ba80eSChen Zheng; CHECK:       # %bb.0: # %entry
94a81ba80eSChen Zheng; CHECK-NEXT:    xxlxor v3, v3, v3
95a81ba80eSChen Zheng; CHECK-NEXT:    vsum4ubs v2, v2, v3
96a81ba80eSChen Zheng; CHECK-NEXT:    blr
97a81ba80eSChen Zhengentry:
98a81ba80eSChen Zheng  %1 = tail call <4 x i32> @llvm.ppc.altivec.vsum4ubs(<16 x i8> %0, <4 x i32> zeroinitializer)
99a81ba80eSChen Zheng  ret <4 x i32> %1
100a81ba80eSChen Zheng}
101a81ba80eSChen Zheng
102a81ba80eSChen Zhengdefine <4 x i32> @test10(<16 x i8> %0, <16 x i8> %1) {
103a81ba80eSChen Zheng; CHECK-LABEL: test10:
104a81ba80eSChen Zheng; CHECK:       # %bb.0: # %entry
105*a3b57bcaSChen Zheng; CHECK-NEXT:    xxlxor v3, v3, v3
106*a3b57bcaSChen Zheng; CHECK-NEXT:    vsum4sbs v2, v2, v3
107a81ba80eSChen Zheng; CHECK-NEXT:    blr
108a81ba80eSChen Zhengentry:
109a81ba80eSChen Zheng  %2 = tail call <4 x i32> @llvm.ppc.altivec.vsum4sbs(<16 x i8> %0, <4 x i32> zeroinitializer)
110a81ba80eSChen Zheng  %3 = tail call <4 x i32> @llvm.ppc.altivec.vsum4sbs(<16 x i8> %1, <4 x i32> zeroinitializer)
111a81ba80eSChen Zheng  ret <4 x i32> %2
112a81ba80eSChen Zheng}
113a81ba80eSChen Zheng
114a81ba80eSChen Zhengdefine <4 x i32> @test11(<8 x i16> %0, <8 x i16> %1) {
115a81ba80eSChen Zheng; CHECK-LABEL: test11:
116a81ba80eSChen Zheng; CHECK:       # %bb.0: # %entry
117*a3b57bcaSChen Zheng; CHECK-NEXT:    xxlxor v3, v3, v3
118*a3b57bcaSChen Zheng; CHECK-NEXT:    vsum4shs v2, v2, v3
119a81ba80eSChen Zheng; CHECK-NEXT:    blr
120a81ba80eSChen Zhengentry:
121a81ba80eSChen Zheng  %2 = tail call <4 x i32> @llvm.ppc.altivec.vsum4shs(<8 x i16> %0, <4 x i32> zeroinitializer)
122a81ba80eSChen Zheng  %3 = tail call <4 x i32> @llvm.ppc.altivec.vsum4shs(<8 x i16> %1, <4 x i32> zeroinitializer)
123a81ba80eSChen Zheng  ret <4 x i32> %2
124a81ba80eSChen Zheng}
125a81ba80eSChen Zheng
126a81ba80eSChen Zhengdefine <4 x i32> @test12(<16 x i8> %0, <16 x i8> %1) {
127a81ba80eSChen Zheng; CHECK-LABEL: test12:
128a81ba80eSChen Zheng; CHECK:       # %bb.0: # %entry
129*a3b57bcaSChen Zheng; CHECK-NEXT:    xxlxor v3, v3, v3
130*a3b57bcaSChen Zheng; CHECK-NEXT:    vsum4ubs v2, v2, v3
131a81ba80eSChen Zheng; CHECK-NEXT:    blr
132a81ba80eSChen Zhengentry:
133a81ba80eSChen Zheng  %2 = tail call <4 x i32> @llvm.ppc.altivec.vsum4ubs(<16 x i8> %0, <4 x i32> zeroinitializer)
134a81ba80eSChen Zheng  %3 = tail call <4 x i32> @llvm.ppc.altivec.vsum4ubs(<16 x i8> %1, <4 x i32> zeroinitializer)
135a81ba80eSChen Zheng  ret <4 x i32> %2
136a81ba80eSChen Zheng}
137a81ba80eSChen Zheng
138a81ba80eSChen Zhengdeclare <4 x i32> @llvm.ppc.altivec.vsum4sbs(<16 x i8>, <4 x i32>)
139a81ba80eSChen Zhengdeclare <4 x i32> @llvm.ppc.altivec.vsum4shs(<8 x i16>, <4 x i32>)
140a81ba80eSChen Zhengdeclare <4 x i32> @llvm.ppc.altivec.vsum4ubs(<16 x i8>, <4 x i32>)
141