about summary refs log tree commit diff
path: root/tests/codegen-llvm/slice-is-ascii.rs
blob: 67537c871a0a3bc71a5b98c680dcc8b2277bfd0d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//@ only-x86_64
//@ compile-flags: -C opt-level=3 -C target-cpu=x86-64
#![crate_type = "lib"]

/// Check that the fast-path of `is_ascii` uses a `pmovmskb` instruction.
/// Platforms lacking an equivalent instruction use other techniques for
/// optimizing `is_ascii`.
// CHECK-LABEL: @is_ascii_autovectorized
#[no_mangle]
pub fn is_ascii_autovectorized(s: &[u8]) -> bool {
    // CHECK: load <32 x i8>
    // CHECK-NEXT: icmp slt <32 x i8>
    // CHECK-NEXT: bitcast <32 x i1>
    // CHECK-NEXT: icmp eq i32
    s.is_ascii()
}