Commit | Line | Data |
---|---|---|
e66cfcef TC |
1 | /* Checks that CPY is allowed after a movprfx, special case in that SIMD&Scalar |
2 | version is also valid and Pg is 4 bits rather than 3. | |
3 | Has invalid usages. Diagnosis required. */ | |
4 | .text | |
5 | .arch armv8-a+sve | |
6 | ||
7 | f: | |
8 | /* OK, immediate predicated, alias mov. */ | |
9 | movprfx z1.d, p1/m, z3.d | |
10 | cpy z1.d, p1/m, #12 | |
11 | ||
12 | /* OK, immediate predicated, alias mov, fmov. */ | |
13 | movprfx z1.d, p1/m, z3.d | |
14 | cpy z1.d, p1/m, #0 | |
15 | ||
16 | /* OK, immediate predicated, alias mov. */ | |
17 | movprfx z1.d, p1/m, z3.d | |
18 | fmov z1.d, p1/m, #0 | |
19 | ||
20 | /* Not OK, immediate predicated, but different predicate registers. */ | |
21 | movprfx z1.d, p1/m, z3.d | |
22 | cpy z1.d, p9/m, #12 | |
23 | ||
24 | /* Not OK, zeroing predicate. */ | |
25 | movprfx z1.d, p1/m, z3.d | |
26 | cpy z1.d, p1/z, #12 | |
27 | ||
28 | /* OK, scalar predicated, alias mov. */ | |
29 | movprfx z1.d, p1/m, z3.d | |
30 | cpy z1.d, p1/m, x2 | |
31 | ||
32 | /* Not OK, scalar but register z1 and x1 are architecturally the same. */ | |
33 | movprfx z1.d, p1/m, z3.d | |
34 | cpy z1.d, p1/m, x1 | |
35 | ||
36 | /* OK, SIMD&FP predicated, alias mov */ | |
37 | movprfx z1.d, p1/m, z3.d | |
38 | cpy z1.d, p1/m, d2 | |
39 | ||
40 | /* Not OK, SIMD&FP predicated, but register d1 is architecturally the | |
41 | same. */ | |
42 | movprfx z1.d, p1/m, z3.d | |
43 | cpy z1.d, p1/m, d1 | |
44 | ret | |
45 |