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

Unified 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: Addressed review comments Created 4 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/IceTargetLoweringMIPS32.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests_lit/llvm2ice_tests/icmp.ll
diff --git a/tests_lit/llvm2ice_tests/icmp.ll b/tests_lit/llvm2ice_tests/icmp.ll
new file mode 100644
index 0000000000000000000000000000000000000000..0a408623395be97951236407ab92b6e5fbc0a8c0
--- /dev/null
+++ b/tests_lit/llvm2ice_tests/icmp.ll
@@ -0,0 +1,174 @@
+; Simple tests for icmp with i8, i16, i32 operands.
+
+; RUN: %if --need=allow_dump --need=target_MIPS32 --command %p2i \
+; RUN: --filetype=asm --target mips32 -i %s --args -O2 --skip-unimplemented \
+; RUN: -allow-externally-defined-symbols \
+; RUN: | %if --need=allow_dump --need=target_MIPS32 --command FileCheck %s \
+; RUN: --check-prefix=COMMON --check-prefix=MIPS32
+; RUN: %if --need=allow_dump --need=target_MIPS32 --command %p2i \
+; RUN: --filetype=asm --target mips32 -i %s --args -Om1 --skip-unimplemented \
+; RUN: -allow-externally-defined-symbols \
+; RUN: | %if --need=allow_dump --need=target_MIPS32 --command FileCheck %s \
+; RUN: --check-prefix=COMMON --check-prefix=MIPS32
+
+define internal i32 @icmpEq32(i32 %a, i32 %b) {
+entry:
+ %cmp = icmp eq i32 %a, %b
+ %cmp.ret_ext = zext i1 %cmp to i32
+ ret i32 %cmp.ret_ext
+}
+; MIPS32-LABEL: icmpEq32
+; MIPS32: xor
+; MIPS32: sltiu {{.*}}, {{.*}}, 1
+
+define internal i32 @icmpNe32(i32 %a, i32 %b) {
+entry:
+ %cmp = icmp ne i32 %a, %b
+ %cmp.ret_ext = zext i1 %cmp to i32
+ ret i32 %cmp.ret_ext
+}
+; MIPS32-LABEL: icmpNe32
+; MIPS32: xor
+; MIPS32: sltu {{.*}}, $zero, {{.*}}
+
+define internal i32 @icmpSgt32(i32 %a, i32 %b) {
+entry:
+ %cmp = icmp sgt i32 %a, %b
+ %cmp.ret_ext = zext i1 %cmp to i32
+ ret i32 %cmp.ret_ext
+}
+; MIPS32-LABEL: icmpSgt32
+; MIPS32: slt
+
+define internal i32 @icmpUgt32(i32 %a, i32 %b) {
+entry:
+ %cmp = icmp ugt i32 %a, %b
+ %cmp.ret_ext = zext i1 %cmp to i32
+ ret i32 %cmp.ret_ext
+}
+; MIPS32-LABEL: icmpUgt32
+; MIPS32: sltu
+
+define internal i32 @icmpSge32(i32 %a, i32 %b) {
+entry:
+ %cmp = icmp sge i32 %a, %b
+ %cmp.ret_ext = zext i1 %cmp to i32
+ ret i32 %cmp.ret_ext
+}
+; MIPS32-LABEL: icmpSge32
+; MIPS32: slt
+; MIPS32: xori {{.*}}, {{.*}}, 1
+
+define internal i32 @icmpUge32(i32 %a, i32 %b) {
+entry:
+ %cmp = icmp uge i32 %a, %b
+ %cmp.ret_ext = zext i1 %cmp to i32
+ ret i32 %cmp.ret_ext
+}
+; MIPS32-LABEL: icmpUge32
+; MIPS32: sltu
+; MIPS32: xori {{.*}}, {{.*}}, 1
+
+define internal i32 @icmpSlt32(i32 %a, i32 %b) {
+entry:
+ %cmp = icmp slt i32 %a, %b
+ %cmp.ret_ext = zext i1 %cmp to i32
+ ret i32 %cmp.ret_ext
+}
+; MIPS32-LABEL: icmpSlt32
+; MIPS32: slt
+
+define internal i32 @icmpUlt32(i32 %a, i32 %b) {
+entry:
+ %cmp = icmp ult i32 %a, %b
+ %cmp.ret_ext = zext i1 %cmp to i32
+ ret i32 %cmp.ret_ext
+}
+; MIPS32-LABEL: icmpUlt32
+; MIPS32: sltu
+
+define internal i32 @icmpSle32(i32 %a, i32 %b) {
+entry:
+ %cmp = icmp sle i32 %a, %b
+ %cmp.ret_ext = zext i1 %cmp to i32
+ ret i32 %cmp.ret_ext
+}
+; MIPS32-LABEL: icmpSle32
+; MIPS32: slt
+; MIPS32: xori {{.*}}, {{.*}}, 1
+
+define internal i32 @icmpUle32(i32 %a, i32 %b) {
+entry:
+ %cmp = icmp ule i32 %a, %b
+ %cmp.ret_ext = zext i1 %cmp to i32
+ ret i32 %cmp.ret_ext
+}
+; MIPS32-LABEL: icmpUle32
+; MIPS32: sltu
+; MIPS32: xori {{.*}}, {{.*}}, 1
+
+define internal i32 @icmpEq8(i32 %a, i32 %b) {
+entry:
+ %a_8 = trunc i32 %a to i8
+ %b_8 = trunc i32 %b to i8
+ %icmp = icmp eq i8 %b_8, %a_8
+ %ret = zext i1 %icmp to i32
+ ret i32 %ret
+}
+; MIPS32-LABEL: icmpEq8
+; MIPS32: sll {{.*}}, {{.*}}, 24
+; MIPS32: sll {{.*}}, {{.*}}, 24
+; MIPS32: xor
+; MIPS32: sltiu {{.*}}, {{.*}}, 1
+
+define internal i32 @icmpSgt8(i32 %a, i32 %b) {
+entry:
+ %a_8 = trunc i32 %a to i8
+ %b_8 = trunc i32 %b to i8
+ %icmp = icmp sgt i8 %b_8, %a_8
+ %ret = zext i1 %icmp to i32
+ ret i32 %ret
+}
+; MIPS32-LABEL: icmpSgt8
+; MIPS32: sll {{.*}}, {{.*}}, 24
+; MIPS32: sll {{.*}}, {{.*}}, 24
+; MIPS32: slt
+
+define internal i32 @icmpUgt8(i32 %a, i32 %b) {
+entry:
+ %a_8 = trunc i32 %a to i8
+ %b_8 = trunc i32 %b to i8
+ %icmp = icmp ugt i8 %b_8, %a_8
+ %ret = zext i1 %icmp to i32
+ ret i32 %ret
+}
+; MIPS32-LABEL: icmpUgt8
+; MIPS32: sll {{.*}}, {{.*}}, 24
+; MIPS32: sll {{.*}}, {{.*}}, 24
+; MIPS32: sltu
+
+define internal i32 @icmpSgt16(i32 %a, i32 %b) {
+entry:
+ %a_16 = trunc i32 %a to i16
+ %b_16 = trunc i32 %b to i16
+ %icmp = icmp sgt i16 %b_16, %a_16
+ %ret = zext i1 %icmp to i32
+ ret i32 %ret
+}
+; MIPS32-LABEL: icmpSgt16
+; MIPS32: sll {{.*}}, {{.*}}, 16
+; MIPS32: sll {{.*}}, {{.*}}, 16
+; MIPS32: slt
+
+define internal i32 @icmpUgt16(i32 %a, i32 %b) {
+entry:
+ %a_16 = trunc i32 %a to i16
+ %b_16 = trunc i32 %b to i16
+ %icmp = icmp ugt i16 %b_16, %a_16
+ %ret = zext i1 %icmp to i32
+ ret i32 %ret
+}
+; MIPS32-LABEL: icmpUgt16
+; MIPS32: sll {{.*}}, {{.*}}, 16
+; MIPS32: sll {{.*}}, {{.*}}, 16
+; MIPS32: sltu
« no previous file with comments | « src/IceTargetLoweringMIPS32.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698