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

Unified Diff: tests_lit/llvm2ice_tests/8bit.pnacl.ll

Issue 617593002: Handle imul, pcmpeq, pcmpgt. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: go ahead and optimize i8 Created 6 years, 3 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
Index: tests_lit/llvm2ice_tests/8bit.pnacl.ll
diff --git a/tests_lit/llvm2ice_tests/8bit.pnacl.ll b/tests_lit/llvm2ice_tests/8bit.pnacl.ll
new file mode 100644
index 0000000000000000000000000000000000000000..2307712468072466976e73f51d0a760f03e3f6d7
--- /dev/null
+++ b/tests_lit/llvm2ice_tests/8bit.pnacl.ll
@@ -0,0 +1,164 @@
+; This tries to be a comprehensive test of i8 operations.
+
+; RUN: %p2i -i %s --args -O2 --verbose none \
+; RUN: | llvm-mc -triple=i686-none-nacl -x86-asm-syntax=intel -filetype=obj \
+; RUN: | llvm-objdump -d --symbolize -x86-asm-syntax=intel - | FileCheck %s
+; RUN: %p2i -i %s --args -Om1 --verbose none \
+; RUN: | llvm-mc -triple=i686-none-nacl -x86-asm-syntax=intel -filetype=obj \
+; RUN: | llvm-objdump -d --symbolize -x86-asm-syntax=intel - | FileCheck %s
+; RUN: %p2i -i %s --args --verbose none | FileCheck --check-prefix=ERRORS %s
+; RUN: %p2i -i %s --insts | %szdiff %s | FileCheck --check-prefix=DUMP %s
+
+define internal i32 @add8Bit(i32 %a, i32 %b) {
+entry:
+ %a_8 = trunc i32 %a to i8
+ %b_8 = trunc i32 %b to i8
+ %add = add i8 %b_8, %a_8
+ %ret = zext i8 %add to i32
+ ret i32 %ret
+}
+; CHECK-LABEL: add8Bit
+; CHECK: add {{[abcd]l}}
+
+define internal i32 @add8BitConst(i32 %a, i32 %b) {
+entry:
+ %a_8 = trunc i32 %a to i8
+ %add = add i8 %a_8, 123
+ %ret = zext i8 %add to i32
+ ret i32 %ret
+}
+; CHECK-LABEL: add8BitConst
+; CHECK: add {{[abcd]l}}
+
+define internal i32 @sub8Bit(i32 %a, i32 %b) {
+entry:
+ %a_8 = trunc i32 %a to i8
+ %b_8 = trunc i32 %b to i8
+ %sub = sub i8 %b_8, %a_8
+ %ret = zext i8 %sub to i32
+ ret i32 %ret
+}
+; CHECK-LABEL: sub8Bit
+; XCHECK: sub {{[abcd]l}}
+
+define internal i32 @sub8BitConst(i32 %a, i32 %b) {
+entry:
+ %a_8 = trunc i32 %a to i8
+ %sub = sub i8 %a_8, 123
+ %ret = zext i8 %sub to i32
+ ret i32 %ret
+}
+; CHECK-LABEL: sub8BitConst
+; XCHECK: sub {{[abcd]l}}
+
+define internal i32 @mul8Bit(i32 %a, i32 %b) {
+entry:
+ %a_8 = trunc i32 %a to i8
+ %b_8 = trunc i32 %b to i8
+ %mul = mul i8 %b_8, %a_8
+ %ret = zext i8 %mul to i32
+ ret i32 %ret
+}
+; CHECK-LABEL: mul8Bit
+; CHECK: mul {{[abcd]l|byte ptr}}
+
+define internal i32 @mul8BitConst(i32 %a, i32 %b) {
+entry:
+ %a_8 = trunc i32 %a to i8
+ %mul = mul i8 %a_8, 56
+ %ret = zext i8 %mul to i32
+ ret i32 %ret
+}
+; CHECK-LABEL: mul8BitConst
+; 8-bit imul only accepts r/m, not imm
+; CHECK: mov {{.*}}, 56
+; CHECK: mul {{[abcd]l|byte ptr}}
+
+define internal i32 @udiv8Bit(i32 %a, i32 %b) {
+entry:
+ %a_8 = trunc i32 %a to i8
+ %b_8 = trunc i32 %b to i8
+ %udiv = udiv i8 %b_8, %a_8
+ %ret = zext i8 %udiv to i32
+ ret i32 %ret
+}
+; CHECK-LABEL: udiv8Bit
+; CHECK: div {{[abcd]l|byte ptr}}
+
+define internal i32 @udiv8BitConst(i32 %a, i32 %b) {
+entry:
+ %a_8 = trunc i32 %a to i8
+ %udiv = udiv i8 %a_8, 123
+ %ret = zext i8 %udiv to i32
+ ret i32 %ret
+}
+; CHECK-LABEL: udiv8BitConst
+; CHECK: div {{[abcd]l|byte ptr}}
+
+define internal i32 @urem8Bit(i32 %a, i32 %b) {
+entry:
+ %a_8 = trunc i32 %a to i8
+ %b_8 = trunc i32 %b to i8
+ %urem = urem i8 %b_8, %a_8
+ %ret = zext i8 %urem to i32
+ ret i32 %ret
+}
+; CHECK-LABEL: urem8Bit
+; CHECK: div {{[abcd]l|byte ptr}}
+
+define internal i32 @urem8BitConst(i32 %a, i32 %b) {
+entry:
+ %a_8 = trunc i32 %a to i8
+ %urem = urem i8 %a_8, 123
+ %ret = zext i8 %urem to i32
+ ret i32 %ret
+}
+; CHECK-LABEL: urem8BitConst
+; CHECK: div {{[abcd]l|byte ptr}}
+
+
+define internal i32 @sdiv8Bit(i32 %a, i32 %b) {
+entry:
+ %a_8 = trunc i32 %a to i8
+ %b_8 = trunc i32 %b to i8
+ %sdiv = sdiv i8 %b_8, %a_8
+ %ret = zext i8 %sdiv to i32
+ ret i32 %ret
+}
+; CHECK-LABEL: sdiv8Bit
+; CHECK: idiv {{[abcd]l|byte ptr}}
+
+define internal i32 @sdiv8BitConst(i32 %a, i32 %b) {
+entry:
+ %a_8 = trunc i32 %a to i8
+ %sdiv = sdiv i8 %a_8, 123
+ %ret = zext i8 %sdiv to i32
+ ret i32 %ret
+}
+; CHECK-LABEL: sdiv8BitConst
+; CHECK: idiv {{[abcd]l|byte ptr}}
+
+define internal i32 @srem8Bit(i32 %a, i32 %b) {
+entry:
+ %a_8 = trunc i32 %a to i8
+ %b_8 = trunc i32 %b to i8
+ %srem = srem i8 %b_8, %a_8
+ %ret = zext i8 %srem to i32
+ ret i32 %ret
+}
+; CHECK-LABEL: srem8Bit
+; CHECK: idiv {{[abcd]l|byte ptr}}
+
+define internal i32 @srem8BitConst(i32 %a, i32 %b) {
+entry:
+ %a_8 = trunc i32 %a to i8
+ %srem = srem i8 %a_8, 123
+ %ret = zext i8 %srem to i32
+ ret i32 %ret
+}
+; CHECK-LABEL: srem8BitConst
+; CHECK: idiv {{[abcd]l|byte ptr}}
+
+
+; ERRORS-NOT: ICE translation error
+; DUMP-NOT: SZ
« src/IceTargetLoweringX8632.cpp ('K') | « tests_lit/assembler/x86/immediate_encodings.ll ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698