1 ; RUN: llc -march=mipsel -relocation-model=pic -O0 -fast-isel=true -mcpu=mips32r2 \
2 ; RUN: < %s -verify-machineinstrs | FileCheck %s
4 define void @testeq(i32, i32) {
6 ; CHECK: andi $[[REG0:[0-9]+]], $4, 1
7 ; CHECK: andi $[[REG1:[0-9]+]], $5, 1
8 ; CHECK: beq $[[REG0]], $[[REG1]],
9 %3 = trunc i32 %0 to i1
10 %4 = trunc i32 %1 to i1
11 %5 = icmp eq i1 %3, %4
12 br i1 %5, label %end, label %trap
14 call void @llvm.trap()
21 define void @testne(i32, i32) {
22 ; CHECK-LABEL: testne:
23 ; CHECK: andi $[[REG0:[0-9]+]], $4, 1
24 ; CHECK: andi $[[REG1:[0-9]+]], $5, 1
25 ; CHECK: bne $[[REG0]], $[[REG1]],
26 %3 = trunc i32 %0 to i1
27 %4 = trunc i32 %1 to i1
28 %5 = icmp ne i1 %3, %4
29 br i1 %5, label %end, label %trap
31 call void @llvm.trap()
38 define void @testugt(i32, i32) {
39 ; CHECK-LABEL: testugt:
40 ; CHECK: andi $[[REG0:[0-9]+]], $4, 1
41 ; CHECK: andi $[[REG1:[0-9]+]], $5, 1
42 ; CHECK: sltu $[[REG2:[0-9]+]], $[[REG1]], $[[REG0]]
43 ; CHECK: bnez $[[REG2]],
44 %3 = trunc i32 %0 to i1
45 %4 = trunc i32 %1 to i1
46 %5 = icmp ugt i1 %3, %4
47 br i1 %5, label %end, label %trap
49 call void @llvm.trap()
56 define void @testuge(i32, i32) {
57 ; CHECK-LABEL: testuge:
58 ; CHECK: andi $[[REG0:[0-9]+]], $4, 1
59 ; CHECK: andi $[[REG1:[0-9]+]], $5, 1
60 ; CHECK: sltu $[[REG2:[0-9]+]], $[[REG0]], $[[REG1]]
61 ; CHECK: beqz $[[REG2]],
62 %3 = trunc i32 %0 to i1
63 %4 = trunc i32 %1 to i1
64 %5 = icmp uge i1 %3, %4
65 br i1 %5, label %end, label %trap
67 call void @llvm.trap()
74 define void @testult(i32, i32) {
75 ; CHECK-LABEL: testult:
76 ; CHECK: andi $[[REG0:[0-9]+]], $4, 1
77 ; CHECK: andi $[[REG1:[0-9]+]], $5, 1
78 ; CHECK: sltu $[[REG2:[0-9]+]], $[[REG0]], $[[REG1]]
79 ; CHECK: bnez $[[REG2]],
80 %3 = trunc i32 %0 to i1
81 %4 = trunc i32 %1 to i1
82 %5 = icmp ult i1 %3, %4
83 br i1 %5, label %end, label %trap
85 call void @llvm.trap()
92 define void @testule(i32, i32) {
93 ; CHECK: andi $[[REG0:[0-9]+]], $4, 1
94 ; CHECK: andi $[[REG1:[0-9]+]], $5, 1
95 ; CHECK: sltu $[[REG2:[0-9]+]], $[[REG1]], $[[REG0]]
96 ; CHECK: beqz $[[REG2]],
97 %3 = trunc i32 %0 to i1
98 %4 = trunc i32 %1 to i1
99 %5 = icmp ule i1 %3, %4
100 br i1 %5, label %end, label %trap
102 call void @llvm.trap()
109 define void @testsgt(i32, i32) {
110 ; CHECK-LABEL: testsgt:
111 ; CHECK: andi $[[REG0:[0-9]+]], $4, 1
112 ; CHECK: negu $[[REG2:[0-9]+]], $[[REG0]]
113 ; CHECK: andi $[[REG1:[0-9]+]], $5, 1
114 ; CHECK: negu $[[REG3:[0-9]+]], $[[REG1]]
115 ; CHECK: slt $[[REG4:[0-9]+]], $[[REG3]], $[[REG2]]
116 ; CHECK: bnez $[[REG4]],
117 %3 = trunc i32 %0 to i1
118 %4 = trunc i32 %1 to i1
119 %5 = icmp sgt i1 %3, %4
120 br i1 %5, label %end, label %trap
122 call void @llvm.trap()
129 define void @testsge(i32, i32) {
130 ; CHECK-LABEL: testsge:
131 ; CHECK: andi $[[REG0:[0-9]+]], $4, 1
132 ; CHECK: negu $[[REG0]], $[[REG0]]
133 ; CHECK: andi $[[REG1:[0-9]+]], $5, 1
134 ; CHECK: negu $[[REG1]], $[[REG1]]
135 ; CHECK: slt $[[REG2:[0-9]+]], $[[REG0]], $[[REG1]]
136 ; CHECK: beqz $[[REG2]],
137 %3 = trunc i32 %0 to i1
138 %4 = trunc i32 %1 to i1
139 %5 = icmp sge i1 %3, %4
140 br i1 %5, label %end, label %trap
142 call void @llvm.trap()
149 define void @testslt(i32, i32) {
150 ; CHECK-LABEL: testslt:
151 ; CHECK: andi $[[REG0:[0-9]+]], $4, 1
152 ; CHECK: negu $[[REG0]], $[[REG0]]
153 ; CHECK: andi $[[REG1:[0-9]+]], $5, 1
154 ; CHECK: negu $[[REG1]], $[[REG1]]
155 ; CHECK: slt $[[REG2:[0-9]+]], $[[REG0]], $[[REG1]]
156 ; CHECK: bnez $[[REG2]],
157 %3 = trunc i32 %0 to i1
158 %4 = trunc i32 %1 to i1
159 %5 = icmp slt i1 %3, %4
160 br i1 %5, label %end, label %trap
162 call void @llvm.trap()
169 define void @testsle(i32, i32) {
170 ; CHECK-LABEL: testsle:
171 ; CHECK: andi $[[REG0:[0-9]+]], $4, 1
172 ; CHECK: negu $[[REG2:[0-9]+]], $[[REG0]]
173 ; CHECK: andi $[[REG1:[0-9]+]], $5, 1
174 ; CHECK: negu $[[REG3:[0-9]+]], $[[REG1]]
175 ; CHECK: slt $[[REG4:[0-9]+]], $[[REG3]], $[[REG2]]
176 ; CHECK: beqz $[[REG4]],
177 %3 = trunc i32 %0 to i1
178 %4 = trunc i32 %1 to i1
179 %5 = icmp sle i1 %3, %4
180 br i1 %5, label %end, label %trap
182 call void @llvm.trap()
189 declare void @llvm.trap()