summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorPetar Jovanovic <petar.jovanovic@mips.com>2018-07-17 14:57:46 +0000
committerPetar Jovanovic <petar.jovanovic@mips.com>2018-07-17 14:57:46 +0000
commitf10e4798b4d9f5d52da9c004341b7c98727638f8 (patch)
tree65a7b239882405878254ffa266f027912dd02df0 /llvm/test
parent46ae0afba7bc80389095335da5dbed63bf3d7ba9 (diff)
downloadbcm5719-llvm-f10e4798b4d9f5d52da9c004341b7c98727638f8.tar.gz
bcm5719-llvm-f10e4798b4d9f5d52da9c004341b7c98727638f8.zip
[Mips][FastISel] Fix handling of icmp with i1 type
The Mips FastISel back-end does not extend i1 values while lowering icmp. Ensure that we bail into DAG ISel when handling this case. Patch by Dragan Mladjenovic. Differential Revision: https://reviews.llvm.org/D49290 llvm-svn: 337288
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/CodeGen/Mips/Fast-ISel/icmpi1.ll14
-rw-r--r--llvm/test/CodeGen/Mips/Fast-ISel/sel1.ll3
2 files changed, 15 insertions, 2 deletions
diff --git a/llvm/test/CodeGen/Mips/Fast-ISel/icmpi1.ll b/llvm/test/CodeGen/Mips/Fast-ISel/icmpi1.ll
new file mode 100644
index 00000000000..97d4eb8f7a3
--- /dev/null
+++ b/llvm/test/CodeGen/Mips/Fast-ISel/icmpi1.ll
@@ -0,0 +1,14 @@
+; RUN: llc -march=mipsel -relocation-model=pic -O0 -fast-isel=true -mcpu=mips32r2 \
+; RUN: < %s -verify-machineinstrs | FileCheck %s
+
+
+define zeroext i1 @foo(i8* nocapture readonly) {
+; CHECK-LABEL: foo
+; CHECK: lbu $[[REG0:[0-9]+]], 0($4)
+; CHECK-NEXT: xori $[[REG1:[0-9]+]], $[[REG0]], 1
+; CHECK-NEXT: andi $2, $[[REG1]], 1
+ %2 = load i8, i8* %0, align 1
+ %3 = trunc i8 %2 to i1
+ %4 = icmp ne i1 %3, true
+ ret i1 %4
+}
diff --git a/llvm/test/CodeGen/Mips/Fast-ISel/sel1.ll b/llvm/test/CodeGen/Mips/Fast-ISel/sel1.ll
index 04d94eed77a..90446ed339a 100644
--- a/llvm/test/CodeGen/Mips/Fast-ISel/sel1.ll
+++ b/llvm/test/CodeGen/Mips/Fast-ISel/sel1.ll
@@ -7,13 +7,12 @@ define i1 @sel_i1(i1 %j, i1 %k, i1 %l) {
; CHECK-LABEL: sel_i1:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor $1, $4, $zero
-; CHECK-NEXT: sltu $1, $zero, $1
; CHECK-NEXT: andi $1, $1, 1
; CHECK-NEXT: movn $6, $5, $1
; CHECK-NEXT: jr $ra
; CHECK-NEXT: move $2, $6
entry:
- %cond = icmp ne i1 %j, 0
+ %cond = xor i1 %j, false
%res = select i1 %cond, i1 %k, i1 %l
ret i1 %res
}
OpenPOWER on IntegriCloud