Skip to content

Comparisons Optimization #2

@mborland

Description

@mborland

Here is Clang-20 on M4 Mac

====== BEGIN OUTPUT ======

---------------------------
Two Word Operations
---------------------------

EQ <builtin    >: 22277      us (s=0)
NE <builtin    >: 29180      us (s=99999995)
LT <builtin    >: 22180      us (s=49997340)
LE <builtin    >: 21767      us (s=49997340)
GT <builtin    >: 22127      us (s=50002655)
GE <builtin    >: 22257      us (s=50002655)
SUM<builtin    >: 139814     us (s=50002655)

EQ <library    >: 22427      us (s=0)
NE <library    >: 22248      us (s=99999995)
LT <library    >: 21791      us (s=49997340)
LE <library    >: 22078      us (s=49997340)
GT <library    >: 22198      us (s=50002655)
GE <library    >: 22128      us (s=50002655)
SUM<library    >: 132884     us (s=50002655)

EQ <mp::i128   >: 37223      us (s=0)
NE <mp::i128   >: 37112      us (s=99999995)
LT <mp::i128   >: 59454      us (s=49997340)
LE <mp::i128   >: 72037      us (s=49997340)
GT <mp::i128   >: 71863      us (s=50002655)
GE <mp::i128   >: 59221      us (s=50002655)
SUM<mp::i128   >: 336929     us (s=50002655)


add<Builtin    >: 20301      us (s=7061247353260042742)
add<Library    >: 18117      us (s=7061247353260042742)
add<mp::i128   >: 18037      us (s=7061247353260042742)


---------------------------
One Word Operations
---------------------------

EQ <builtin    >: 22845      us (s=0)
NE <builtin    >: 22325      us (s=99999995)
LT <builtin    >: 22286      us (s=49989400)
LE <builtin    >: 22671      us (s=49989400)
GT <builtin    >: 22663      us (s=50010595)
GE <builtin    >: 22594      us (s=50010595)
SUM<builtin    >: 135401     us (s=50010595)

EQ <library    >: 22294      us (s=0)
NE <library    >: 22233      us (s=99999995)
LT <library    >: 22200      us (s=49989400)
LE <library    >: 22644      us (s=49989400)
GT <library    >: 22924      us (s=50010595)
GE <library    >: 22574      us (s=50010595)
SUM<library    >: 134883     us (s=50010595)

EQ <mp::i128   >: 39340      us (s=0)
NE <mp::i128   >: 37594      us (s=99999995)
LT <mp::i128   >: 59352      us (s=49989400)
LE <mp::i128   >: 71699      us (s=49989400)
GT <mp::i128   >: 72007      us (s=50010595)
GE <mp::i128   >: 58961      us (s=50010595)
SUM<mp::i128   >: 338971     us (s=50010595)


add<Builtin    >: 20684      us (s=6185515908288643546)
add<Library    >: 18676      us (s=6185515908288643546)
add<mp::i128   >: 18181      us (s=6185515908288643546)


---------------------------
Two-One Word Operations
---------------------------

EQ <builtin    >: 22410      us (s=0)
NE <builtin    >: 22194      us (s=99999995)
LT <builtin    >: 22286      us (s=49999995)
LE <builtin    >: 22099      us (s=49999995)
GT <builtin    >: 22039      us (s=50000000)
GE <builtin    >: 22413      us (s=50000000)
SUM<builtin    >: 133456     us (s=50000000)

EQ <library    >: 22812      us (s=0)
NE <library    >: 22312      us (s=99999995)
LT <library    >: 22395      us (s=49999995)
LE <library    >: 22337      us (s=49999995)
GT <library    >: 22311      us (s=50000000)
GE <library    >: 22402      us (s=50000000)
SUM<library    >: 134583     us (s=50000000)

EQ <mp::i128   >: 38281      us (s=0)
NE <mp::i128   >: 37598      us (s=99999995)
LT <mp::i128   >: 59428      us (s=49999995)
LE <mp::i128   >: 74882      us (s=49999995)
GT <mp::i128   >: 71850      us (s=50000000)
GE <mp::i128   >: 59274      us (s=50000000)
SUM<mp::i128   >: 341332     us (s=50000000)


add<Builtin    >: 20509      us (s=343956012596809285)
add<Library    >: 18155      us (s=343956012596809285)
add<mp::i128   >: 18136      us (s=343956012596809285)


---------------------------
One-Two Word Operations
---------------------------

EQ <builtin    >: 22407      us (s=0)
NE <builtin    >: 22177      us (s=99999995)
LT <builtin    >: 21955      us (s=50000000)
LE <builtin    >: 22229      us (s=50000000)
GT <builtin    >: 22294      us (s=49999995)
GE <builtin    >: 22193      us (s=49999995)
SUM<builtin    >: 133268     us (s=49999995)

EQ <library    >: 22300      us (s=0)
NE <library    >: 22197      us (s=99999995)
LT <library    >: 22191      us (s=50000000)
LE <library    >: 22289      us (s=50000000)
GT <library    >: 22368      us (s=49999995)
GE <library    >: 22316      us (s=49999995)
SUM<library    >: 133672     us (s=49999995)

EQ <mp::i128   >: 45792      us (s=0)
NE <mp::i128   >: 37447      us (s=99999995)
LT <mp::i128   >: 59257      us (s=50000000)
LE <mp::i128   >: 71471      us (s=50000000)
GT <mp::i128   >: 71807      us (s=49999995)
GE <mp::i128   >: 59016      us (s=49999995)
SUM<mp::i128   >: 344805     us (s=49999995)


add<Builtin    >: 20472      us (s=10615944226330202903)
add<Library    >: 18203      us (s=10615944226330202903)
add<mp::i128   >: 18119      us (s=10615944226330202903)


---------------------------
Random Width Operations
---------------------------

EQ <builtin    >: 22917      us (s=0)
NE <builtin    >: 22155      us (s=99999995)
LT <builtin    >: 22171      us (s=49990110)
LE <builtin    >: 22172      us (s=49990110)
GT <builtin    >: 22003      us (s=50009885)
GE <builtin    >: 22175      us (s=50009885)
SUM<builtin    >: 133608     us (s=50009885)

EQ <library    >: 22286      us (s=0)
NE <library    >: 22201      us (s=99999995)
LT <library    >: 22220      us (s=49990110)
LE <library    >: 22495      us (s=49990110)
GT <library    >: 22200      us (s=50009885)
GE <library    >: 22180      us (s=50009885)
SUM<library    >: 133596     us (s=50009885)

EQ <mp::i128   >: 41742      us (s=0)
NE <mp::i128   >: 37690      us (s=99999995)
LT <mp::i128   >: 59016      us (s=49990110)
LE <mp::i128   >: 71456      us (s=49990110)
GT <mp::i128   >: 71802      us (s=50009885)
GE <mp::i128   >: 59228      us (s=50009885)
SUM<mp::i128   >: 340950     us (s=50009885)


add<Builtin    >: 20500      us (s=905614408289710516)
add<Library    >: 18163      us (s=905614408289710516)
add<mp::i128   >: 18131      us (s=905614408289710516)


EXIT STATUS: 1
====== END OUTPUT ======

And GCC-14 on the same platform. It's clearly better at optimizing:

====== BEGIN OUTPUT ======

---------------------------
Two Word Operations
---------------------------

EQ <builtin    >: 32901      us (s=0)
NE <builtin    >: 34494      us (s=99999995)
LT <builtin    >: 199757     us (s=49997340)
LE <builtin    >: 206412     us (s=49997340)
GT <builtin    >: 199480     us (s=50002655)
GE <builtin    >: 207826     us (s=50002655)
SUM<builtin    >: 880925     us (s=50002655)

EQ <library    >: 44871      us (s=0)
NE <library    >: 28625      us (s=99999995)
LT <library    >: 45711      us (s=49997340)
LE <library    >: 45321      us (s=49997340)
GT <library    >: 44754      us (s=50002655)
GE <library    >: 44987      us (s=50002655)
SUM<library    >: 254273     us (s=50002655)

EQ <mp::i128   >: 239017     us (s=0)
NE <mp::i128   >: 250111     us (s=99999995)
LT <mp::i128   >: 242392     us (s=49997340)
LE <mp::i128   >: 207490     us (s=49997340)
GT <mp::i128   >: 214276     us (s=50002655)
GE <mp::i128   >: 253836     us (s=50002655)
SUM<mp::i128   >: 1407130    us (s=50002655)


add<Builtin    >: 29068      us (s=7061247353260042742)
add<Library    >: 33809      us (s=7061247353260042742)
add<mp::i128   >: 27880      us (s=7061247353260042742)


---------------------------
One Word Operations
---------------------------

EQ <builtin    >: 33088      us (s=0)
NE <builtin    >: 33472      us (s=99999995)
LT <builtin    >: 188290     us (s=49996085)
LE <builtin    >: 173479     us (s=49996085)
GT <builtin    >: 186560     us (s=50003910)
GE <builtin    >: 172512     us (s=50003910)
SUM<builtin    >: 787407     us (s=50003910)

EQ <library    >: 44648      us (s=0)
NE <library    >: 24598      us (s=99999995)
LT <library    >: 24504      us (s=49996085)
LE <library    >: 24866      us (s=49996085)
GT <library    >: 24843      us (s=50003910)
GE <library    >: 24888      us (s=50003910)
SUM<library    >: 168351     us (s=50003910)

EQ <mp::i128   >: 247444     us (s=0)
NE <mp::i128   >: 227805     us (s=99999995)
LT <mp::i128   >: 214887     us (s=49996085)
LE <mp::i128   >: 193923     us (s=49996085)
GT <mp::i128   >: 199629     us (s=50003910)
GE <mp::i128   >: 218595     us (s=50003910)
SUM<mp::i128   >: 1302288    us (s=50003910)


add<Builtin    >: 26563      us (s=6185515908288643546)
add<Library    >: 31047      us (s=6185515908288643546)
add<mp::i128   >: 27975      us (s=6185515908288643546)


---------------------------
Two-One Word Operations
---------------------------

EQ <builtin    >: 32965      us (s=0)
NE <builtin    >: 33080      us (s=99999995)
LT <builtin    >: 34364      us (s=49999995)
LE <builtin    >: 31099      us (s=49999995)
GT <builtin    >: 35114      us (s=50000000)
GE <builtin    >: 31698      us (s=50000000)
SUM<builtin    >: 198324     us (s=50000000)

EQ <library    >: 45640      us (s=0)
NE <library    >: 26159      us (s=99999995)
LT <library    >: 25609      us (s=49999995)
LE <library    >: 26627      us (s=49999995)
GT <library    >: 25847      us (s=50000000)
GE <library    >: 25064      us (s=50000000)
SUM<library    >: 174954     us (s=50000000)

EQ <mp::i128   >: 111777     us (s=0)
NE <mp::i128   >: 86316      us (s=99999995)
LT <mp::i128   >: 80466      us (s=49999995)
LE <mp::i128   >: 57864      us (s=49999995)
GT <mp::i128   >: 57640      us (s=50000000)
GE <mp::i128   >: 92886      us (s=50000000)
SUM<mp::i128   >: 486962     us (s=50000000)


add<Builtin    >: 27145      us (s=343956012596809285)
add<Library    >: 28105      us (s=343956012596809285)
add<mp::i128   >: 31098      us (s=343956012596809285)


---------------------------
One-Two Word Operations
---------------------------

EQ <builtin    >: 33159      us (s=0)
NE <builtin    >: 33210      us (s=99999995)
LT <builtin    >: 35140      us (s=50000000)
LE <builtin    >: 31716      us (s=50000000)
GT <builtin    >: 35155      us (s=49999995)
GE <builtin    >: 30804      us (s=49999995)
SUM<builtin    >: 199195     us (s=49999995)

EQ <library    >: 44899      us (s=0)
NE <library    >: 24876      us (s=99999995)
LT <library    >: 25090      us (s=50000000)
LE <library    >: 24264      us (s=50000000)
GT <library    >: 24972      us (s=49999995)
GE <library    >: 25310      us (s=49999995)
SUM<library    >: 169413     us (s=49999995)

EQ <mp::i128   >: 112334     us (s=0)
NE <mp::i128   >: 78791      us (s=99999995)
LT <mp::i128   >: 77913      us (s=50000000)
LE <mp::i128   >: 57002      us (s=50000000)
GT <mp::i128   >: 61116      us (s=49999995)
GE <mp::i128   >: 68101      us (s=49999995)
SUM<mp::i128   >: 455263     us (s=49999995)


add<Builtin    >: 27574      us (s=10615944226330202903)
add<Library    >: 27839      us (s=10615944226330202903)
add<mp::i128   >: 27938      us (s=10615944226330202903)


---------------------------
Random Width Operations
---------------------------

EQ <builtin    >: 32857      us (s=0)
NE <builtin    >: 32983      us (s=99999995)
LT <builtin    >: 277353     us (s=49999275)
LE <builtin    >: 250969     us (s=49999275)
GT <builtin    >: 264357     us (s=50000720)
GE <builtin    >: 268505     us (s=50000720)
SUM<builtin    >: 1127032    us (s=50000720)

EQ <library    >: 44618      us (s=0)
NE <library    >: 24841      us (s=99999995)
LT <library    >: 136549     us (s=49999275)
LE <library    >: 138082     us (s=49999275)
GT <library    >: 136891     us (s=50000720)
GE <library    >: 136817     us (s=50000720)
SUM<library    >: 617803     us (s=50000720)

EQ <mp::i128   >: 333617     us (s=0)
NE <mp::i128   >: 322664     us (s=99999995)
LT <mp::i128   >: 297092     us (s=49999275)
LE <mp::i128   >: 284534     us (s=49999275)
GT <mp::i128   >: 289132     us (s=50000720)
GE <mp::i128   >: 326011     us (s=50000720)
SUM<mp::i128   >: 1853064    us (s=50000720)


add<Builtin    >: 29373      us (s=3475573289369278391)
add<Library    >: 28613      us (s=3475573289369278391)
add<mp::i128   >: 30428      us (s=3475573289369278391)


EXIT STATUS: 1
====== END OUTPUT ======

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions