Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC

Commits:

1 changed file:

Changes:

  • compiler/GHC/CmmToAsm/LA64/CodeGen.hs
    ... ... @@ -1972,9 +1972,17 @@ genCCall target dest_regs arg_regs = do
    1972 1972
                   (val, fmt_val, code_val) <- getSomeReg val_reg
    
    1973 1973
                   let instrs = case ord of
    
    1974 1974
                           MemOrderRelaxed -> unitOL $ ann moDescr (ST fmt_val (OpReg w val) (OpAddr $ AddrReg p))
    
    1975
    -                      -- implement with AMSWAPDB
    
    1976
    -                      MemOrderRelease -> unitOL $ ann moDescr (AMSWAPDB fmt_val (OpReg w zeroReg) (OpReg w val) (OpReg w p))
    
    1977
    -                      MemOrderSeqCst  -> unitOL $ ann moDescr (AMSWAPDB fmt_val (OpReg w zeroReg) (OpReg w val) (OpReg w p))
    
    1975
    +                      -- AMSWAP_DB* insns implentment a fully functional synchronization barrier, like DBAR 0x0.
    
    1976
    +                      -- This is terrible. And AMSWAPDB only supports ISA version greater than LA64V1_0. So,
    
    1977
    +                      -- implement with DBAR
    
    1978
    +                      MemOrderRelease -> toOL [
    
    1979
    +                                                ann moDescr (DBAR HintRelease),
    
    1980
    +                                                ST fmt_val (OpReg w val) (OpAddr $ AddrReg p)
    
    1981
    +                                              ]
    
    1982
    +                      MemOrderSeqCst  -> toOL [
    
    1983
    +                                                ann moDescr (DBAR HintSeqcst),
    
    1984
    +                                                ST fmt_val (OpReg w val) (OpAddr $ AddrReg p)
    
    1985
    +                                              ]
    
    1978 1986
                           _ ->  panic $ "Unexpected MemOrderAcquire on an AtomicWrite" ++ show mo
    
    1979 1987
                       moDescr = (text . show) mo
    
    1980 1988
                       code =