diff options
author | Vasileios Kalintiris <Vasileios.Kalintiris@imgtec.com> | 2016-02-29 15:58:12 +0000 |
---|---|---|
committer | Vasileios Kalintiris <Vasileios.Kalintiris@imgtec.com> | 2016-02-29 15:58:12 +0000 |
commit | 29620aca3e85cb16434069c86b43a4baf8accc67 (patch) | |
tree | c41ea4e7ba6f719b67cc83588e96fbd90b49d241 /llvm/lib/Target/Mips | |
parent | 611eb829532da35c19f6ac85818eae06e5534b5e (diff) | |
download | bcm5719-llvm-29620aca3e85cb16434069c86b43a4baf8accc67.tar.gz bcm5719-llvm-29620aca3e85cb16434069c86b43a4baf8accc67.zip |
[mips] Do not use SLL for ANY_EXTEND nodes as the high bits are undefined.
Reviewers: dsanders
Subscribers: dsanders, llvm-commits
Differential Revision: http://reviews.llvm.org/D15420
llvm-svn: 262230
Diffstat (limited to 'llvm/lib/Target/Mips')
-rw-r--r-- | llvm/lib/Target/Mips/Mips64InstrInfo.td | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Target/Mips/Mips64InstrInfo.td b/llvm/lib/Target/Mips/Mips64InstrInfo.td index e0a31c846f3..69c126af8c5 100644 --- a/llvm/lib/Target/Mips/Mips64InstrInfo.td +++ b/llvm/lib/Target/Mips/Mips64InstrInfo.td @@ -514,7 +514,8 @@ def : MipsPat<(rotr GPR64:$rt, (i32 (trunc GPR64:$rs))), (DROTRV GPR64:$rt, (EXTRACT_SUBREG GPR64:$rs, sub_32))>; // 32-to-64-bit extension -def : MipsPat<(i64 (anyext GPR32:$src)), (SLL64_32 GPR32:$src)>; +def : MipsPat<(i64 (anyext GPR32:$src)), + (INSERT_SUBREG (i64 (IMPLICIT_DEF)), GPR32:$src, sub_32)>; def : MipsPat<(i64 (zext GPR32:$src)), (DSRL (DSLL64_32 GPR32:$src), 32)>; def : MipsPat<(i64 (sext GPR32:$src)), (SLL64_32 GPR32:$src)>; |