File: simd.rs

package info (click to toggle)
rustc 1.85.0%2Bdfsg3-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental, sid, trixie
  • size: 893,396 kB
  • sloc: xml: 158,127; python: 35,830; javascript: 19,497; cpp: 19,002; sh: 17,245; ansic: 13,127; asm: 4,376; makefile: 1,051; perl: 29; lisp: 29; ruby: 19; sql: 11
file content (85 lines) | stat: -rw-r--r-- 2,355 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
// Need a fix for LLDB first...
//@ ignore-lldb

// FIXME: LLVM generates invalid debug info for variables requiring
// dynamic stack realignment, which is the case on s390x for vector
// types with non-vector ABI.
//@ ignore-s390x

//@ compile-flags:-g
// gdb-command:run

// gdb-command:print vi8x16
// gdb-check:$1 = simd::i8x16 ([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
// gdb-command:print vi16x8
// gdb-check:$2 = simd::i16x8 ([16, 17, 18, 19, 20, 21, 22, 23])
// gdb-command:print vi32x4
// gdb-check:$3 = simd::i32x4 ([24, 25, 26, 27])
// gdb-command:print vi64x2
// gdb-check:$4 = simd::i64x2 ([28, 29])

// gdb-command:print vu8x16
// gdb-check:$5 = simd::u8x16 ([30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45])
// gdb-command:print vu16x8
// gdb-check:$6 = simd::u16x8 ([46, 47, 48, 49, 50, 51, 52, 53])
// gdb-command:print vu32x4
// gdb-check:$7 = simd::u32x4 ([54, 55, 56, 57])
// gdb-command:print vu64x2
// gdb-check:$8 = simd::u64x2 ([58, 59])

// gdb-command:print vf32x4
// gdb-check:$9 = simd::f32x4 ([60.5, 61.5, 62.5, 63.5])
// gdb-command:print vf64x2
// gdb-check:$10 = simd::f64x2 ([64.5, 65.5])

// gdb-command:continue

#![allow(unused_variables)]
#![feature(omit_gdb_pretty_printer_section)]
#![omit_gdb_pretty_printer_section]
#![feature(repr_simd)]

#[repr(simd)]
struct i8x16([i8; 16]);
#[repr(simd)]
struct i16x8([i16; 8]);
#[repr(simd)]
struct i32x4([i32; 4]);
#[repr(simd)]
struct i64x2([i64; 2]);
#[repr(simd)]
struct u8x16([u8; 16]);
#[repr(simd)]
struct u16x8([u16; 8]);
#[repr(simd)]
struct u32x4([u32; 4]);
#[repr(simd)]
struct u64x2([u64; 2]);
#[repr(simd)]
struct f32x4([f32; 4]);
#[repr(simd)]
struct f64x2([f64; 2]);

fn main() {

    let vi8x16 = i8x16([0, 1, 2, 3, 4, 5, 6, 7,
                      8, 9, 10, 11, 12, 13, 14, 15]);

    let vi16x8 = i16x8([16, 17, 18, 19, 20, 21, 22, 23]);
    let vi32x4 = i32x4([24, 25, 26, 27]);
    let vi64x2 = i64x2([28, 29]);

    let vu8x16 = u8x16([30, 31, 32, 33, 34, 35, 36, 37,
                      38, 39, 40, 41, 42, 43, 44, 45]);
    let vu16x8 = u16x8([46, 47, 48, 49, 50, 51, 52, 53]);
    let vu32x4 = u32x4([54, 55, 56, 57]);
    let vu64x2 = u64x2([58, 59]);

    let vf32x4 = f32x4([60.5f32, 61.5f32, 62.5f32, 63.5f32]);
    let vf64x2 = f64x2([64.5f64, 65.5f64]);

    zzz(); // #break
}

#[inline(never)]
fn zzz() { () }