Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(417)

Side by Side Diff: tests_lit/llvm2ice_tests/icmp.ll

Issue 2022063003: [Subzero][MIPS32] Implement icmp operation for i8, i16 operands (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 ; Simple tests for icmp with i8, i16, i32 operands.
2
3 ; RUN: %if --need=allow_dump --need=target_MIPS32 --command %p2i \
4 ; RUN: --filetype=asm --target mips32 -i %s --args -O2 --skip-unimplemented \
Jim Stichnoth 2016/05/31 19:00:20 Just a comment and an optional suggestion. For an
sagar.thakur 2016/06/01 13:17:22 Done.
5 ; RUN: -allow-externally-defined-symbols \
6 ; RUN: | %if --need=allow_dump --need=target_MIPS32 --command FileCheck %s \
7 ; RUN: --check-prefix=COMMON --check-prefix=MIPS32
8
9 define internal i32 @icmpEq32(i32 %a, i32 %b) {
10 entry:
11 %cmp = icmp eq i32 %a, %b
12 %cmp.ret_ext = zext i1 %cmp to i32
13 ret i32 %cmp.ret_ext
14 }
15 ; MIPS32-LABEL: icmpEq32
16 ; MIPS32: xor {{.*}}, $a0, $a1
17 ; MIPS32: sltiu {{.*}}, {{.*}}, 1
18
19 define internal i32 @icmpNe32(i32 %a, i32 %b) {
20 entry:
21 %cmp = icmp ne i32 %a, %b
22 %cmp.ret_ext = zext i1 %cmp to i32
23 ret i32 %cmp.ret_ext
24 }
25 ; MIPS32-LABEL: icmpNe32
26 ; MIPS32: xor {{.*}}, $a0, $a1
27 ; MIPS32: sltu {{.*}}, $zero, {{.*}}
28
29 define internal i32 @icmpSgt32(i32 %a, i32 %b) {
30 entry:
31 %cmp = icmp sgt i32 %a, %b
32 %cmp.ret_ext = zext i1 %cmp to i32
33 ret i32 %cmp.ret_ext
34 }
35 ; MIPS32-LABEL: icmpSgt32
36 ; MIPS32: slt {{.*}}, $a1, $a0
37
38 define internal i32 @icmpUgt32(i32 %a, i32 %b) {
39 entry:
40 %cmp = icmp ugt i32 %a, %b
41 %cmp.ret_ext = zext i1 %cmp to i32
42 ret i32 %cmp.ret_ext
43 }
44 ; MIPS32-LABEL: icmpUgt32
45 ; MIPS32: sltu {{.*}}, $a1, $a0
46
47 define internal i32 @icmpSge32(i32 %a, i32 %b) {
48 entry:
49 %cmp = icmp sge i32 %a, %b
50 %cmp.ret_ext = zext i1 %cmp to i32
51 ret i32 %cmp.ret_ext
52 }
53 ; MIPS32-LABEL: icmpSge32
54 ; MIPS32: slt {{.*}}, $a0, $a1
55 ; MIPS32: xori {{.*}}, {{.*}}, 1
56
57 define internal i32 @icmpUge32(i32 %a, i32 %b) {
58 entry:
59 %cmp = icmp uge i32 %a, %b
60 %cmp.ret_ext = zext i1 %cmp to i32
61 ret i32 %cmp.ret_ext
62 }
63 ; MIPS32-LABEL: icmpUge32
64 ; MIPS32: sltu {{.*}}, $a0, $a1
65 ; MIPS32: xori {{.*}}, {{.*}}, 1
66
67 define internal i32 @icmpSlt32(i32 %a, i32 %b) {
68 entry:
69 %cmp = icmp slt i32 %a, %b
70 %cmp.ret_ext = zext i1 %cmp to i32
71 ret i32 %cmp.ret_ext
72 }
73 ; MIPS32-LABEL: icmpSlt32
74 ; MIPS32: slt {{.*}}, $a0, $a1
75
76 define internal i32 @icmpUlt32(i32 %a, i32 %b) {
77 entry:
78 %cmp = icmp ult i32 %a, %b
79 %cmp.ret_ext = zext i1 %cmp to i32
80 ret i32 %cmp.ret_ext
81 }
82 ; MIPS32-LABEL: icmpUlt32
83 ; MIPS32: sltu {{.*}}, $a0, $a1
84
85 define internal i32 @icmpSle32(i32 %a, i32 %b) {
86 entry:
87 %cmp = icmp sle i32 %a, %b
88 %cmp.ret_ext = zext i1 %cmp to i32
89 ret i32 %cmp.ret_ext
90 }
91 ; MIPS32-LABEL: icmpSle32
92 ; MIPS32: slt {{.*}}, $a1, $a0
93 ; MIPS32: xori {{.*}}, {{.*}}, 1
94
95 define internal i32 @icmpUle32(i32 %a, i32 %b) {
96 entry:
97 %cmp = icmp ule i32 %a, %b
98 %cmp.ret_ext = zext i1 %cmp to i32
99 ret i32 %cmp.ret_ext
100 }
101 ; MIPS32-LABEL: icmpUle32
102 ; MIPS32: sltu {{.*}}, $a1, $a0
103 ; MIPS32: xori {{.*}}, {{.*}}, 1
104
105 define internal i32 @icmpEq8(i32 %a, i32 %b) {
106 entry:
107 %a_8 = trunc i32 %a to i8
108 %b_8 = trunc i32 %b to i8
109 %icmp = icmp eq i8 %b_8, %a_8
110 %ret = zext i1 %icmp to i32
111 ret i32 %ret
112 }
113 ; MIPS32-LABEL: icmpEq8
114 ; MIPS32: andi {{.*}}, $a1, 255
115 ; MIPS32: andi {{.*}}, $a0, 255
116 ; MIPS32: xor
117 ; MIPS32: sltiu {{.*}}, {{.*}}, 1
118
119 define internal i32 @icmpSgt8(i32 %a, i32 %b) {
120 entry:
121 %a_8 = trunc i32 %a to i8
122 %b_8 = trunc i32 %b to i8
123 %icmp = icmp sgt i8 %b_8, %a_8
124 %ret = zext i1 %icmp to i32
125 ret i32 %ret
126 }
127 ; MIPS32-LABEL: icmpSgt8
128 ; MIPS32: sll {{.*}}, $a1, 24
129 ; MIPS32: sra {{.*}}, {{.*}}, 24
130 ; MIPS32: sll {{.*}}, $a0, 24
131 ; MIPS32: sra {{.*}}, {{.*}}, 24
132 ; MIPS32: slt
133
134 define internal i32 @icmpUgt8(i32 %a, i32 %b) {
135 entry:
136 %a_8 = trunc i32 %a to i8
137 %b_8 = trunc i32 %b to i8
138 %icmp = icmp ugt i8 %b_8, %a_8
139 %ret = zext i1 %icmp to i32
140 ret i32 %ret
141 }
142 ; MIPS32-LABEL: icmpUgt8
143 ; MIPS32: andi {{.*}}, $a1, 255
144 ; MIPS32: andi {{.*}}, $a0, 255
145 ; MIPS32: sltu
146
147 define internal i32 @icmpSgt16(i32 %a, i32 %b) {
148 entry:
149 %a_16 = trunc i32 %a to i16
150 %b_16 = trunc i32 %b to i16
151 %icmp = icmp sgt i16 %b_16, %a_16
152 %ret = zext i1 %icmp to i32
153 ret i32 %ret
154 }
155 ; MIPS32-LABEL: icmpSgt16
156 ; MIPS32: sll {{.*}}, $a1, 16
157 ; MIPS32: sra {{.*}}, {{.*}}, 16
158 ; MIPS32: sll {{.*}}, $a0, 16
159 ; MIPS32: sra {{.*}}, {{.*}}, 16
160 ; MIPS32: slt
161
162 define internal i32 @icmpUgt16(i32 %a, i32 %b) {
163 entry:
164 %a_16 = trunc i32 %a to i16
165 %b_16 = trunc i32 %b to i16
166 %icmp = icmp ugt i16 %b_16, %a_16
167 %ret = zext i1 %icmp to i32
168 ret i32 %ret
169 }
170 ; MIPS32-LABEL: icmpUgt16
171 ; MIPS32: andi {{.*}}, $a1, 65535
172 ; MIPS32: andi {{.*}}, $a0, 65535
173 ; MIPS32: sltu
OLDNEW
« src/IceTargetLoweringMIPS32.cpp ('K') | « src/IceTargetLoweringMIPS32.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698