d: Merge upstream dmd 47871363d, druntime, c52e28b7, phobos 99e9c1b77.
[official-gcc.git] / gcc / testsuite / gdc.dg / simd_ctfe.d
blobb254cf312cb170f79aeaa51dd191e9413ced1e29
1 // { dg-do compile }
2 import core.simd;
4 // https://issues.dlang.org/show_bug.cgi?id=19627
5 enum int[4] fail19627 = cast(int[4])int4(0);
7 // https://issues.dlang.org/show_bug.cgi?id=19628
8 enum ice19628a = int4.init[0];
9 enum ice19628b = int4.init.array[0];
10 enum ice19628c = (cast(int[4])int4.init.array)[0];
11 enum ice19628d = (cast(int[4])int4.init)[0];
13 // https://issues.dlang.org/show_bug.cgi?id=19629
14 enum fail19629a = int4(0)[0];
15 enum fail19629b = int4(0).array[0];
16 enum fail19629c = (cast(int[4])int4(0).array)[0];
17 enum fail19628d = (cast(int[4])int4(0))[0];
19 // https://issues.dlang.org/show_bug.cgi?id=19630
20 enum fail19630a = int4.init[1..2];
21 enum fail19630b = int4.init.array[1..2];
22 enum fail19630c = (cast(int[4])int4.init.array)[1..2];
23 enum fail19630d = int4(0)[1..2];
24 enum fail19630e = int4(0).array[1..2];
25 enum fail19630f = (cast(int[4])int4(0).array)[1..2];
26 enum fail19630g = (cast(int[4])int4.init)[1..2];
27 enum fail19630h = (cast(int[4])int4(0))[1..2];
29 // Same tests as above, but use access via enum.
30 enum int4 V1 = int4.init;
31 enum int[4] V2 = int4.init.array;
32 enum int[4] V3 = cast(int[4])int4.init;
33 enum int[4] V4 = cast(int[4])int4.init.array;
34 enum int4 V5 = int4(0);
35 enum int[4] V6 = int4(0).array;
36 enum int[4] V7 = cast(int[4])int4(0);
37 enum int[4] V8 = cast(int[4])int4(0).array;
39 // CTFE index tests
40 enum I1 = V1[0]; static assert(I1 == 0);
41 enum I2 = V2[0]; static assert(I2 == 0);
42 enum I3 = V3[0]; static assert(I3 == 0);
43 enum I4 = V4[0]; static assert(I4 == 0);
44 enum I5 = V5[0]; static assert(I5 == 0);
45 enum I6 = V6[0]; static assert(I6 == 0);
46 enum I7 = V7[0]; static assert(I7 == 0);
47 enum I8 = V8[0]; static assert(I8 == 0);
49 // CTFE slice tests
50 enum S1 = V1[1..2]; static assert(S1 == [0]);
51 enum S2 = V2[1..2]; static assert(S2 == [0]);
52 enum S3 = V3[1..2]; static assert(S3 == [0]);
53 enum S4 = V4[1..2]; static assert(S4 == [0]);
54 enum S5 = V5[1..2]; static assert(S5 == [0]);
55 enum S6 = V6[1..2]; static assert(S6 == [0]);
56 enum S7 = V7[1..2]; static assert(S7 == [0]);
57 enum S8 = V8[1..2]; static assert(S8 == [0]);
59 // Same tests as above, but use access via immutable.
60 //immutable int4 v1 = int4.init; // Cannot cast to immutable at compile time
61 immutable int[4] v2 = int4.init.array;
62 immutable int[4] v3 = cast(int[4])int4.init;
63 immutable int[4] v4 = cast(int[4])int4.init.array;
64 //immutable int4 v5 = int4(0); // Cannot cast to immutable at compile time
65 immutable int[4] v6 = int4(0).array;
66 immutable int[4] v7 = cast(int[4])int4(0);
67 immutable int[4] v8 = cast(int[4])int4(0).array;
69 // CTFE index tests
70 //immutable i1 = v1[0]; static assert(i1 == 0);
71 immutable i2 = v2[0]; static assert(i2 == 0);
72 immutable i3 = v3[0]; static assert(i3 == 0);
73 immutable i4 = v4[0]; static assert(i4 == 0);
74 //immutable i5 = v5[0]; static assert(i5 == 0);
75 immutable i6 = v6[0]; static assert(i6 == 0);
76 immutable i7 = v7[0]; static assert(i7 == 0);
77 immutable i8 = v8[0]; static assert(i8 == 0);
79 // CTFE slice tests
80 //immutable s1 = v1[1..2]; static assert(s1 == [0]);
81 immutable s2 = v2[1..2]; static assert(s2 == [0]);
82 immutable s3 = v3[1..2]; static assert(s3 == [0]);
83 immutable s4 = v4[1..2]; static assert(s4 == [0]);
84 //immutable s5 = v5[1..2]; static assert(s5 == [0]);
85 immutable s6 = v6[1..2]; static assert(s6 == [0]);
86 immutable s7 = v7[1..2]; static assert(s7 == [0]);
87 immutable s8 = v8[1..2]; static assert(s8 == [0]);