diff options
author | Anton Korobeynikov <asl@math.spbu.ru> | 2009-11-02 00:11:39 +0000 |
---|---|---|
committer | Anton Korobeynikov <asl@math.spbu.ru> | 2009-11-02 00:11:39 +0000 |
commit | 3a639a07ea14f2e404fb1d3a14005ff468543911 (patch) | |
tree | beccc61209f2d28cd9ced4e1370eb8cfcad99c91 /lib/Target/Blackfin/BlackfinInstrInfo.td | |
parent | 2e1da9fea468e33f8fedd4295ef4a73a0ccb5714 (diff) | |
download | external_llvm-3a639a07ea14f2e404fb1d3a14005ff468543911.zip external_llvm-3a639a07ea14f2e404fb1d3a14005ff468543911.tar.gz external_llvm-3a639a07ea14f2e404fb1d3a14005ff468543911.tar.bz2 |
Do not infer the target type for COPY_TO_REGCLASS from dest regclass, this won't work if it can contain several types. Require explicit result type for the node for now. This fixes PR5364.
PS: It seems that blackfin usage of copy_to_regclass is completely bogus!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85766 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/Blackfin/BlackfinInstrInfo.td')
-rw-r--r-- | lib/Target/Blackfin/BlackfinInstrInfo.td | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/Target/Blackfin/BlackfinInstrInfo.td b/lib/Target/Blackfin/BlackfinInstrInfo.td index 934b188..c952af1 100644 --- a/lib/Target/Blackfin/BlackfinInstrInfo.td +++ b/lib/Target/Blackfin/BlackfinInstrInfo.td @@ -465,16 +465,16 @@ def STORE32i_post: F1<(outs I:$ptr_wb), (ins D:$val, I:$ptr, M:$off), } def : Pat<(truncstorei16 D:$val, PI:$ptr), - (STORE16pi (EXTRACT_SUBREG (COPY_TO_REGCLASS D:$val, D), + (STORE16pi (EXTRACT_SUBREG (i32 (COPY_TO_REGCLASS D:$val, D)), bfin_subreg_lo16), PI:$ptr)>; def : Pat<(truncstorei16 (srl D:$val, (i16 16)), PI:$ptr), - (STORE16pi (EXTRACT_SUBREG (COPY_TO_REGCLASS D:$val, D), + (STORE16pi (EXTRACT_SUBREG (i32 (COPY_TO_REGCLASS D:$val, D)), bfin_subreg_hi16), PI:$ptr)>; def : Pat<(truncstorei8 D16L:$val, P:$ptr), (STORE8p (INSERT_SUBREG (i32 (IMPLICIT_DEF)), - (COPY_TO_REGCLASS D16L:$val, D16L), + (i16 (COPY_TO_REGCLASS D16L:$val, D16L)), bfin_subreg_lo16), P:$ptr)>; @@ -525,7 +525,7 @@ def : Pat<(and D:$src, 0xffff), def : Pat<(i32 (anyext D16L:$src)), (INSERT_SUBREG (i32 (IMPLICIT_DEF)), - (COPY_TO_REGCLASS D16L:$src, D16L), + (i16 (COPY_TO_REGCLASS D16L:$src, D16L)), bfin_subreg_lo16)>; // TODO Dreg = Dreg_byte (X/Z) @@ -870,4 +870,4 @@ def : Pat<(i16 (anyext JustCC:$cc)), (EXTRACT_SUBREG (MOVECC_zext JustCC:$cc), bfin_subreg_lo16)>; def : Pat<(i16 (trunc D:$src)), - (EXTRACT_SUBREG (COPY_TO_REGCLASS D:$src, D), bfin_subreg_lo16)>; + (EXTRACT_SUBREG (i32 (COPY_TO_REGCLASS D:$src, D)), bfin_subreg_lo16)>; |