diff options
author | Jacques Pienaar <jpienaar@google.com> | 2018-07-03 22:57:51 +0000 |
---|---|---|
committer | Jacques Pienaar <jpienaar@google.com> | 2018-07-03 22:57:51 +0000 |
commit | 75ffecce69b6b61b83d7d5be09a85d9ec6e25473 (patch) | |
tree | aeab77ef107f9d2a400ee49691b91ce88a5f38c3 /llvm/lib/Target/Lanai | |
parent | 89741192610f98d921208277d15fbd37d755f493 (diff) |
[lanai] Handle atomic load of i8 like regular load.
Loads and stores less than 64-bits are already atomic, this adds support for a special case thereof. This needs to be expanded.
Diffstat (limited to 'llvm/lib/Target/Lanai')
-rw-r--r-- | llvm/lib/Target/Lanai/LanaiInstrInfo.td | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/Lanai/LanaiInstrInfo.td b/llvm/lib/Target/Lanai/LanaiInstrInfo.td index 776fee101df..66192b4a470 100644 --- a/llvm/lib/Target/Lanai/LanaiInstrInfo.td +++ b/llvm/lib/Target/Lanai/LanaiInstrInfo.td @@ -842,6 +842,10 @@ def : Pat<(Call texternalsym:$dst), (CALL texternalsym:$dst)>; // Loads def : Pat<(extloadi8 ADDRspls:$src), (i32 (LDBz_RI ADDRspls:$src))>; def : Pat<(extloadi16 ADDRspls:$src), (i32 (LDHz_RI ADDRspls:$src))>; +// Loads up to 32-bits are already atomic. +// TODO: This is a workaround for a particular failing case and should be +// handled more generally. +def : Pat<(atomic_load_8 ADDRspls:$src), (i32 (LDBz_RI ADDRspls:$src))>; // GlobalAddress, ExternalSymbol, Jumptable, ConstantPool def : Pat<(LanaiHi tglobaladdr:$dst), (MOVHI tglobaladdr:$dst)>; |