@@ -577,75 +577,6 @@ Monad type:
577577 read_addr (eiid,Evt. empty) in
578578 eiid,(acts,None )
579579
580- (* AArch64 failed cas *)
581- let do_aarch64_cas_no
582- (is_physical :bool )
583- (add_ctrl :bool )
584- (read_rn :'loc t ) (read_rs :'v t )
585- (write_rs :'v-> unit t )
586- (read_mem : 'loc -> 'v t )
587- (branch : 'loc -> unit t )
588- (rne : 'v -> 'v -> unit t )
589- eiid =
590- let eiid,read_rn = read_rn eiid in
591- let eiid,read_rs = read_rs eiid in
592- let cv,cl_cv,es_rs = Evt. as_singleton_nospecul read_rs in
593- let acts_rn,spec = read_rn in
594- assert (Misc. is_none spec) ;
595- let eiid,acts =
596- Evt. fold
597- (fun (a ,cl_a ,es_rn ) (eiid ,acts ) ->
598- let eiid,read_mem = read_mem a eiid in
599- let ov,cl_rm,es_rm = Evt. as_singleton_nospecul read_mem in
600- let eiid,write_rs = write_rs ov eiid in
601- let () ,cl_wrs,es_wrs = Evt. as_singleton_nospecul write_rs in
602- let eiid,branch = branch a eiid in
603- let () ,cl_br,es_br = Evt. as_singleton_nospecul branch in
604- let eiid,nem = rne ov cv eiid in
605- let () ,cl_ne,eseq = Evt. as_singleton_nospecul nem in
606- assert (E. is_empty_event_structure eseq) ;
607- let es =
608- E. aarch64_cas_no is_physical add_ctrl es_rn es_rs es_wrs es_rm es_br in
609- let cls = cl_a@ cl_cv@ cl_rm@ cl_wrs@ cl_ne@ cl_br in
610- eiid,Evt. add (() ,cls,es) acts)
611- acts_rn (eiid,Evt. empty) in
612- eiid,(acts, None )
613-
614- (* AArch64 failed cas that writes into memory nevertheless *)
615- let do_aarch64_cas_no_with_writeback
616- (is_physical :bool )
617- (read_rn :'loc t ) (read_rs :'v t )
618- (write_rs :'v-> unit t )
619- (read_mem : 'loc -> 'v t ) (write_mem : 'loc -> 'v -> unit t )
620- (branch : 'loc -> unit t )
621- (rne : 'v -> 'v -> unit t )
622- eiid =
623- let eiid,read_rn = read_rn eiid in
624- let eiid,read_rs = read_rs eiid in
625- let cv,cl_cv,es_rs = Evt. as_singleton_nospecul read_rs in
626- let acts_rn,spec = read_rn in
627- assert (Misc. is_none spec) ;
628- let eiid,acts =
629- Evt. fold
630- (fun (a ,cl_a ,es_rn ) (eiid ,acts ) ->
631- let eiid,read_mem = read_mem a eiid in
632- let ov,cl_rm,es_rm = Evt. as_singleton_nospecul read_mem in
633- let eiid,write_mem = write_mem a ov eiid in
634- let () ,cl_wm,es_wm= Evt. as_singleton_nospecul write_mem in
635- let eiid,write_rs = write_rs ov eiid in
636- let () ,cl_wrs,es_wrs = Evt. as_singleton_nospecul write_rs in
637- let eiid,branch = branch a eiid in
638- let () ,cl_br,es_br = Evt. as_singleton_nospecul branch in
639- let eiid,nem = rne ov cv eiid in
640- let () ,cl_ne,eseq = Evt. as_singleton_nospecul nem in
641- assert (E. is_empty_event_structure eseq) ;
642- let es =
643- E. aarch64_cas_ok is_physical `DataFromRx es_rn es_rs E. empty_event_structure es_wrs es_rm es_wm es_br in
644- let cls = cl_a@ cl_cv@ cl_rm@ cl_wm@ cl_wrs@ cl_br@ cl_ne in
645- eiid,Evt. add (() ,cls,es) acts)
646- acts_rn (eiid,Evt. empty) in
647- eiid,(acts, None )
648-
649580(* AArch64 successful cas *)
650581 let do_aarch64_cas_ok
651582 (is_physical :bool ) (prov_data : [`DataFromRRs | `DataFromRx] )
@@ -677,7 +608,7 @@ Monad type:
677608 let () ,cl_eq,eseq = Evt. as_singleton_nospecul eqm in
678609 assert (E. is_empty_event_structure eseq) ;
679610 let es =
680- E. aarch64_cas_ok is_physical prov_data es_rn es_rs es_rt es_wrs es_rm es_wm es_br in
611+ E. aarch64_cas is_physical prov_data es_rn es_rs es_rt es_wrs es_rm es_wm es_br in
681612 let cls = cl_a@ cl_cv@ cl_nv@ cl_rm@ cl_wm@ cl_wrs@ cl_br@ cl_eq in
682613 eiid,Evt. add (() ,cls,es) acts)
683614 acts_rn (eiid,Evt. empty) in
@@ -737,20 +668,35 @@ Monad type:
737668 in
738669 altT (do_ `DataFromRRs ) (do_ `DataFromRx )
739670
740- let aarch64_cas_no (is_physical :bool ) (read_rn :'loc t ) (read_rs :'v t )
741- (write_rs :'v-> unit t ) (read_mem : 'loc -> 'v t ) (branch : 'loc -> unit t )
742- (rne : 'v -> 'v -> unit t ) =
743- let do_ add_ctrl =
744- do_aarch64_cas_no is_physical add_ctrl read_rn read_rs write_rs
745- read_mem branch rne
746- in
747- altT (do_ true ) (do_ false )
748-
749- let aarch64_cas_no_with_writeback (is_physical : bool ) (read_rn : 'loc t )
671+ let aarch64_cas_no (is_physical : bool ) (read_rn : 'loc t )
750672 (read_rs : 'v t ) (write_rs : 'v -> unit t ) (read_mem : 'loc -> 'v t )
751- (write_mem : 'loc -> 'v -> unit t ) (branch : 'loc -> unit t ) (rne : 'v -> 'v -> unit t ) =
752- do_aarch64_cas_no_with_writeback is_physical read_rn read_rs
753- write_rs read_mem write_mem branch rne
673+ (write_mem : 'loc -> 'v -> unit t ) (branch : 'loc -> unit t ) (rne : 'v -> 'v -> unit t )
674+ eiid =
675+ let eiid,read_rn = read_rn eiid in
676+ let eiid,read_rs = read_rs eiid in
677+ let cv,cl_cv,es_rs = Evt. as_singleton_nospecul read_rs in
678+ let acts_rn,spec = read_rn in
679+ assert (Misc. is_none spec) ;
680+ let eiid,acts =
681+ Evt. fold
682+ (fun (a ,cl_a ,es_rn ) (eiid ,acts ) ->
683+ let eiid,read_mem = read_mem a eiid in
684+ let ov,cl_rm,es_rm = Evt. as_singleton_nospecul read_mem in
685+ let eiid,write_mem = write_mem a ov eiid in
686+ let () ,cl_wm,es_wm= Evt. as_singleton_nospecul write_mem in
687+ let eiid,write_rs = write_rs ov eiid in
688+ let () ,cl_wrs,es_wrs = Evt. as_singleton_nospecul write_rs in
689+ let eiid,branch = branch a eiid in
690+ let () ,cl_br,es_br = Evt. as_singleton_nospecul branch in
691+ let eiid,nem = rne ov cv eiid in
692+ let () ,cl_ne,eseq = Evt. as_singleton_nospecul nem in
693+ assert (E. is_empty_event_structure eseq) ;
694+ let es =
695+ E. aarch64_cas is_physical `No es_rn es_rs E. empty_event_structure es_wrs es_rm es_wm es_br in
696+ let cls = cl_a@ cl_cv@ cl_rm@ cl_wm@ cl_wrs@ cl_br@ cl_ne in
697+ eiid,Evt. add (() ,cls,es) acts)
698+ acts_rn (eiid,Evt. empty) in
699+ eiid,(acts, None )
754700
755701 (* RISCV store conditional may always succeed? *)
756702 let riscv_store_conditional = aarch64_or_riscv_store_conditional false
0 commit comments