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

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

Issue 2359713003: [Subzero][MIPS32] Implements 64-bit shl, lshr, ashr for MIPS (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Removed unnecessary change Created 4 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
« src/IceTargetLoweringMIPS32.cpp ('K') | « 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/64bit.pnacl.ll
diff --git a/tests_lit/llvm2ice_tests/64bit.pnacl.ll b/tests_lit/llvm2ice_tests/64bit.pnacl.ll
index 74e4323821d2caf5dca435f95b0c57d4b5119904..6085f4f72b56838ea6a06ac9ca6b34a6a14ae08c 100644
--- a/tests_lit/llvm2ice_tests/64bit.pnacl.ll
+++ b/tests_lit/llvm2ice_tests/64bit.pnacl.ll
@@ -520,6 +520,20 @@ entry:
; ARM32: lslge [[T2]], r0, [[T3]]
; ARM32: lsl r{{[0-9]+}}, r0, r2
+; MIPS32-LABEL: shl64BitSigned
+; MIPS32: sllv [[T1:.*]],[[A_HI:.*]],[[B_LO:.*]]
+; MIPS32: li [[T2:.*]],-1
+; MIPS32: xor [[T3:.*]],[[B_LO]],[[T2]]
+; MIPS32: srl [[T4:.*]],[[A_LO:.*]],0x1
+; MIPS32: srlv [[T5:.*]],[[T4]],[[T3]]
+; MIPS32: or [[T_HI:.*]],[[T1]],[[T5]]
+; MIPS32: sllv [[T_LO:.*]],[[A_LO]],[[B_LO]]
+; MIPS32: move [[T1_LO:.*]],[[T_LO]]
Jim Stichnoth 2016/09/21 16:59:25 trailing whitespace
sagar.thakur 2016/09/22 14:45:04 Done.
sagar.thakur 2016/09/22 14:45:04 Done.
+; MIPS32: andi [[T6:.*]],[[B_LO]],0x20
+; MIPS32: movn [[T_HI]],[[T_LO]],[[T6]]
Jim Stichnoth 2016/09/21 16:59:25 trailing whitespace
sagar.thakur 2016/09/22 14:45:04 Done.
sagar.thakur 2016/09/22 14:45:04 Done.
+; MIPS32: movn [[T1_LO]],zero,[[T6]]
+; MIPS32: move v1,[[T_HI]]
+
define internal i32 @shl64BitSignedTrunc(i64 %a, i64 %b) {
entry:
%shl = shl i64 %a, %b
@@ -567,6 +581,20 @@ entry:
; ARM32: lslge
; ARM32: lsl
+; MIPS32-LABEL: shl64BitUnsigned
+; MIPS32: sllv [[T1:.*]],[[A_HI:.*]],[[B_LO:.*]]
+; MIPS32: li [[T2:.*]],-1
+; MIPS32: xor [[T3:.*]],[[B_LO]],[[T2]]
+; MIPS32: srl [[T4:.*]],[[A_LO:.*]],0x1
+; MIPS32: srlv [[T5:.*]],[[T4]],[[T3]]
+; MIPS32: or [[T_HI:.*]],[[T1]],[[T5]]
+; MIPS32: sllv [[T_LO:.*]],[[A_LO]],[[B_LO]]
+; MIPS32: move [[T1_LO:.*]],[[T_LO]]
+; MIPS32: andi [[T6:.*]],[[B_LO]],0x20
+; MIPS32: movn [[T_HI]],[[T_LO]],[[T6]]
+; MIPS32: movn [[T1_LO]],zero,[[T6]]
+; MIPS32: move v1,[[T_HI]]
+
define internal i64 @shr64BitSigned(i64 %a, i64 %b) {
entry:
%shr = ashr i64 %a, %b
@@ -595,6 +623,20 @@ entry:
; ARM32: asrge r{{[0-9]+}}, r{{[0-9]+}}, [[T2]]
; ARM32: asr r{{[0-9]+}}, r{{[0-9]+}}, r{{[0-9]+}}
+; MIPS32-LABEL: shr64BitSigned
+; MIPS32: srlv [[T1:.*]],[[A_LO:.*]],[[B_LO:.*]]
+; MIPS32: li [[T2:.*]],-1
+; MIPS32: xor [[T3:.*]],[[B_LO]],[[T2]]
+; MIPS32: sll [[T4:.*]],[[A_HI:.*]],0x1
+; MIPS32: sllv [[T5:.*]],[[T4]],[[T3]]
+; MIPS32: or [[T_LO:.*]],[[T1]],[[T5]]
+; MIPS32: srav [[T_HI:.*]],[[A_HI]],[[B_LO]]
+; MIPS32: move [[T_HI1:.*]],[[T_HI]]
+; MIPS32: andi [[T6:.*]],[[B_LO]],0x20
+; MIPS32: movn [[T_LO1:.*]],[[T_HI]],[[T6]]
+; MIPS32: sra [[T7:.*]],[[A_HI]],0x1f
+; MIPS32: movn [[T_HI1]],[[T7]],[[T6]]
+
define internal i32 @shr64BitSignedTrunc(i64 %a, i64 %b) {
entry:
%shr = ashr i64 %a, %b
@@ -648,6 +690,19 @@ entry:
; ARM32: lsrge
; ARM32: lsr
+; MIPS32-LABEL: shr64BitUnsigned
+; MIPS32: srlv [[T1:.*]],[[A_LO:.*]],[[B_LO:.*]]
+; MIPS32: li [[T2:.*]],-1
+; MIPS32: xor [[T3:.*]],[[B_LO]],[[T2]]
+; MIPS32: sll [[T4:.*]],[[A_HI:.*]],0x1
+; MIPS32: sllv [[T5:.*]],[[T4]],[[T3]]
+; MIPS32: or [[T_LO:.*]],[[T1]],[[T5]]
+; MIPS32: srlv [[T_HI:.*]],[[A_HI]],[[B_LO]]
+; MIPS32: move [[T_HI1:.*]],[[T_HI]]
+; MIPS32: andi [[T6:.*]],[[B_LO]],0x20
+; MIPS32: movn [[T_LO1:.*]],[[T_HI]],[[T6]]
+; MIPS32: movn [[T_HI1]],zero,[[T6]]
+
define internal i32 @shr64BitUnsignedTrunc(i64 %a, i64 %b) {
entry:
%shr = lshr i64 %a, %b
« 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