summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Mips
diff options
context:
space:
mode:
authorVasileios Kalintiris <Vasileios.Kalintiris@imgtec.com>2016-02-29 15:58:12 +0000
committerVasileios Kalintiris <Vasileios.Kalintiris@imgtec.com>2016-02-29 15:58:12 +0000
commit29620aca3e85cb16434069c86b43a4baf8accc67 (patch)
treec41ea4e7ba6f719b67cc83588e96fbd90b49d241 /llvm/lib/Target/Mips
parent611eb829532da35c19f6ac85818eae06e5534b5e (diff)
downloadbcm5719-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.td3
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)>;
OpenPOWER on IntegriCloud