zig/lib/std/special/compiler_rt
matu3ba 3db130ff3d
compiler_rt: add addo (#10824)
- approach by Hacker's Delight with wrapping addition
- ca. 1.10x perf over the standard approach on my laptop
- tests with all combinations of min,max with -1,0,+1 and combinations of
  sequences +-1,2,4..,max
2022-02-07 13:27:21 -05:00
..
absv.zig compiler-rt: simplify implementations 2022-01-02 13:16:17 -07:00
absvdi2_test.zig compiler_rt: add __absvsi2, __absvdi2, __absvti2 2021-12-26 13:21:18 -08:00
absvsi2_test.zig compiler_rt: add __absvsi2, __absvdi2, __absvti2 2021-12-26 13:21:18 -08:00
absvti2_test.zig compiler_rt: add __absvsi2, __absvdi2, __absvti2 2021-12-26 13:21:18 -08:00
addo.zig compiler_rt: add addo (#10824) 2022-02-07 13:27:21 -05:00
addodi4_test.zig compiler_rt: add addo (#10824) 2022-02-07 13:27:21 -05:00
addosi4_test.zig compiler_rt: add addo (#10824) 2022-02-07 13:27:21 -05:00
addoti4_test.zig compiler_rt: add addo (#10824) 2022-02-07 13:27:21 -05:00
addXf3.zig compiler_rt: addXf3: add coercion to @clz 2022-02-06 20:06:00 -07:00
addXf3_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
arm.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
ashldi3_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
ashlti3_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
ashrdi3_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
ashrti3_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
atomics.zig compiler-rt: small refactor in atomics 2022-01-02 17:58:54 -07:00
aulldiv.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
aullrem.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
bswap.zig compiler-rt: simplify implementations 2022-01-02 13:16:17 -07:00
bswapdi2_test.zig compiler_rt: add __bswapsi2, __bswapdi2 and __bswapti2 2021-12-11 01:43:37 -08:00
bswapsi2_test.zig compiler_rt: add __bswapsi2, __bswapdi2 and __bswapti2 2021-12-11 01:43:37 -08:00
bswapti2_test.zig compiler_rt: add __bswapsi2, __bswapdi2 and __bswapti2 2021-12-11 01:43:37 -08:00
clear_cache.zig migrate from std.Target.current to @import("builtin").target 2021-10-04 23:48:55 -07:00
clzdi2_test.zig compiler_rt: add __ctzsi2, __ctzdi2 and __ctzti2 2021-11-30 18:31:16 -08:00
clzsi2_test.zig compiler_rt: add __clzdi2 and __clzti2 2021-09-01 16:15:21 -04:00
clzti2_test.zig compiler_rt: add __ctzsi2, __ctzdi2 and __ctzti2 2021-11-30 18:31:16 -08:00
cmp.zig compiler-rt: simplify implementations 2022-01-02 13:16:17 -07:00
cmpdi2_test.zig compiler_rt: add __cmpXi2 and __ucmpXi2 2021-12-14 14:21:30 -08:00
cmpsi2_test.zig compiler_rt: add __cmpXi2 and __ucmpXi2 2021-12-14 14:21:30 -08:00
cmpti2_test.zig compiler_rt: add __cmpXi2 and __ucmpXi2 2021-12-14 14:21:30 -08:00
comparedf2_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
comparesf2_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
compareXf2.zig compiler-rt: add comparison functions for f80 2022-02-04 22:22:43 +02:00
count0bits.zig compiler-rt: simplify implementations 2022-01-02 13:16:17 -07:00
ctzdi2_test.zig compiler_rt: add __ctzsi2, __ctzdi2 and __ctzti2 2021-11-30 18:31:16 -08:00
ctzsi2_test.zig compiler_rt: add __ctzsi2, __ctzdi2 and __ctzti2 2021-11-30 18:31:16 -08:00
ctzti2_test.zig compiler_rt: add __ctzsi2, __ctzdi2 and __ctzti2 2021-11-30 18:31:16 -08:00
divdf3.zig Sema: implement peer type resolution of signed and unsigned ints 2022-01-02 14:11:37 -07:00
divdf3_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
divsf3.zig Sema: implement peer type resolution of signed and unsigned ints 2022-01-02 14:11:37 -07:00
divsf3_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
divtf3.zig Sema: implement peer type resolution of signed and unsigned ints 2022-01-02 14:11:37 -07:00
divtf3_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
divti3.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
divti3_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
emutls.zig stage1, stage2: rename c_void to anyopaque (#10316) 2021-12-19 00:24:45 -05:00
extend_f80.zig compiler-rt: add extend functions for f80 2022-02-04 22:16:07 +02:00
extendXfYf2.zig compiler-rt: add extend functions for f80 2022-02-04 22:16:07 +02:00
extendXfYf2_test.zig compiler-rt: Fix f16 API declarations to be consistent 2021-11-04 14:30:35 -04:00
ffsdi2_test.zig compiler_rt: add __ffssi2, __ffsdi2 and __ffsti2 (#10268) 2021-12-04 16:23:33 -05:00
ffssi2_test.zig compiler_rt: add __ffssi2, __ffsdi2 and __ffsti2 (#10268) 2021-12-04 16:23:33 -05:00
ffsti2_test.zig compiler_rt: add __ffssi2, __ffsdi2 and __ffsti2 (#10268) 2021-12-04 16:23:33 -05:00
fixdfdi.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
fixdfdi_test.zig std lib API deprecations for the upcoming 0.9.0 release 2021-11-30 00:13:07 -07:00
fixdfsi.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
fixdfsi_test.zig std lib API deprecations for the upcoming 0.9.0 release 2021-11-30 00:13:07 -07:00
fixdfti.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
fixdfti_test.zig std lib API deprecations for the upcoming 0.9.0 release 2021-11-30 00:13:07 -07:00
fixint.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
fixint_test.zig std lib API deprecations for the upcoming 0.9.0 release 2021-11-30 00:13:07 -07:00
fixsfdi.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
fixsfdi_test.zig std lib API deprecations for the upcoming 0.9.0 release 2021-11-30 00:13:07 -07:00
fixsfsi.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
fixsfsi_test.zig std lib API deprecations for the upcoming 0.9.0 release 2021-11-30 00:13:07 -07:00
fixsfti.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
fixsfti_test.zig std lib API deprecations for the upcoming 0.9.0 release 2021-11-30 00:13:07 -07:00
fixtfdi.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
fixtfdi_test.zig std lib API deprecations for the upcoming 0.9.0 release 2021-11-30 00:13:07 -07:00
fixtfsi.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
fixtfsi_test.zig std lib API deprecations for the upcoming 0.9.0 release 2021-11-30 00:13:07 -07:00
fixtfti.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
fixtfti_test.zig std lib API deprecations for the upcoming 0.9.0 release 2021-11-30 00:13:07 -07:00
fixuint.zig compiler-rt: simplify implementations 2022-01-02 13:16:17 -07:00
fixunsdfdi.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
fixunsdfdi_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
fixunsdfsi.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
fixunsdfsi_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
fixunsdfti.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
fixunsdfti_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
fixunssfdi.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
fixunssfdi_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
fixunssfsi.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
fixunssfsi_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
fixunssfti.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
fixunssfti_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
fixunstfdi.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
fixunstfdi_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
fixunstfsi.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
fixunstfsi_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
fixunstfti.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
fixunstfti_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
floatdidf.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
floatdidf_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
floatdisf_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
floatditf.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
floatditf_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
floatsiXf.zig compiler-rt: simplify implementations 2022-01-02 13:16:17 -07:00
floattidf.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
floattidf_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
floattisf_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
floattitf.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
floattitf_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
floatundidf.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
floatundidf_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
floatundisf.zig compiler-rt: simplify implementations 2022-01-02 13:16:17 -07:00
floatunditf.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
floatunditf_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
floatunsidf.zig compiler-rt: simplify implementations 2022-01-02 13:16:17 -07:00
floatunsisf.zig compiler-rt: simplify implementations 2022-01-02 13:16:17 -07:00
floatunsitf.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
floatunsitf_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
floatuntidf.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
floatuntidf_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
floatuntisf.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
floatuntisf_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
floatuntitf.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
floatuntitf_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
floatXisf.zig compiler-rt: simplify implementations 2022-01-02 13:16:17 -07:00
int.zig lint: duplicate import (#10519) 2022-01-07 00:06:06 -05:00
lshrdi3_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
lshrti3_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
modti3.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
modti3_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
muldi3.zig migrate from std.Target.current to @import("builtin").target 2021-10-04 23:48:55 -07:00
muldi3_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
mulo.zig compiler_rt: add addo (#10824) 2022-02-07 13:27:21 -05:00
mulodi4_test.zig compiler_rt: refactor __mulodi2 and __muloti2 to get __mulosi2 2021-12-14 14:16:24 -08:00
mulosi4_test.zig compiler_rt: refactor __mulodi2 and __muloti2 to get __mulosi2 2021-12-14 14:16:24 -08:00
muloti4_test.zig compiler_rt: refactor __mulodi2 and __muloti2 to get __mulosi2 2021-12-14 14:16:24 -08:00
multi3.zig lint: duplicate import (#10519) 2022-01-07 00:06:06 -05:00
multi3_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
mulXf3.zig Sema: implement peer type resolution of signed and unsigned ints 2022-01-02 14:11:37 -07:00
mulXf3_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
negdi2_test.zig compiler_rt: add __negsi2, __negdi2, __negti2 2021-12-14 14:14:31 -08:00
negsi2_test.zig lint: duplicate import (#10519) 2022-01-07 00:06:06 -05:00
negti2_test.zig compiler_rt: add __negsi2, __negdi2, __negti2 2021-12-14 14:14:31 -08:00
negv.zig compiler-rt: simplify implementations 2022-01-02 13:16:17 -07:00
negvdi2_test.zig compiler_rt: add __negvsi2, __negvdi2, __negvti2 2021-12-27 14:35:45 -08:00
negvsi2_test.zig compiler_rt: add __negvsi2, __negvdi2, __negvti2 2021-12-27 14:35:45 -08:00
negvti2_test.zig compiler_rt: add __negvsi2, __negvdi2, __negvti2 2021-12-27 14:35:45 -08:00
negXf2.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
negXi2.zig compiler-rt: simplify implementations 2022-01-02 13:16:17 -07:00
os_version_check.zig stage2: avoid inferred struct in os_version_check.zig 2022-01-26 00:48:05 -05:00
parity.zig compiler-rt: simplify implementations 2022-01-02 13:16:17 -07:00
paritydi2_test.zig lint: duplicate import (#10519) 2022-01-07 00:06:06 -05:00
paritysi2_test.zig lint: duplicate import (#10519) 2022-01-07 00:06:06 -05:00
parityti2_test.zig lint: duplicate import (#10519) 2022-01-07 00:06:06 -05:00
popcount.zig compiler-rt: simplify implementations 2022-01-02 13:16:17 -07:00
popcountdi2_test.zig lint: duplicate import (#10519) 2022-01-07 00:06:06 -05:00
popcountsi2_test.zig lint: duplicate import (#10519) 2022-01-07 00:06:06 -05:00
popcountti2_test.zig lint: duplicate import (#10519) 2022-01-07 00:06:06 -05:00
README.md mv std/ lib/ 2019-09-25 23:35:41 -04:00
shift.zig compiler-rt: simplify implementations 2022-01-02 13:16:17 -07:00
sparc.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
stack_probe.zig migrate from std.Target.current to @import("builtin").target 2021-10-04 23:48:55 -07:00
trunc_f80.zig compiler-rt: add trunc functions for f80 2022-02-04 22:18:44 +02:00
truncXfYf2.zig compiler-rt: add trunc functions for f80 2022-02-04 22:18:44 +02:00
truncXfYf2_test.zig lint: duplicate import (#10519) 2022-01-07 00:06:06 -05:00
ucmpdi2_test.zig compiler_rt: add __cmpXi2 and __ucmpXi2 2021-12-14 14:21:30 -08:00
ucmpsi2_test.zig compiler_rt: add __cmpXi2 and __ucmpXi2 2021-12-14 14:21:30 -08:00
ucmpti2_test.zig compiler_rt: add __cmpXi2 and __ucmpXi2 2021-12-14 14:21:30 -08:00
udivmod.zig lint: duplicate import (#10519) 2022-01-07 00:06:06 -05:00
udivmoddi4_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
udivmodti4.zig std, compiler-rt: remove test names where applicable 2021-09-01 17:54:06 -07:00
udivmodti4_test.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
udivti3.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00
umodti3.zig remove redundant license headers from zig standard library 2021-08-24 12:25:09 -07:00

This compiler-rt library is ported from LLVM.

It's needed because LLVM emits library calls to compiler-rt when hardware lacks functionality, for example, 64-bit integer multiplication on 32-bit x86.

This library is automatically built as-needed for the compilation target and then statically linked and therefore is a transparent dependency for the programmer.

Any bugs should be solved by trying to duplicate the bug upstream.

  • If the bug exists upstream, get it fixed with the LLVM team and then port the fix downstream to Zig.
  • If the bug only exists in Zig, something went wrong porting the code, and you can run the C code and Zig code side by side in a debugger to figure out what's happening differently.