@@ -557,59 +557,117 @@ attributes(device) pure integer function atomicdeci(address, val)
557
557
end function
558
558
end interface
559
559
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
+
560
616
interface
561
617
attributes(device) integer (8 ) function clock64()
562
618
end function
563
619
end interface
564
620
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
614
672
615
673
end module
0 commit comments