summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/Mips/llvm-ir
diff options
context:
space:
mode:
authorDavid Bolvansky <david.bolvansky@gmail.com>2018-10-30 09:07:22 +0000
committerDavid Bolvansky <david.bolvansky@gmail.com>2018-10-30 09:07:22 +0000
commitdfdbb038e8ea0a46b7ad04b6ad6febb3f38d25c4 (patch)
tree816e6b08e98eed34179c2ec2d1e920ce1d92d22f /llvm/test/CodeGen/Mips/llvm-ir
parentda7817164354f29ec8ab79aad52e9004b3c1494c (diff)
downloadbcm5719-llvm-dfdbb038e8ea0a46b7ad04b6ad6febb3f38d25c4.tar.gz
bcm5719-llvm-dfdbb038e8ea0a46b7ad04b6ad6febb3f38d25c4.zip
[DAGCombiner] Improve X div/rem Y fold if single bit element type
Summary: Tests by @spatel, thanks Reviewers: spatel, RKSimon Reviewed By: spatel Subscribers: sdardis, atanasyan, llvm-commits, spatel Differential Revision: https://reviews.llvm.org/D52668 llvm-svn: 345575
Diffstat (limited to 'llvm/test/CodeGen/Mips/llvm-ir')
-rw-r--r--llvm/test/CodeGen/Mips/llvm-ir/sdiv.ll35
-rw-r--r--llvm/test/CodeGen/Mips/llvm-ir/srem.ll35
-rw-r--r--llvm/test/CodeGen/Mips/llvm-ir/udiv.ll25
-rw-r--r--llvm/test/CodeGen/Mips/llvm-ir/urem.ll42
4 files changed, 25 insertions, 112 deletions
diff --git a/llvm/test/CodeGen/Mips/llvm-ir/sdiv.ll b/llvm/test/CodeGen/Mips/llvm-ir/sdiv.ll
index 03b831191a8..e54eaa63222 100644
--- a/llvm/test/CodeGen/Mips/llvm-ir/sdiv.ll
+++ b/llvm/test/CodeGen/Mips/llvm-ir/sdiv.ll
@@ -35,55 +35,32 @@
define signext i1 @sdiv_i1(i1 signext %a, i1 signext %b) {
; GP32-LABEL: sdiv_i1:
; GP32: # %bb.0: # %entry
-; GP32-NEXT: div $zero, $4, $5
-; GP32-NEXT: teq $5, $zero, 7
-; GP32-NEXT: mflo $1
-; GP32-NEXT: andi $1, $1, 1
; GP32-NEXT: jr $ra
-; GP32-NEXT: negu $2, $1
+; GP32-NEXT: move $2, $4
;
; GP32R6-LABEL: sdiv_i1:
; GP32R6: # %bb.0: # %entry
-; GP32R6-NEXT: div $1, $4, $5
-; GP32R6-NEXT: teq $5, $zero, 7
-; GP32R6-NEXT: andi $1, $1, 1
; GP32R6-NEXT: jr $ra
-; GP32R6-NEXT: negu $2, $1
+; GP32R6-NEXT: move $2, $4
;
; GP64-LABEL: sdiv_i1:
; GP64: # %bb.0: # %entry
-; GP64-NEXT: div $zero, $4, $5
-; GP64-NEXT: teq $5, $zero, 7
-; GP64-NEXT: mflo $1
-; GP64-NEXT: andi $1, $1, 1
; GP64-NEXT: jr $ra
-; GP64-NEXT: negu $2, $1
+; GP64-NEXT: move $2, $4
;
; GP64R6-LABEL: sdiv_i1:
; GP64R6: # %bb.0: # %entry
-; GP64R6-NEXT: div $1, $4, $5
-; GP64R6-NEXT: teq $5, $zero, 7
-; GP64R6-NEXT: andi $1, $1, 1
; GP64R6-NEXT: jr $ra
-; GP64R6-NEXT: negu $2, $1
+; GP64R6-NEXT: move $2, $4
;
; MMR3-LABEL: sdiv_i1:
; MMR3: # %bb.0: # %entry
-; MMR3-NEXT: div $zero, $4, $5
-; MMR3-NEXT: teq $5, $zero, 7
-; MMR3-NEXT: mflo16 $2
-; MMR3-NEXT: andi16 $2, $2, 1
-; MMR3-NEXT: li16 $3, 0
-; MMR3-NEXT: subu16 $2, $3, $2
+; MMR3-NEXT: move $2, $4
; MMR3-NEXT: jrc $ra
;
; MMR6-LABEL: sdiv_i1:
; MMR6: # %bb.0: # %entry
-; MMR6-NEXT: div $2, $4, $5
-; MMR6-NEXT: teq $5, $zero, 7
-; MMR6-NEXT: andi16 $2, $2, 1
-; MMR6-NEXT: li16 $3, 0
-; MMR6-NEXT: subu16 $2, $3, $2
+; MMR6-NEXT: move $2, $4
; MMR6-NEXT: jrc $ra
entry:
%r = sdiv i1 %a, %b
diff --git a/llvm/test/CodeGen/Mips/llvm-ir/srem.ll b/llvm/test/CodeGen/Mips/llvm-ir/srem.ll
index 66ee6c01bd2..ef0502c85d5 100644
--- a/llvm/test/CodeGen/Mips/llvm-ir/srem.ll
+++ b/llvm/test/CodeGen/Mips/llvm-ir/srem.ll
@@ -35,55 +35,32 @@
define signext i1 @srem_i1(i1 signext %a, i1 signext %b) {
; GP32-LABEL: srem_i1:
; GP32: # %bb.0: # %entry
-; GP32-NEXT: div $zero, $4, $5
-; GP32-NEXT: teq $5, $zero, 7
-; GP32-NEXT: mfhi $1
-; GP32-NEXT: andi $1, $1, 1
; GP32-NEXT: jr $ra
-; GP32-NEXT: negu $2, $1
+; GP32-NEXT: addiu $2, $zero, 0
;
; GP32R6-LABEL: srem_i1:
; GP32R6: # %bb.0: # %entry
-; GP32R6-NEXT: mod $1, $4, $5
-; GP32R6-NEXT: teq $5, $zero, 7
-; GP32R6-NEXT: andi $1, $1, 1
; GP32R6-NEXT: jr $ra
-; GP32R6-NEXT: negu $2, $1
+; GP32R6-NEXT: addiu $2, $zero, 0
;
; GP64-LABEL: srem_i1:
; GP64: # %bb.0: # %entry
-; GP64-NEXT: div $zero, $4, $5
-; GP64-NEXT: teq $5, $zero, 7
-; GP64-NEXT: mfhi $1
-; GP64-NEXT: andi $1, $1, 1
; GP64-NEXT: jr $ra
-; GP64-NEXT: negu $2, $1
+; GP64-NEXT: addiu $2, $zero, 0
;
; GP64R6-LABEL: srem_i1:
; GP64R6: # %bb.0: # %entry
-; GP64R6-NEXT: mod $1, $4, $5
-; GP64R6-NEXT: teq $5, $zero, 7
-; GP64R6-NEXT: andi $1, $1, 1
; GP64R6-NEXT: jr $ra
-; GP64R6-NEXT: negu $2, $1
+; GP64R6-NEXT: addiu $2, $zero, 0
;
; MMR3-LABEL: srem_i1:
; MMR3: # %bb.0: # %entry
-; MMR3-NEXT: div $zero, $4, $5
-; MMR3-NEXT: teq $5, $zero, 7
-; MMR3-NEXT: mfhi16 $2
-; MMR3-NEXT: andi16 $2, $2, 1
-; MMR3-NEXT: li16 $3, 0
-; MMR3-NEXT: subu16 $2, $3, $2
+; MMR3-NEXT: li16 $2, 0
; MMR3-NEXT: jrc $ra
;
; MMR6-LABEL: srem_i1:
; MMR6: # %bb.0: # %entry
-; MMR6-NEXT: mod $2, $4, $5
-; MMR6-NEXT: teq $5, $zero, 7
-; MMR6-NEXT: andi16 $2, $2, 1
-; MMR6-NEXT: li16 $3, 0
-; MMR6-NEXT: subu16 $2, $3, $2
+; MMR6-NEXT: li16 $2, 0
; MMR6-NEXT: jrc $ra
entry:
%r = srem i1 %a, %b
diff --git a/llvm/test/CodeGen/Mips/llvm-ir/udiv.ll b/llvm/test/CodeGen/Mips/llvm-ir/udiv.ll
index e0ba7bc770e..8694a9f92b6 100644
--- a/llvm/test/CodeGen/Mips/llvm-ir/udiv.ll
+++ b/llvm/test/CodeGen/Mips/llvm-ir/udiv.ll
@@ -35,41 +35,32 @@
define zeroext i1 @udiv_i1(i1 zeroext %a, i1 zeroext %b) {
; GP32-LABEL: udiv_i1:
; GP32: # %bb.0: # %entry
-; GP32-NEXT: divu $zero, $4, $5
-; GP32-NEXT: teq $5, $zero, 7
; GP32-NEXT: jr $ra
-; GP32-NEXT: mflo $2
+; GP32-NEXT: move $2, $4
;
; GP32R6-LABEL: udiv_i1:
; GP32R6: # %bb.0: # %entry
-; GP32R6-NEXT: divu $2, $4, $5
-; GP32R6-NEXT: teq $5, $zero, 7
-; GP32R6-NEXT: jrc $ra
+; GP32R6-NEXT: jr $ra
+; GP32R6-NEXT: move $2, $4
;
; GP64-LABEL: udiv_i1:
; GP64: # %bb.0: # %entry
-; GP64-NEXT: divu $zero, $4, $5
-; GP64-NEXT: teq $5, $zero, 7
; GP64-NEXT: jr $ra
-; GP64-NEXT: mflo $2
+; GP64-NEXT: move $2, $4
;
; GP64R6-LABEL: udiv_i1:
; GP64R6: # %bb.0: # %entry
-; GP64R6-NEXT: divu $2, $4, $5
-; GP64R6-NEXT: teq $5, $zero, 7
-; GP64R6-NEXT: jrc $ra
+; GP64R6-NEXT: jr $ra
+; GP64R6-NEXT: move $2, $4
;
; MMR3-LABEL: udiv_i1:
; MMR3: # %bb.0: # %entry
-; MMR3-NEXT: divu $zero, $4, $5
-; MMR3-NEXT: teq $5, $zero, 7
-; MMR3-NEXT: mflo16 $2
+; MMR3-NEXT: move $2, $4
; MMR3-NEXT: jrc $ra
;
; MMR6-LABEL: udiv_i1:
; MMR6: # %bb.0: # %entry
-; MMR6-NEXT: divu $2, $4, $5
-; MMR6-NEXT: teq $5, $zero, 7
+; MMR6-NEXT: move $2, $4
; MMR6-NEXT: jrc $ra
entry:
%r = udiv i1 %a, %b
diff --git a/llvm/test/CodeGen/Mips/llvm-ir/urem.ll b/llvm/test/CodeGen/Mips/llvm-ir/urem.ll
index 83830a3689b..b744f706cbf 100644
--- a/llvm/test/CodeGen/Mips/llvm-ir/urem.ll
+++ b/llvm/test/CodeGen/Mips/llvm-ir/urem.ll
@@ -35,64 +35,32 @@
define signext i1 @urem_i1(i1 signext %a, i1 signext %b) {
; GP32-LABEL: urem_i1:
; GP32: # %bb.0: # %entry
-; GP32-NEXT: andi $1, $5, 1
-; GP32-NEXT: andi $2, $4, 1
-; GP32-NEXT: divu $zero, $2, $1
-; GP32-NEXT: teq $1, $zero, 7
-; GP32-NEXT: mfhi $1
-; GP32-NEXT: andi $1, $1, 1
; GP32-NEXT: jr $ra
-; GP32-NEXT: negu $2, $1
+; GP32-NEXT: addiu $2, $zero, 0
;
; GP32R6-LABEL: urem_i1:
; GP32R6: # %bb.0: # %entry
-; GP32R6-NEXT: andi $1, $5, 1
-; GP32R6-NEXT: andi $2, $4, 1
-; GP32R6-NEXT: modu $2, $2, $1
-; GP32R6-NEXT: teq $1, $zero, 7
; GP32R6-NEXT: jr $ra
-; GP32R6-NEXT: negu $2, $2
+; GP32R6-NEXT: addiu $2, $zero, 0
;
; GP64-LABEL: urem_i1:
; GP64: # %bb.0: # %entry
-; GP64-NEXT: andi $1, $5, 1
-; GP64-NEXT: andi $2, $4, 1
-; GP64-NEXT: divu $zero, $2, $1
-; GP64-NEXT: teq $1, $zero, 7
-; GP64-NEXT: mfhi $1
-; GP64-NEXT: andi $1, $1, 1
; GP64-NEXT: jr $ra
-; GP64-NEXT: negu $2, $1
+; GP64-NEXT: addiu $2, $zero, 0
;
; GP64R6-LABEL: urem_i1:
; GP64R6: # %bb.0: # %entry
-; GP64R6-NEXT: andi $1, $5, 1
-; GP64R6-NEXT: andi $2, $4, 1
-; GP64R6-NEXT: modu $2, $2, $1
-; GP64R6-NEXT: teq $1, $zero, 7
; GP64R6-NEXT: jr $ra
-; GP64R6-NEXT: negu $2, $2
+; GP64R6-NEXT: addiu $2, $zero, 0
;
; MMR3-LABEL: urem_i1:
; MMR3: # %bb.0: # %entry
-; MMR3-NEXT: andi16 $2, $5, 1
-; MMR3-NEXT: andi16 $3, $4, 1
-; MMR3-NEXT: divu $zero, $3, $2
-; MMR3-NEXT: teq $2, $zero, 7
-; MMR3-NEXT: mfhi16 $2
-; MMR3-NEXT: andi16 $2, $2, 1
-; MMR3-NEXT: li16 $3, 0
-; MMR3-NEXT: subu16 $2, $3, $2
+; MMR3-NEXT: li16 $2, 0
; MMR3-NEXT: jrc $ra
;
; MMR6-LABEL: urem_i1:
; MMR6: # %bb.0: # %entry
-; MMR6-NEXT: andi16 $2, $5, 1
-; MMR6-NEXT: andi16 $3, $4, 1
-; MMR6-NEXT: modu $3, $3, $2
-; MMR6-NEXT: teq $2, $zero, 7
; MMR6-NEXT: li16 $2, 0
-; MMR6-NEXT: subu16 $2, $2, $3
; MMR6-NEXT: jrc $ra
entry:
%r = urem i1 %a, %b
OpenPOWER on IntegriCloud