diff options
| author | Petar Jovanovic <petar.jovanovic@mips.com> | 2018-07-17 14:57:46 +0000 |
|---|---|---|
| committer | Petar Jovanovic <petar.jovanovic@mips.com> | 2018-07-17 14:57:46 +0000 |
| commit | f10e4798b4d9f5d52da9c004341b7c98727638f8 (patch) | |
| tree | 65a7b239882405878254ffa266f027912dd02df0 /llvm/test | |
| parent | 46ae0afba7bc80389095335da5dbed63bf3d7ba9 (diff) | |
| download | bcm5719-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.ll | 14 | ||||
| -rw-r--r-- | llvm/test/CodeGen/Mips/Fast-ISel/sel1.ll | 3 |
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 } |

