diff options
author | Anton Korobeynikov <asl@math.spbu.ru> | 2009-05-03 13:14:46 +0000 |
---|---|---|
committer | Anton Korobeynikov <asl@math.spbu.ru> | 2009-05-03 13:14:46 +0000 |
commit | 5d59f68ade7573175f1ace09061a94286e59076b (patch) | |
tree | 3e0e5699d29f7d77f7fb5f5b84f876f8dc3d968f /lib/Target/MSP430/MSP430InstrInfo.td | |
parent | 8725bd22bf91c29e2351a127295c19fea996e2c7 (diff) | |
download | llvm-5d59f68ade7573175f1ace09061a94286e59076b.tar.gz llvm-5d59f68ade7573175f1ace09061a94286e59076b.tar.bz2 llvm-5d59f68ade7573175f1ace09061a94286e59076b.tar.xz |
Properly handle ExternalSymbol's
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70752 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/MSP430/MSP430InstrInfo.td')
-rw-r--r-- | lib/Target/MSP430/MSP430InstrInfo.td | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/Target/MSP430/MSP430InstrInfo.td b/lib/Target/MSP430/MSP430InstrInfo.td index 74c37d9f21..63576b0b21 100644 --- a/lib/Target/MSP430/MSP430InstrInfo.td +++ b/lib/Target/MSP430/MSP430InstrInfo.td @@ -718,15 +718,25 @@ def : Pat<(extloadi16i8 addr:$src), (MOVZX16rm8 addr:$src)>; def : Pat<(i8 (trunc GR16:$src)), (EXTRACT_SUBREG GR16:$src, subreg_8bit)>; -// GlobalAddress +// GlobalAddress, ExternalSymbol def : Pat<(i16 (MSP430Wrapper tglobaladdr:$dst)), (MOV16ri tglobaladdr:$dst)>; +def : Pat<(i16 (MSP430Wrapper texternalsym:$dst)), (MOV16ri texternalsym:$dst)>; def : Pat<(add GR16:$src1, (MSP430Wrapper tglobaladdr :$src2)), (ADD16ri GR16:$src1, tglobaladdr:$src2)>; +def : Pat<(add GR16:$src1, (MSP430Wrapper texternalsym:$src2)), + (ADD16ri GR16:$src1, texternalsym:$src2)>; + +def : Pat<(store (i16 (MSP430Wrapper tglobaladdr:$src)), addr:$dst), + (MOV16mi addr:$dst, tglobaladdr:$src)>; +def : Pat<(store (i16 (MSP430Wrapper texternalsym:$src)), addr:$dst), + (MOV16mi addr:$dst, texternalsym:$src)>; // calls def : Pat<(MSP430call (i16 tglobaladdr:$dst)), (CALLi tglobaladdr:$dst)>; +def : Pat<(MSP430call (i16 texternalsym:$dst)), + (CALLi texternalsym:$dst)>; // add and sub always produce carry def : Pat<(addc GR16:$src1, GR16:$src2), |