Commit Graph

877 Commits

Author SHA1 Message Date
Antoni Boucher
a93d1b73c6 Fix volatile_load 2023-10-24 19:53:59 -04:00
antoyo
16b3da81f3
Merge pull request #346 from rust-lang/fix/endianness
Fix/endianness
2023-10-21 20:32:09 -04:00
Antoni Boucher
7425c560d3 Add comment 2023-10-21 18:48:03 -04:00
antoyo
2096606684
Merge pull request #354 from sadlerap/popcount-128-bits
optimize u128/i128 popcounts further
2023-10-19 07:42:50 -04:00
Andy Sadler
81c1f39a86
optimize u128/i128 popcounts further
Don't fall back on breaking apart the popcount operation if 128-bit
integers are natively supported.

Signed-off-by: Andy Sadler <andrewsadler122@gmail.com>
2023-10-18 22:10:41 -05:00
antoyo
a9f31ab481
Merge pull request #355 from rust-lang/refactor-ci
Refactor CI
2023-10-18 20:07:45 -04:00
Antoni Boucher
c7679c4831 Revome llvm-14-tools from failures CI 2023-10-18 19:04:47 -04:00
Antoni Boucher
99bc37e075 Refactor CI scripts to have a different file for libgccjit 12 2023-10-18 19:04:27 -04:00
antoyo
d64662ff3e
Merge pull request #353 from rust-lang/fix/int-types-alignment
Fix/int types alignment
2023-10-17 21:30:47 -04:00
Antoni Boucher
9d5e0ba1f5 Fixes including fixing compilation for --no-default-features 2023-10-17 20:55:54 -04:00
Antoni Boucher
e5fa9f8692 Use the correct alignment for integer types 2023-10-17 20:55:54 -04:00
antoyo
fabdc1a273
Merge pull request #348 from sadlerap/optimize-popcount
optimize popcount implementation
2023-10-17 20:47:05 -04:00
antoyo
c80fb4aaf0
Merge pull request #326 from GuillaumeGomez/non-null
Add support for NonNull function attribute
2023-10-17 17:48:03 -04:00
Andy Sadler
64abf5862f
optimize popcount implementation
In the current implementation, the gcc backend of rustc currently emits the
following for a function that implements popcount for a u32 (x86_64 targeting
AVX2, using standard unix calling convention):

    popcount:
        mov     eax, edi
        and     edi, 1431655765
        shr     eax
        and     eax, 1431655765
        add     edi, eax
        mov     edx, edi
        and     edi, 858993459
        shr     edx, 2
        and     edx, 858993459
        add     edx, edi
        mov     eax, edx
        and     edx, 252645135
        shr     eax, 4
        and     eax, 252645135
        add     eax, edx
        mov     edx, eax
        and     eax, 16711935
        shr     edx, 8
        and     edx, 16711935
        add     edx, eax
        movzx   eax, dx
        shr     edx, 16
        add     eax, edx
        ret

Rather than using this implementation, gcc could be told to use Wenger's
algorithm.  This would give the same function the following implementation:

    popcount:
        xor eax, eax
        xor edx, edx
        popcnt eax, edi
        test edi, edi
        cmove eax, edx
        ret

This patch implements the popcount operation in terms of Wenger's algorithm in
all cases.

Signed-off-by: Andy Sadler <andrewsadler122@gmail.com>
2023-10-17 16:20:55 -05:00
Guillaume Gomez
0348a5f17a Improve code readability 2023-10-17 23:00:23 +02:00
Guillaume Gomez
096f14d374 Add support for NonNull function attribute 2023-10-17 15:03:25 +02:00
antoyo
4dce75f2e7
Merge pull request #352 from rust-lang/update-libgccjit
Fix #[inline(always)] attribute and support unsigned comparison for signed integers
2023-10-17 08:41:45 -04:00
Antoni Boucher
e2f32c72a7 Ignore failing test
This test only fails with non-native 128-bit integers, but it will also
fail with native 128-bit integers if we copy/paste it so that it's
executed twice. Interestingly, wrapping the test in a loop won't make it
fail.
So, it could be due to stack space or unwinding in release mode.
Also, the test only fails with -O2:
../cargo.sh rustc --bin test-rust -- -O

It doesn't fail with -O3.
2023-10-17 07:57:56 -04:00
Antoni Boucher
e3998b2d46 Handle unsigned comparison for signed integers 2023-10-13 07:50:42 -04:00
Antoni Boucher
100dfced20 Fix #[inline(always)] attribute 2023-10-11 20:55:32 -04:00
Antoni Boucher
9030b70421 Update libgccjit 2023-10-11 19:38:03 -04:00
Antoni Boucher
cf8c391fc1 Add comment 2023-10-10 19:19:38 -04:00
antoyo
11a0cceab9
Merge pull request #350 from rust-lang/sync_from_rust_2023_10_08
Sync from rust 2023/10/08
2023-10-09 15:34:06 -04:00
Antoni Boucher
a7532daa76 Fix unchecked_ssub, unchecked_smul, and unchecked_umul 2023-10-09 13:16:47 -04:00
Antoni Boucher
a00ea0bf98 Fix unchecked_sadd 2023-10-09 13:03:23 -04:00
Antoni Boucher
70834391ae Fix UI tests 2023-10-09 11:27:43 -04:00
Antoni Boucher
3fe53587e4 Add missing comma in alloc_system 2023-10-09 11:09:53 -04:00
Antoni Boucher
ad5637468e Add missing panic_in_cleanup 2023-10-09 11:08:42 -04:00
Antoni Boucher
e7f7fb87dd Fix tests 2023-10-09 10:55:25 -04:00
Antoni Boucher
bd7e5b9d4e Fix bitcast with different sizes 2023-10-09 10:38:37 -04:00
Antoni Boucher
237be9e0cb Update to nightly-2023-10-08 2023-10-08 11:32:07 -04:00
Antoni Boucher
c567e59bad Merge branch 'master' into sync_from_rust_2023_10_08 2023-10-08 11:31:53 -04:00
antoyo
d484836a6f
Merge pull request #349 from rust-lang/fix/128-bit-ints-operations
Fix/128 bit ints operations
2023-10-08 09:29:13 -04:00
Antoni Boucher
b3c10d4a7d Fix 128-bit non-native integers negation 2023-10-08 08:49:20 -04:00
Antoni Boucher
b3fecae7d7 Fix 128-bit non-native integers comparison 2023-10-07 15:14:54 -04:00
antoyo
c6447be05f
Merge pull request #345 from GuillaumeGomez/build-sysroot
Rustify build.sh script
2023-10-05 17:11:26 -04:00
Guillaume Gomez
33e1daa51b Improve code 2023-10-05 21:10:33 +02:00
Guillaume Gomez
eedf1b6cb4 Migrate build.sh script to rust 2023-10-04 23:21:03 +02:00
bors
91ab7909e1 Auto merge of #102099 - InnovativeInventor:re-cold-land, r=nikic
Rebased: Mark drop calls in landing pads cold instead of noinline

I noticed that certain inlining optimizations were missing while staring at some compiled code output. I'd like to see this relanded, so I rebased the PR from `@erikdesjardins` (PR #94823).

This PR reapplies https://github.com/rust-lang/rust/pull/92419, which was reverted in https://github.com/rust-lang/rust/pull/94402 due to https://github.com/rust-lang/rust/issues/94390.

Fixes https://github.com/rust-lang/rust/issues/46515, fixes https://github.com/rust-lang/rust/issues/87055.

Update: fixes #97217.
2023-10-02 22:02:12 +00:00
Erik Desjardins
7e8c85ba31 Reapply: Mark drop calls in landing pads cold instead of noinline
Co-authored-by: Max Fan <git@max.fan>
Co-authored-by: Nikita Popov <npopov@redhat.com>
2023-10-02 10:37:53 +02:00
bors
c7407eff9d Auto merge of #115898 - onur-ozkan:config-change-tracking, r=Mark-Simulacrum
bootstrap major change detection implementation

The use of `changelog-seen` and `bootstrap/CHANGELOG.md` has not been functional in any way for many years. We often do major/breaking changes but never update the changelog file or the `changelog-seen`. This is an alternative method for tracking major or breaking changes and informing developers when such changes occur.

Example output when bootstrap detects a major change:
![image](https://github.com/rust-lang/rust/assets/39852038/ee802dfa-a02b-488b-a433-f853ce079b8a)
2023-10-02 07:41:52 +00:00
onur-ozkan
b1862af177 implement major change tracking for the bootstrap configuration
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-10-01 16:54:52 +03:00
antoyo
71febd94f4
Merge pull request #344 from GuillaumeGomez/improvements
Improve y.sh script (to potentially allow dependencies) and improve `build_system` help message
2023-09-25 17:19:20 -04:00
Guillaume Gomez
6be1f36744 Add help message 2023-09-25 17:17:50 +02:00
Guillaume Gomez
ccf5799782 Use cargo to build the build system binary 2023-09-25 17:04:44 +02:00
antoyo
2e585e85e1
Merge pull request #343 from GuillaumeGomez/add-attribute-doc
Add guide to add new attributes support in libgccjit
2023-09-22 18:23:15 -04:00
Oli Scherer
8373b05514 Have a single struct for queries and hook 2023-09-22 16:26:20 +00:00
Guillaume Gomez
a7d8b8eb9f Add guide to add new attributes support in libgccjit 2023-09-22 16:50:42 +02:00
Oli Scherer
38b9e26a75 Add a way to decouple the implementation and the declaration of a TyCtxt method. 2023-09-22 09:23:15 +00:00
antoyo
e7d1dc33c6
Merge pull request #337 from rust-lang/fix/gep
Fix gep on pointers to non-number
2023-09-20 17:57:04 -04:00