public override Expression GetStoreBufferLocation() { if (!AH.IsPrimitiveType(type)) { return(null); } return(AH.MakeApply1("Armada_StoreBufferLocation_Addressable", address.Val, "Armada_StoreBufferLocation")); }
public override string GetStoreBufferLocation() { if (!AH.IsPrimitiveType(type)) { return(null); } return($"Armada_StoreBufferLocation_Addressable({address.Val})"); }
public override Expression GetStoreBufferLocation() { if (!AH.IsPrimitiveType(type)) { return(null); } var fields = new List <Expression>(); var v = GetStoreBufferLocationInfo(ref fields); if (v == null) { return(null); } var fields_seq = new SeqDisplayExpr(Token.NoToken, fields); return(AH.MakeApply2("Armada_StoreBufferLocation_Unaddressable", v, fields_seq, "Armada_StoreBufferLocation")); }
public override string GetStoreBufferLocation() { if (!AH.IsPrimitiveType(type)) { return(null); } var fields = new List <string>(); var v = GetStoreBufferLocationInfo(ref fields); if (v == null) { return(null); } var fields_seq = String.Join(", ", fields); return($"Armada_StoreBufferLocation_Unaddressable({v}, [{fields_seq}])"); }
public Expression UpdateTotalStateWithStoreBufferEntry(ResolutionContext context, IConstraintCollector constraintCollector, Expression val_new) { if (NoTSO()) { return(UpdateTotalStateLocationDirectly(context, constraintCollector, val_new)); } if (!AH.IsPrimitiveType(type)) { context.Fail(tok, "Can't do TSO write to non-primitive type; try using ::= instead of :="); return(null); } var entry = GetStoreBufferEntry(val_new); if (entry == null) { context.Fail(tok, "Can't do a TSO write to that location; try using ::= instead of :="); return(null); } return(AH.MakeApply3("Armada_AppendToThreadStoreBuffer", context.GetLValueState(), context.tid, entry, "Armada_TotalState")); }
public string UpdateTotalStateWithStoreBufferEntry(ResolutionContext context, IConstraintCollector constraintCollector, string val_new, ArmadaPC pc) { if (NoTSO()) { return(UpdateTotalStateLocationDirectly(context, constraintCollector, val_new)); } if (!AH.IsPrimitiveType(type)) { context.Fail(tok, "Can't do TSO write to non-primitive type; try using ::= instead of :="); return(null); } var entry = GetStoreBufferEntry(val_new, pc); if (entry == null) { context.Fail(tok, "Can't do a TSO write to that location; try using ::= instead of :="); return(null); } return($"Armada_AppendToThreadStoreBuffer({context.GetLValueState()}, {context.tid}, {entry})"); }