On 06/21/2016 09:12 AM, Paolo Bonzini wrote:


On 21/06/2016 17:57, Richard Henderson wrote:

                 || (prefixes & PREFIX_LOCK)) {
                 goto illegal_op;
             }
+            tcg_gen_mb(TCG_MO_ST_ST | TCG_BAR_SC);
             break;
         case 0xe8 ... 0xef: /* lfence */
+            tcg_gen_mb(TCG_MO_LD_LD | TCG_BAR_SC);
+            break;

These are unnecessary.  On the other hand, _each and every load_ must be
followed by a LD_LD | LD_ST barrier, and each and every store must be
preceded by a LD_ST | ST_ST barrier.

They're not unnecessary if we (1) add those barriers for normal loads
and stores and (2) omit them from the non-temporal loads and stores.

When does TCG generate non-temporal loads and stores?

I was talking about the guest non-temporal loads and stores.


r~


Reply via email to