Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC
Commits:
-
c2a78cea
by Peng Fan at 2025-08-05T18:37:27-04:00
1 changed file:
Changes:
| ... | ... | @@ -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 =
|