@@ -557,59 +557,117 @@ attributes(device) pure integer function atomicdeci(address, val)
557557 end function
558558 end interface
559559
560+ interface atomiccas
561+ attributes(device) pure integer function atomiccasi(address, val, val2)
562+ ! dir$ ignore_tkr (rd) address, (d) val, (d) val2
563+ integer , intent (inout ) :: address
564+ integer , value :: val, val2
565+ end function
566+ attributes(device) pure integer (8 ) function atomiccasul(address, val, val2)
567+ ! dir$ ignore_tkr (rd) address, (dk) val, (dk) val2
568+ integer (8 ), intent (inout ) :: address
569+ integer (8 ), value :: val, val2
570+ end function
571+ attributes(device) pure real function atomiccasf(address, val, val2)
572+ ! dir$ ignore_tkr (rd) address, (d) val, (d) val2
573+ real , intent (inout ) :: address
574+ real , value :: val, val2
575+ end function
576+ attributes(device) pure double precision function atomiccasd(address, val, val2)
577+ ! dir$ ignore_tkr (rd) address, (d) val, (d) val2
578+ double precision , intent (inout ) :: address
579+ double precision , value :: val, val2
580+ end function
581+ end interface
582+
583+ interface atomicexch
584+ attributes(device) pure integer function atomicexchi(address, val)
585+ ! dir$ ignore_tkr (rd) address, (d) val
586+ integer , intent (inout ) :: address
587+ integer , value :: val
588+ end function
589+ attributes(device) pure integer (8 ) function atomicexchul(address, val)
590+ ! dir$ ignore_tkr (rd) address, (dk) val
591+ integer (8 ), intent (inout ) :: address
592+ integer (8 ), value :: val
593+ end function
594+ attributes(device) pure real function atomicexchf(address, val)
595+ ! dir$ ignore_tkr (rd) address, (d) val
596+ real , intent (inout ) :: address
597+ real , value :: val
598+ end function
599+ attributes(device) pure double precision function atomicexchd(address, val)
600+ ! dir$ ignore_tkr (rd) address, (d) val
601+ double precision , intent (inout ) :: address
602+ double precision , value :: val
603+ end function
604+ end interface
605+
606+ interface atomicxor
607+ attributes(device) pure integer function atomicxori(address, val)
608+ ! dir$ ignore_tkr (rd) address, (d) val
609+ integer , intent (inout ) :: address
610+ integer , value :: val
611+ end function
612+ end interface
613+
614+ ! Time function
615+
560616 interface
561617 attributes(device) integer (8 ) function clock64()
562618 end function
563619 end interface
564620
565- interface match_all_sync
566- attributes(device) integer function match_all_syncjj(mask, val, pred)
567- ! dir$ ignore_tkr(d) mask, (d) val, (d) pred
568- integer (4 ), value :: mask
569- integer (4 ), value :: val
570- integer (4 ) :: pred
571- end function
572- attributes(device) integer function match_all_syncjx(mask, val, pred)
573- ! dir$ ignore_tkr(d) mask, (d) val, (d) pred
574- integer (4 ), value :: mask
575- integer (8 ), value :: val
576- integer (4 ) :: pred
577- end function
578- attributes(device) integer function match_all_syncjf(mask, val, pred)
579- ! dir$ ignore_tkr(d) mask, (d) val, (d) pred
580- integer (4 ), value :: mask
581- real (4 ), value :: val
582- integer (4 ) :: pred
583- end function
584- attributes(device) integer function match_all_syncjd(mask, val, pred)
585- ! dir$ ignore_tkr(d) mask, (d) val, (d) pred
586- integer (4 ), value :: mask
587- real (8 ), value :: val
588- integer (4 ) :: pred
589- end function
590- end interface
591-
592- interface match_any_sync
593- attributes(device) integer function match_any_syncjj(mask, val)
594- ! dir$ ignore_tkr(d) mask, (d) val
595- integer (4 ), value :: mask
596- integer (4 ), value :: val
597- end function
598- attributes(device) integer function match_any_syncjx(mask, val)
599- ! dir$ ignore_tkr(d) mask, (d) val
600- integer (4 ), value :: mask
601- integer (8 ), value :: val
602- end function
603- attributes(device) integer function match_any_syncjf(mask, val)
604- ! dir$ ignore_tkr(d) mask, (d) val
605- integer (4 ), value :: mask
606- real (4 ), value :: val
607- end function
608- attributes(device) integer function match_any_syncjd(mask, val)
609- ! dir$ ignore_tkr(d) mask, (d) val
610- integer (4 ), value :: mask
611- real (8 ), value :: val
612- end function
613- end interface
621+ ! Warp Match Functions
622+
623+ interface match_all_sync
624+ attributes(device) integer function match_all_syncjj(mask, val, pred)
625+ ! dir$ ignore_tkr(d) mask, (d) val, (d) pred
626+ integer (4 ), value :: mask
627+ integer (4 ), value :: val
628+ integer (4 ) :: pred
629+ end function
630+ attributes(device) integer function match_all_syncjx(mask, val, pred)
631+ ! dir$ ignore_tkr(d) mask, (d) val, (d) pred
632+ integer (4 ), value :: mask
633+ integer (8 ), value :: val
634+ integer (4 ) :: pred
635+ end function
636+ attributes(device) integer function match_all_syncjf(mask, val, pred)
637+ ! dir$ ignore_tkr(d) mask, (d) val, (d) pred
638+ integer (4 ), value :: mask
639+ real (4 ), value :: val
640+ integer (4 ) :: pred
641+ end function
642+ attributes(device) integer function match_all_syncjd(mask, val, pred)
643+ ! dir$ ignore_tkr(d) mask, (d) val, (d) pred
644+ integer (4 ), value :: mask
645+ real (8 ), value :: val
646+ integer (4 ) :: pred
647+ end function
648+ end interface
649+
650+ interface match_any_sync
651+ attributes(device) integer function match_any_syncjj(mask, val)
652+ ! dir$ ignore_tkr(d) mask, (d) val
653+ integer (4 ), value :: mask
654+ integer (4 ), value :: val
655+ end function
656+ attributes(device) integer function match_any_syncjx(mask, val)
657+ ! dir$ ignore_tkr(d) mask, (d) val
658+ integer (4 ), value :: mask
659+ integer (8 ), value :: val
660+ end function
661+ attributes(device) integer function match_any_syncjf(mask, val)
662+ ! dir$ ignore_tkr(d) mask, (d) val
663+ integer (4 ), value :: mask
664+ real (4 ), value :: val
665+ end function
666+ attributes(device) integer function match_any_syncjd(mask, val)
667+ ! dir$ ignore_tkr(d) mask, (d) val
668+ integer (4 ), value :: mask
669+ real (8 ), value :: val
670+ end function
671+ end interface
614672
615673end module
0 commit comments