diff options
Diffstat (limited to 'lib/Target/Lanai/LanaiInstrInfo.td')
-rw-r--r-- | lib/Target/Lanai/LanaiInstrInfo.td | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/Target/Lanai/LanaiInstrInfo.td b/lib/Target/Lanai/LanaiInstrInfo.td index 776fee101dfe..66192b4a4704 100644 --- a/lib/Target/Lanai/LanaiInstrInfo.td +++ b/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)>; |