[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / Hexagon / dhry_proc8.ll
blob53ea59de92216faeda5cbdb2fa9d4364ac827af0
1 ; RUN: llc -march=hexagon -O3 < %s | FileCheck %s
4 ; Test that we generate no more than 7 packets in f0.
6 ; CHECK: f0:
7 ; CHECK: {
8 ; CHECK: {
9 ; CHECK: {
10 ; CHECK: {
11 ; CHECK: {
12 ; CHECK: {
13 ; CHECK: {
14 ; CHECK-NOT: {
16 @g0 = external global i32
18 ; Function Attrs: nounwind
19 define i32 @f0(i32* nocapture %a0, [50 x i32]* nocapture %a1, i32 %a2, i32 %a3) #0 {
20 b0:
21   %v0 = add nsw i32 %a2, 5
22   %v1 = getelementptr inbounds i32, i32* %a0, i32 %v0
23   store i32 %a3, i32* %v1, align 4, !tbaa !0
24   %v2 = add nsw i32 %a2, 6
25   %v3 = getelementptr inbounds i32, i32* %a0, i32 %v2
26   store i32 %a3, i32* %v3, align 4, !tbaa !0
27   %v4 = add nsw i32 %a2, 35
28   %v5 = getelementptr inbounds i32, i32* %a0, i32 %v4
29   store i32 %v0, i32* %v5, align 4, !tbaa !0
30   %v6 = getelementptr inbounds [50 x i32], [50 x i32]* %a1, i32 %v0, i32 %v0
31   store i32 %v0, i32* %v6, align 4, !tbaa !0
32   %v7 = add nsw i32 %a2, 6
33   %v8 = getelementptr inbounds [50 x i32], [50 x i32]* %a1, i32 %v0, i32 %v7
34   store i32 %v0, i32* %v8, align 4, !tbaa !0
35   %v9 = add nsw i32 %a2, 4
36   %v10 = getelementptr inbounds [50 x i32], [50 x i32]* %a1, i32 %v0, i32 %v9
37   %v11 = load i32, i32* %v10, align 4, !tbaa !0
38   %v12 = add nsw i32 %v11, 1
39   store i32 %v12, i32* %v10, align 4, !tbaa !0
40   %v13 = load i32, i32* %v1, align 4, !tbaa !0
41   %v14 = add nsw i32 %a2, 25
42   %v15 = getelementptr inbounds [50 x i32], [50 x i32]* %a1, i32 %v14, i32 %v0
43   store i32 %v13, i32* %v15, align 4, !tbaa !0
44   store i32 5, i32* @g0, align 4, !tbaa !0
45   ret i32 undef
48 attributes #0 = { nounwind "target-cpu"="hexagonv60" }
50 !0 = !{!1, !1, i64 0}
51 !1 = !{!"int", !2}
52 !2 = !{!"omnipotent char", !3}
53 !3 = !{!"Simple C/C++ TBAA"}