[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / Mips / compactbranches / no-beqzc-bnezc.ll
blob7a9f287c1b4c70e0b6b11cf76ee76af47e0d786f
1 ; RUN: llc -march=mipsel -mcpu=mips32r6 -disable-mips-delay-filler < %s | FileCheck %s
2 ; RUN: llc -march=mips -mcpu=mips32r6 -disable-mips-delay-filler < %s -filetype=obj \
3 ; RUN:     -o - | llvm-objdump -d - | FileCheck %s -check-prefix=ENCODING
4 ; RUN: llc -march=mipsel -mcpu=mips64r6 -disable-mips-delay-filler -target-abi=n64 < %s | FileCheck %s
5 ; RUN: llc -march=mips -mcpu=mips64r6 -disable-mips-delay-filler -target-abi=n64 < %s -filetype=obj \
6 ; RUN:     -o - | llvm-objdump -d - | FileCheck %s -check-prefix=ENCODING
8 ; bnezc and beqzc have restriction that $rt != 0
10 define i32 @f() {
11 ; CHECK-LABEL: f:
12 ; CHECK-NOT:   bnezc $0
14   %cmp = icmp eq i32 1, 1
15   br i1 %cmp, label %if.then, label %if.end
17   if.then:
18     ret i32 1
20   if.end:
21     ret i32 0
24 define i32 @f1() {
25 ; CHECK-LABEL: f1:
26 ; CHECK-NOT:   beqzc $0
28   %cmp = icmp eq i32 0, 0
29   br i1 %cmp, label %if.then, label %if.end
31   if.then:
32     ret i32 1
34   if.end:
35     ret i32 0
38 ; We silently fixup cases where the register allocator or user has given us
39 ; an instruction with incorrect operands that is trivially acceptable.
40 ; beqc and bnec have the restriction that $rs < $rt.
42 define i32 @f2(i32 %a, i32 %b) {
43 ; ENCODING-LABEL: f2:
44 ; ENCODING-NOT:   beqc $5, $4
45 ; ENCODING-NOT:   bnec $5, $4
47   %cmp = icmp eq i32 %b, %a
48   br i1 %cmp, label %if.then, label %if.end
50   if.then:
51     ret i32 1
53   if.end:
54     ret i32 0
57 define i64 @f3() {
58 ; CHECK-LABEL: f3:
59 ; CHECK-NOT:   bnezc $0
61   %cmp = icmp eq i64 1, 1
62   br i1 %cmp, label %if.then, label %if.end
64   if.then:
65     ret i64 1
67   if.end:
68     ret i64 0
71 define i64 @f4() {
72 ; CHECK-LABEL: f4:
73 ; CHECK-NOT:   beqzc $0
75   %cmp = icmp eq i64 0, 0
76   br i1 %cmp, label %if.then, label %if.end
78   if.then:
79     ret i64 1
81   if.end:
82     ret i64 0
85 ; We silently fixup cases where the register allocator or user has given us
86 ; an instruction with incorrect operands that is trivially acceptable.
87 ; beqc and bnec have the restriction that $rs < $rt.
89 define i64 @f5(i64 %a, i64 %b) {
90 ; ENCODING-LABEL: f5:
91 ; ENCODING-NOT:   beqc $5, $4
92 ; ENCODING-NOT:   bnec $5, $4
94   %cmp = icmp eq i64 %b, %a
95   br i1 %cmp, label %if.then, label %if.end
97   if.then:
98     ret i64 1
100   if.end:
101     ret i64 0
104 define i32 @f6(i32 %a) {
105 ; CHECK-LABEL: f6:
106 ; CHECK: beqzc ${{[0-9]+}}, $BB
108   %cmp = icmp eq i32 %a, 0
109   br i1 %cmp, label %if.then, label %if.end
111   if.then:
112     ret i32 1
114   if.end:
115     ret i32 0
118 define i32 @f7(i32 %a) {
119 ; CHECK-LABEL: f7:
120 ; CHECK: bnezc ${{[0-9]+}}, $BB
122   %cmp = icmp eq i32 0, %a
123   br i1 %cmp, label %if.then, label %if.end
125   if.then:
126     ret i32 1
128   if.end:
129     ret i32 0