Jeroen van Rijn
f34ba44bf8
big: Add shl, shr and shrmod.
2021-08-11 20:59:51 +02:00
Jeroen van Rijn
d4d863c4db
big: Add mod_power_of_two.
2021-08-11 20:59:51 +02:00
Jeroen van Rijn
78c0877994
big: Add get(a, type) and get_float.
2021-08-11 20:59:51 +02:00
Jeroen van Rijn
1d0b37c1d8
big: add shl1, shr1.
2021-08-11 20:59:51 +02:00
Jeroen van Rijn
7648f2e655
big: Finish big ZII refactor.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
d9efa6c8b5
big: More ZII refactoring.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
2e372b33a3
big: More ZII refactoring.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
687c211a58
big: ZII.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
4eadd0867d
big: Continuing to refactor.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
9dba17cf87
bigint: refactor to big.Int instead of bigint.Int.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
baef0c291d
bigint: Added some more helpers.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
cccd290834
bigint: Add is_power_of_two helper.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
5af85aed3d
bigint: itoa support for arbitrary precision if is_power_of_two(radix)
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
e600e5947b
bigint: remove unnecessary boundary checks.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
d7ae611f76
bigint: itoa now writes backwards directly, no need to reverse after.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
04a83eb9f7
bigint: pass size to itoa_raw.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
341e8a3c99
bigint: itoa works for numbers <= 120 bits.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
e3d8ac559d
bigint: Fast paths for radix code.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
767948ab46
bigint: log_n for bases that fit within one DIGIT or are a power of two.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
dbcd8da733
bigint: Working on itoa and logn.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
905d5459a9
bigint: Add count_bits and more prep.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
dfd5a993a2
bigint: Prepare for multiplication.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
daceaa65f5
bigint: Add substractin with immediate.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
c2c07f07db
Add single DIGIT addition.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
c5cbd3260a
bigint: Add prototypes for immediate add+sub.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
d57e1be89f
bigint: Improve add.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
18dda6ff9d
Start of core:math/bigint
...
We have:
- `init` to create a new `Int`
- `init(from_integer)` to create a new `Int` and set it to `from_integer`.
- `set(Int, from_integer)` to set an `Int` to `from_integer`
- `add(dest, a, b)` to add `a` and `b` into `dest`.
- `sub(dest, a, b)` to subtract `b` from `a` and put the result in `dest`.
And a few helper functions, like:
- `is_zero`, `is_negative`, ...
- `grow`, `shrink`, `clear`, `zero`
2021-08-11 20:59:50 +02:00
Jeroen van Rijn and GitHub
6d59223efd
Merge pull request #1072 from Kelimion/cel_fix_ise
...
CEL: Fix by changing `using enum` to ISE.
2021-08-08 02:21:04 +02:00
Jeroen van Rijn
ebd034fff9
CEL: Fix ISE.
2021-08-08 02:19:32 +02:00
Jeroen van Rijn and GitHub
c0f746a251
Merge pull request #1065 from Kelimion/string_cut
...
Add `strings.cut`, which returns a substring.
2021-08-02 18:09:59 +02:00
Jeroen van Rijn
d260ca6738
string.cut uses context.allocator by default.
2021-08-02 17:58:42 +02:00
Jeroen van Rijn
0dc900ba34
Add strings.cut, which returns a substring.
2021-08-01 19:41:20 +02:00
Jeroen van Rijn and GitHub
481fc8a5b6
Merge pull request #1060 from Kelimion/win_sys
...
Allow `core:sys/windows` to build on Windows only
2021-07-15 12:15:10 +02:00
Jeroen van Rijn
5dfff51a40
Allow core:sys/windows to build on Windows only
2021-07-15 12:13:57 +02:00
Jeroen van Rijn and GitHub
8e5c3141f6
Merge pull request #1047 from Kelimion/zlib_optimize
...
ZLIB: Fix edge case where initial buffer < 258 bytes.
2021-06-27 18:49:09 +02:00
Jeroen van Rijn
87aaa9c3f0
ZLIB: Fix edge case where initial buffer < 258 bytes.
2021-06-27 18:44:36 +02:00
Jeroen van Rijn and GitHub
095605b7db
Merge pull request #1046 from Kelimion/zlib_optimize
...
ZLIB: Optimize
2021-06-27 16:54:15 +02:00
Jeroen van Rijn
6836b501af
Merge branch 'master' into zlib_optimize
2021-06-27 16:50:27 +02:00
Jeroen van Rijn
d949d5a046
ZLIB: cleanup.
2021-06-27 16:48:12 +02:00
Jeroen van Rijn
064516bf0b
PNG: Inform inflate about expected output size for extra speed.
2021-06-27 13:57:12 +02:00
Jeroen van Rijn
eaf88bcc4d
PNG: Let PNG use the new compress I/O routines.
2021-06-27 13:51:52 +02:00
Jeroen van Rijn
02f9668185
ZLIB: Split up input from stream and memory into own code paths.
2021-06-27 13:19:24 +02:00
Jeroen van Rijn
4689a6b341
Refactor compress.Context struct.
2021-06-26 22:25:55 +02:00
Jeroen van Rijn
30a5808460
ZLIB: Moar faster.
2021-06-26 20:40:39 +02:00
Jeroen van Rijn
8ba1c9a6cd
ZLIB: Remove superfluous code.
2021-06-26 17:44:12 +02:00
Jeroen van Rijn
65b78b1aa9
So far, so good.
2021-06-26 15:11:15 +02:00
Jeroen van Rijn
c369719362
Merge branch 'master' into zlib_optimize
2021-06-26 13:40:22 +02:00
Jeroen van Rijn
40a12cca53
ZLIB: If output size is known, reserve that much.
2021-06-26 13:17:14 +02:00
Jeroen van Rijn and GitHub
ab12ca69af
Merge pull request #1040 from Kelimion/zlib_optimize
...
Adler32 speedup.
2021-06-24 19:15:22 +02:00
Jeroen van Rijn
17748f18b9
Adler32 speedup.
2021-06-24 19:06:39 +02:00
Jeroen van Rijn and GitHub
f62f40e508
Merge pull request #1039 from Kelimion/zlib_optimize
...
ZLIB: Another 10%+ faster.
2021-06-24 15:02:02 +02:00
Jeroen van Rijn
980aa37bee
ZLIB: Another 10%+ faster.
2021-06-24 14:56:28 +02:00
Jeroen van Rijn and GitHub
824efc82b9
Merge pull request #1036 from Kelimion/zlib_optimize
...
ZLIB: More faster.
2021-06-23 22:25:02 +02:00
Jeroen van Rijn
1cfe226686
ZLIB: More faster.
2021-06-23 22:18:17 +02:00
Jeroen van Rijn and GitHub
ea0ce7bd2c
Merge pull request #1035 from Kelimion/zlib_optimize
...
Zlib optimize
2021-06-23 20:15:32 +02:00
Jeroen van Rijn
342adb627d
All reads now skip stream if in memory.
2021-06-23 16:32:48 +02:00
Jeroen van Rijn
a70635d2f6
Most reads now go through buffer for zlib.
2021-06-23 16:32:48 +02:00
Jeroen van Rijn
5cb16c4cd1
All reads now go through read_slice.
2021-06-23 16:32:48 +02:00
Jeroen van Rijn
538004ba5f
Introduce read_slice, make read_u8 use it.
2021-06-23 16:32:48 +02:00
Jeroen van Rijn
8663c64e47
Refactor ZLIB structs.
2021-06-23 16:32:47 +02:00
Jeroen van Rijn and GitHub
fb2e1c32bd
Merge pull request #1034 from Kelimion/bytes_util
...
Move `bytes` utils back to EXR code for the time being.
2021-06-22 16:48:07 +02:00
Jeroen van Rijn
ae0b8fce44
Move bytes utils back to EXR code for the time being.
...
Also, allow PNG example to be run directly from `core:image/png` directory.
2021-06-22 16:39:00 +02:00
Jeroen van Rijn and GitHub
d2e55f9ffa
Merge pull request #1032 from Kelimion/png_fix
...
PNG: Fix leak if you don't ask for metadata.
2021-06-21 22:56:39 +02:00
Jeroen van Rijn
d5e2b387fa
PNG: Fix leak if you don't ask for metadata.
2021-06-21 22:47:54 +02:00
Jeroen van Rijn and GitHub
922b511a24
Merge pull request #1031 from Kelimion/zlib_fix
...
ZLIB: fix.
2021-06-21 22:16:56 +02:00
Jeroen van Rijn
9de9111082
ZLIB: fix.
2021-06-21 22:15:04 +02:00
Jeroen van Rijn and GitHub
5a7fe2e3d9
Merge pull request #1030 from Kelimion/zlib_optimize
...
Comment out tracy imports.
2021-06-21 21:43:57 +02:00
Jeroen van Rijn
1e8c12c2a3
Comment out tracy imports.
2021-06-21 21:41:56 +02:00
Jeroen van Rijn and GitHub
b92c70e55c
Merge pull request #1029 from Kelimion/zlib_optimize
...
ZLIB: Start optimization.
2021-06-21 21:26:52 +02:00
Jeroen van Rijn
352494cbb4
ZLIB: Start optimization.
2021-06-21 21:05:52 +02:00
Jeroen van Rijn and GitHub
797c41950a
Merge pull request #1027 from Kelimion/png
...
Replace `core:image`'s `sidecar` with explicit pointer and type
2021-06-21 16:41:38 +02:00
Jeroen van Rijn
e036a321a0
Replace core:image's sidecar with explicit metadata_ptr and metadata_type.
...
To unpack, use:
```odin
v: ^png.Info;
if img.metadata_ptr != nil && img.metadata_type == png.Info {
v = (^png.Info)(img.metadata_ptr);
...
}
```
2021-06-21 16:32:42 +02:00
Jeroen van Rijn and GitHub
18471f358e
Merge pull request #1025 from Kelimion/png_info
...
Change PNG's img.sidecar to ^Info, make img.depth an int.
2021-06-20 18:40:46 +02:00
Jeroen van Rijn
55d09251d8
Change PNG's img.sidecar to ^Info, make img.depth an int.
...
For compatibility with the upcoming OpenEXR code, img.depth is now an int.
Like OpenEXR's code, it will now also return metadata as ^Info instead of Info.
The example was updated to retrieve the metadata this way.
It regrettably does not fix : #1018 . That seems to be a codegen issue in the test runner or elsewhere.
2021-06-20 18:27:23 +02:00
Jeroen van Rijn and GitHub
d66fd71d21
Merge pull request #1024 from Kelimion/defer_fix
...
GZIP defer diverging fix in gzip example.
2021-06-20 17:40:15 +02:00
Jeroen van Rijn and GitHub
f10fc2a494
Merge pull request #1023 from Kelimion/test_runner_fix
...
Fix Windows test runner.
2021-06-20 17:37:04 +02:00
Jeroen van Rijn
055d8c5370
Fix Windows test runner.
2021-06-20 17:33:39 +02:00
Jeroen van Rijn
955472bd21
GZIP defer diverging fix in gzip example.
2021-06-20 17:21:18 +02:00
Jeroen van Rijn
8a4b9ddaa3
Fix comment.
2021-06-18 15:42:04 +02:00
Jeroen van Rijn
54a2b6f00e
Add bytes.buffer_create_of_type and bytes.buffer_convert_to_type.
...
Convenience functions to reinterpret or cast one buffer to another type, or create a buffer of a specific type.
Example:
```odin
fmt.println("Convert []f16le (x2) to []f32 (x2).");
b := []u8{0, 60, 0, 60}; // == []f16{1.0, 1.0}
res, backing, had_to_allocate, err := bytes.buffer_convert_to_type(2, f32, f16le, b);
fmt.printf("res : %v\n", res); // [1.000, 1.000]
fmt.printf("backing : %v\n", backing); // &Buffer{buf = [0, 0, 128, 63, 0, 0, 128, 63], off = 0, last_read = Invalid}
fmt.printf("allocated: %v\n", had_to_allocate); // true
fmt.printf("err : %v\n", err); // false
if had_to_allocate { defer bytes.buffer_destroy(backing); }
fmt.println("\nConvert []f16le (x2) to []u16 (x2).");
res2: []u16;
res2, backing, had_to_allocate, err = bytes.buffer_convert_to_type(2, u16, f16le, b);
fmt.printf("res : %v\n", res2); // [15360, 15360]
fmt.printf("backing : %v\n", backing); // Buffer.buf points to `b` because it could be converted in-place.
fmt.printf("allocated: %v\n", had_to_allocate); // false
fmt.printf("err : %v\n", err); // false
if had_to_allocate { defer bytes.buffer_destroy(backing); }
fmt.println("\nConvert []f16le (x2) to []u16 (x2), force_convert=true.");
res2, backing, had_to_allocate, err = bytes.buffer_convert_to_type(2, u16, f16le, b, true);
fmt.printf("res : %v\n", res2); // [1, 1]
fmt.printf("backing : %v\n", backing); // Buffer.buf points to `b` because it could be converted in-place.
fmt.printf("allocated: %v\n", had_to_allocate); // false
fmt.printf("err : %v\n", err); // false
if had_to_allocate { defer bytes.buffer_destroy(backing); }
```
2021-06-18 15:25:36 +02:00
Jeroen van Rijn and GitHub
bc4591fc1e
Merge pull request #1006 from jockus/master
...
Fix for value rather than type used for intrinsics
2021-05-31 14:23:40 +02:00
Jeroen van Rijn
d7dba495fd
Last of the Endian float in math.odin.
2021-05-29 18:27:43 +02:00
Jeroen van Rijn
c05f6b4a31
Even more Endian maths.
2021-05-29 17:52:47 +02:00
Jeroen van Rijn
a0a578c72a
More Endian version of maths procs.
2021-05-29 17:21:54 +02:00
Jeroen van Rijn
55fc2c00c0
Add Endian versions of math routines.
2021-05-29 16:22:47 +02:00
Jeroen van Rijn
6944e2fc04
Add abs_f16 dependency when used.
2021-05-29 15:33:11 +02:00
Jeroen van Rijn
03862d1f48
Mark mem.slice_ptr_to_bytes as deprecated.
...
Use byte_slice instead.
We can't make it an alias *and* mark it as deprecated, regrettably:
```odin
byte_slice :: #force_inline proc "contextless" (data: rawptr, len: int) -> []byte {
return transmute([]u8)Raw_Slice{data=data, len=max(len, 0)};
}
@(deprecated="use byte_slice")
slice_ptr_to_bytes :: byte_slice;
"mem.odin(145:1) Constant alias declarations cannot have attributes"
```
2021-05-06 13:23:17 +02:00
Jeroen van Rijn and GitHub
15ce8b0454
Merge pull request #946 from Kelimion/virtual_allocator
...
Fix typo in core:mem alloc() comment.
2021-05-06 11:33:08 +02:00
Jeroen van Rijn
4f51d74fc2
Fix typo in core:mem alloc() comment.
2021-05-06 11:25:41 +02:00
Jeroen van Rijn and GitHub
f3c4d97250
Merge pull request #942 from Kelimion/grayscale-alpha-extract
...
Fix gray+alpha alpha extract.
2021-05-04 17:49:09 +02:00
Jeroen van Rijn
afb6ebd21e
Fix gray+alpha alpha extract.
2021-05-04 17:48:43 +02:00
Jeroen van Rijn and GitHub
3cf26af600
Merge pull request #941 from Kelimion/compress_error_handling
...
Change General_Error.OK to nil
2021-05-03 15:39:42 +02:00
Jeroen van Rijn
9a39ce6b75
Change General_Error.OK to nil
2021-05-03 15:38:43 +02:00
Jeroen van Rijn and GitHub
ca0f36be42
Merge pull request #940 from Kelimion/convert_error_checks
...
Convert `core:compress` and `core:image` error checks to new union co…
2021-05-03 15:09:52 +02:00
Jeroen van Rijn
59b3c472ca
Convert core:compress and core:image error checks to new union comparison.
...
No more need for `is_kind(err, Error_Value)`, just test err == Error_Value.
2021-05-03 15:08:34 +02:00
Jeroen van Rijn and GitHub
448f834b28
Remove debug print in image helper.
2021-05-03 01:23:03 +02:00
Jeroen van Rijn and GitHub
9212e3176a
Merge pull request #939 from Kelimion/new_png_post_processing
...
Don't need other path for grayscale output.
2021-05-02 21:17:00 +02:00
Jeroen van Rijn
3160a6a12c
Don't need other path for grayscale output.
2021-05-02 21:11:06 +02:00
Jeroen van Rijn and GitHub
ef7b72d14c
Merge pull request #938 from Kelimion/new_png_post_processing
...
Add new PNG post processing options.
2021-05-02 20:39:33 +02:00
Jeroen van Rijn
7d534769d6
Add new PNG post processing options.
2021-05-02 20:38:30 +02:00