lundi 18 septembre 2023

mathieeedoubbas.lib 45.4

Nouvelle version de la mathieeedoubbas.library du Workbench 3.9 avec surtout une belle nouveauté :

  • 11 nouvelles fonctions _fp0 "registre"
  • spécial support du 68040
  • compatible avec tous les 68k et toutes les Fpu
     
Cette version supporte les 68000 (à tester), 68010 (à tester), 68EC020, 68020, 68EC030, 68030, 68EC020+881, 68EC020+882, 68020+881, 68020+882, 68EC030+881, 68EC030+882, 68LC040, 68040, 60LC060 et 68060. Le code adéquat s'adapte automatiquement au Cpu et au Fpu, l'utilisateur n'a rien à faire du tout.
 
J'ignore si les 68EC040 et 68EC060 (donc sans Fpu et sans Mmu) fonctionnent sur nos cartes accélératrices, nécessitent déjà quelques modifications dans leur 68040.library et 68060.library je pense...

Alors, les argument et les return ont toujours été utilisé en integer avec les anciennes fonctions : or, avec une Fpu il est bien plus intéressant de plutôt recourir à ses registres à elle. Regardez la belle différence :
11 instructions avec l'ancienne fonction. Maintenant seulement 4 avec la nouvelle : un VRAI progrès !

Avant de développer du nouvel hardware, d'y consacrer un temps et une énergie considérable et dans certains cas de causer de nouveaux problèmes là où il n'y en avait aucun auparavant, me semble beaucoup plus logique et futé de commencer par utiliser au mieux les possibilités software de nos valeureux 68k sur le matériel déjà existant.
 
Alors certes les jeux 3D n'iront pas 10 fps plus vite je vous l'accorde, mais au moins nos Cpus et Fpus donnent enfin le meilleur d'eux même pour ces opérations. Ces 11 nouvelles fonctions _fp0 :
  1. n'utilisent plus les accès mémoires (la pile)
  2. n'utilisent plus le data cache du Cpu
  3. utilisent beaucoup moins le code cache du Cpu
  4. utilisent moins d'instructions Cpu et Fpu
  5. fonctionnent avec tous les Fpu 68k
  6. 100% compatible avec toutes les cartes accélératrices équipées d'un Fpu 68k 
  7. nouvelle librarie à priori compatible tout Kickstart et Workbench (à tester)

 
Cette librairie aurait dû être disponible à la sortie de l'Amiga 3000 en 1990 : 33 ans de retard ! Bravo !!

Ma nouvelle version de doubbasTest 1.1 détecte automatiquement cette nouvelle librairie. Quelques benchs réalisés sous WinUAE entre les anciennes d0-d1 et mes nouvelles _fp0 :

1) IEEEDPFix (80.9394)                            38) IEEEDPFix_fp0 (80.9394)
Elapsed time : 7.8 seconds                       Elapsed time : 4.98 seconds                          56 % plus rapide

2) IEEEDPFix (-80.9394)                           39) IEEEDPFix_fp0 (-80.9394)
Elapsed time : 7.8 seconds                       Elapsed time : 4.96 seconds                           57% plus rapide

3) IEEEDPFlt (33)                                      40) IEEEDPFlt_fp0 (33)
Elapsed time : 7.82 seconds                     Elapsed time : 4.98 seconds                           57% plus rapide

4) IEEEDPFlt (-33),                                    41) IEEEDPFlt_fp0 (-33)
Elapsed time : 7.8 seconds                        Elapsed time : 4.98 seconds                          56% plus rapide

5) IEEEDPCmp (80.9394, 94.951)             42) IEEEDPCmp_fp0 (80.9394, 94.951)
Elapsed time : 12.06 seconds                    Elapsed time : 8.52 seconds                          41% plus rapide

6) IEEEDPCmp (80.9394, 80.9394)           43) IEEEDPCmp_fp0 (80.9394, 80.9394)
Elapsed time : 14.9 seconds                       Elapsed time : 7.8 seconds                          91% plus rapide

7) IEEEDPCmp (80.9394, -94.951)            44) IEEEDPCmp_fp0 (80.9394, -94.951)
Elapsed time : 12.08 seconds                     Elapsed time : 8.52 seconds                         41% plus rapide

8) IEEEDPCmp (-80.9394, -94.951)           45) IEEEDPCmp_fp0 (-80.9394, -94.951)
Elapsed time : 12.78 seconds                     Elapsed time : 8.52 seconds                         50% plus rapide

9) IEEEDPCmp (-80.9394, 94.951)            46) IEEEDPCmp_fp0 (-80.9394, 94.951)
Elapsed time : 11.36 seconds                     Elapsed time : 8.52 seconds                         33% plus rapide

10) IEEEDPCmp (-80.9394, -80.9394)       47) IEEEDPCmp_fp0 (-80.9394, -80.9394)
Elapsed time : 14.9 seconds                       Elapsed time : 7.82 seconds                         90% plus rapide

14) IEEEDPAbs (94.951)                            48) IEEEDPAbs_fp0 (94.951)
Elapsed time : 5.68 seconds                      Elapsed time : 4.96 seconds                          14% plus rapide

15) IEEEDPAbs (-94.951)                          49) IEEEDPAbs_fp0 (-94.951)
Elapsed time : 5.68 seconds                      Elapsed time : 4.96 seconds                          14% plus rapide

16) IEEEDPNeg (94.951)                           50) IEEEDPNeg_fp0 (94.951)
Elapsed time : 5.68 seconds                      Elapsed time : 4.98 seconds                          14% plus rapide

17) IEEEDPNeg (-94.951)                          51) IEEEDPNeg_fp0 (-94.951)
Elapsed time : 5.68 seconds                      Elapsed time : 4.96 seconds                          14% plus rapide

18) IEEEDPAdd (80.9394, 123.9291)        52) IEEEDPAdd_fp0 (80.9394, 123.9291)
Elapsed time : 11.36 seconds                    Elapsed time : 5.68 seconds                        100% plus rapide

19) IEEEDPAdd (-80.9394, 123.9291)       53) IEEEDPAdd_fp0 (-80.9394, 123.9291)
Elapsed time : 11.36 seconds                     Elapsed time : 5.68 seconds                       100% plus rapide

20) IEEEDPAdd (-80.9394, -123.9291)      54) IEEEDPAdd_fp0 (-80.9394, -123.9291)
Elapsed time : 11.36 seconds                     Elapsed time : 5.68 seconds                       100% plus rapide

21) IEEEDPAdd (80.9394, -123.9291)       55) IEEEDPAdd_fp0 (80.9394, -123.9291)
Elapsed time : 11.36 seconds                     Elapsed time : 5.68 seconds                       100% plus rapide

22) IEEEDPSub (80.9394, 123.9291)        56) IEEEDPSub_fp0 (80.9394, 123.9291)
Elapsed time : 11.36 seconds                     Elapsed time : 5.68 seconds                       100% plus rapide

23) IEEEDPSub (-80.9394, 123.9291)       57) IEEEDPSub_fp0 (-80.9394, 123.9291)
Elapsed time : 11.36 seconds                    Elapsed time : 5.68 seconds                       100% plus rapide

24) IEEEDPSub (-80.9394, -123.9291)      58) IEEEDPSub_fp0 (-80.9394, -123.9291)
Elapsed time : 11.36 seconds                     Elapsed time : 5.68 seconds                      100% plus rapide

25) IEEEDPSub (80.9394, -123.9291)       59) IEEEDPSub_fp0 (80.9394, -123.9291)
Elapsed time : 11.36 seconds                    Elapsed time : 5.68 seconds                       100% plus rapide

26) IEEEDPMul (80.9394, 123.9291)         60) IEEEDPMul_fp0 (80.9394, 123.9291)
Elapsed time : 11.36 seconds                    Elapsed time : 5.66 seconds                       100% plus rapide

27) IEEEDPMul (-80.9394, 123.9291)        61) IEEEDPMul_fp0 (-80.9394, 123.9291)
Elapsed time : 11.36 seconds                     Elapsed time : 5.66 seconds                      100% plus rapide

28) IEEEDPMul (-80.9394, -123.9291)      62) IEEEDPMul_fp0 (-80.9394, -123.9291)
Elapsed time : 11.36 seconds                     Elapsed time : 5.68 seconds                      100% plus rapide

29) IEEEDPMul (80.9394, -123.9291)       63) IEEEDPMul_fp0 (80.9394, -123.9291)
Elapsed time : 11.36 seconds                     Elapsed time : 5.68 seconds                      100% plus rapide

30) IEEEDPDiv (80.9394, 123.9291)         64) IEEEDPDiv_fp0 (80.9394, 123.9291)
Elapsed time : 11.34 seconds                     Elapsed time : 5.68 seconds                      100% plus rapide

31) IEEEDPDiv (-80.9394, 123.9291)        65) IEEEDPDiv_fp0 (-80.9394, 123.9291)
Elapsed time : 11.36 seconds                     Elapsed time : 5.68 seconds                      100% plus rapide

32) IEEEDPDiv (-80.9394, -123.9291)       66) IEEEDPDiv_fp0 (-80.9394, -123.9291)
Elapsed time : 11.36 seconds                     Elapsed time : 5.68 seconds                      100% plus rapide

33) IEEEDPDiv (80.9394, -123.9291)        67) IEEEDPDiv_fp0 (80.9394, 123.9291)
Elapsed time : 11.36 seconds                    Elapsed time : 5.68 seconds                       100% plus rapide

34) IEEEDPFloor (80.9394)                       68) IEEEDPFloor_fp0 (80.9394)
Elapsed time : 10.66 seconds                    Elapsed time : 7.1 seconds                          50% plus rapide

35) IEEEDPFloor (-80.9394)                     69) IEEEDPFloor_fp0 (-80.9394)
Elapsed time : 13.48 seconds                    Elapsed time : 7.8 seconds                           72% plus rapide

36) IEEEDPCeil (80.9394)                        70) IEEEDPCeil_fp0 (80.9394)
Elapsed time : 12.78 seconds                    Elapsed time : 7.8 seconds                           64% plus rapide

37) IEEEDPCeil (-80.9394)                       71) IEEEDPCeil_fp0 (-80.9394)
Elapsed time : 10.64 seconds                    Elapsed time : 7.1 seconds                           49% plus rapide

 
J'ai poussé vers le haut cette librairie du plus que je pouvais.

Cette version 45.4 est gratuite : vous devez juste la mettre dans Sys:Libs/ et c'est tout !

Je suis en train de finir le nouvel autodoc de cette nouvelle version pour les développeurs.

Comme d'habitude, tout est disponible ici...
    

2 commentaires:

  1. Réponses
    1. Oui, je suis content de moi, belle astuce le passage par registre & return fp0 !

      Supprimer

Posté vos remarques :