Skip to content

Commit

Permalink
Auto merge of #135112 - tgross35:combine-select-unpredictable-test, r…
Browse files Browse the repository at this point in the history
…=the8472

Merge the intrinsic and user tests for `select_unpredictable`

[1] mentions that having a single test with `-Zmerge-functions=disabled` is preferable to having two separate tests.  Apply that to the new `select_unpredictable` test here.

[1]: #133964 (comment)
  • Loading branch information
bors committed Jan 6, 2025
2 parents 13738b0 + 74d2d4b commit 243d2ca
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 36 deletions.
35 changes: 0 additions & 35 deletions tests/codegen/bool-select-unpredictable.rs

This file was deleted.

39 changes: 38 additions & 1 deletion tests/codegen/intrinsics/select_unpredictable.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
//@ compile-flags: -O
//@ compile-flags: -O -Zmerge-functions=disabled

#![feature(core_intrinsics)]
#![feature(select_unpredictable)]
#![crate_type = "lib"]

/* Test the intrinsic */

#[no_mangle]
pub fn test_int(p: bool, a: u64, b: u64) -> u64 {
// CHECK-LABEL: define{{.*}} @test_int
Expand All @@ -28,8 +31,42 @@ pub fn test_struct(p: bool, a: Large, b: Large) -> Large {
core::intrinsics::select_unpredictable(p, a, b)
}

// ZSTs should not need a `select` expression.
#[no_mangle]
pub fn test_zst(p: bool, a: (), b: ()) -> () {
// CHECK-LABEL: define{{.*}} @test_zst
// CHECK-NEXT: start:
// CHECK-NEXT: ret void
core::intrinsics::select_unpredictable(p, a, b)
}

/* Test the user-facing version */

#[no_mangle]
pub fn test_int2(p: bool, a: u64, b: u64) -> u64 {
// CHECK-LABEL: define{{.*}} @test_int2
// CHECK: select i1 %p, i64 %a, i64 %b, !unpredictable
p.select_unpredictable(a, b)
}

#[no_mangle]
pub fn test_pair2(p: bool, a: (u64, u64), b: (u64, u64)) -> (u64, u64) {
// CHECK-LABEL: define{{.*}} @test_pair2
// CHECK: select i1 %p, {{.*}}, !unpredictable
p.select_unpredictable(a, b)
}

#[no_mangle]
pub fn test_struct2(p: bool, a: Large, b: Large) -> Large {
// CHECK-LABEL: define{{.*}} @test_struct2
// CHECK: select i1 %p, {{.*}}, !unpredictable
p.select_unpredictable(a, b)
}

#[no_mangle]
pub fn test_zst2(p: bool, a: (), b: ()) -> () {
// CHECK-LABEL: define{{.*}} @test_zst2
// CHECK-NEXT: start:
// CHECK-NEXT: ret void
p.select_unpredictable(a, b)
}

0 comments on commit 243d2ca

Please sign in to comment.