mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-02 00:16:25 +00:00
[mips][microMIPS] Make usage of NOT16 by code generator
Differential Revision: http://reviews.llvm.org/D7748 llvm-svn: 231963
This commit is contained in:
parent
b2c96e6a26
commit
3f22787f2e
@ -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)>;
|
||||
|
@ -1763,9 +1763,11 @@ def : WrapperPat<tblockaddress, ADDiu, GPR32>;
|
||||
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)>;
|
||||
|
26
test/CodeGen/Mips/micromips-not16.ll
Normal file
26
test/CodeGen/Mips/micromips-not16.ll
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user