[llvm] r231963 - [mips][microMIPS] Make usage of NOT16 by code generator
Jozef Kolek
jozef.kolek at imgtec.com
Wed Mar 11 13:28:32 PDT 2015
Author: jkolek
Date: Wed Mar 11 15:28:31 2015
New Revision: 231963
URL: http://llvm.org/viewvc/llvm-project?rev=231963&view=rev
Log:
[mips][microMIPS] Make usage of NOT16 by code generator
Differential Revision: http://reviews.llvm.org/D7748
Added:
llvm/trunk/test/CodeGen/Mips/micromips-not16.ll
Modified:
llvm/trunk/lib/Target/Mips/MicroMipsInstrInfo.td
llvm/trunk/lib/Target/Mips/MipsInstrInfo.td
Modified: llvm/trunk/lib/Target/Mips/MicroMipsInstrInfo.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MicroMipsInstrInfo.td?rev=231963&r1=231962&r2=231963&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MicroMipsInstrInfo.td (original)
+++ llvm/trunk/lib/Target/Mips/MicroMipsInstrInfo.td Wed Mar 11 15:28:31 2015
@@ -885,6 +885,8 @@ def : MipsPat<(i32 immSExt16:$imm),
(ADDiu_MM ZERO, immSExt16:$imm)>;
def : MipsPat<(i32 immZExt16:$imm),
(ORi_MM ZERO, immZExt16:$imm)>;
+def : MipsPat<(not GPR32:$in),
+ (NOR_MM GPR32Opnd:$in, ZERO)>;
def : MipsPat<(add GPRMM16:$src, immSExtAddiur2:$imm),
(ADDIUR2_MM GPRMM16:$src, immSExtAddiur2:$imm)>;
Modified: llvm/trunk/lib/Target/Mips/MipsInstrInfo.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsInstrInfo.td?rev=231963&r1=231962&r2=231963&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MipsInstrInfo.td (original)
+++ llvm/trunk/lib/Target/Mips/MipsInstrInfo.td Wed Mar 11 15:28:31 2015
@@ -1763,9 +1763,11 @@ def : WrapperPat<tblockaddress, ADDiu, G
def : WrapperPat<tjumptable, ADDiu, GPR32>;
def : WrapperPat<tglobaltlsaddr, ADDiu, GPR32>;
+let AdditionalPredicates = [NotInMicroMips] in {
// Mips does not have "not", so we expand our way
def : MipsPat<(not GPR32:$in),
(NOR GPR32Opnd:$in, ZERO)>;
+}
// extended loads
def : MipsPat<(i32 (extloadi1 addr:$src)), (LBu addr:$src)>;
Added: llvm/trunk/test/CodeGen/Mips/micromips-not16.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/micromips-not16.ll?rev=231963&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/Mips/micromips-not16.ll (added)
+++ llvm/trunk/test/CodeGen/Mips/micromips-not16.ll Wed Mar 11 15:28:31 2015
@@ -0,0 +1,26 @@
+; RUN: llc -march=mipsel -mcpu=mips32r2 -mattr=+micromips \
+; RUN: -relocation-model=pic -O3 < %s | FileCheck %s
+
+define i32 @main() {
+entry:
+ %retval = alloca i32, align 4
+ %x = alloca i64, align 8
+ store i32 0, i32* %retval
+ %0 = load i64, i64* %x, align 8
+ %cmp = icmp ne i64 %0, 9223372036854775807
+ br i1 %cmp, label %if.then, label %if.end
+
+if.then:
+ store i32 1, i32* %retval
+ br label %return
+
+if.end:
+ store i32 0, i32* %retval
+ br label %return
+
+return:
+ %1 = load i32, i32* %retval
+ ret i32 %1
+}
+
+; CHECK: not16
More information about the llvm-commits
mailing list