Commit | Line | Data |
---|---|---|
bd756351 TC |
1 | # Generates tests to see if the following conditions make the instruction |
2 | # undefined: | |
3 | # | |
4 | # 1) size == 0 | |
5 | # 2) size == 3 && Q == 0 | |
6 | # | |
7 | # These patterns can't be created by the assembler so instead manually encode | |
8 | # them from a starting pattern. | |
9 | .macro gen_insns_same opc | |
10 | .inst \opc | |
11 | .inst (\opc & 0xff3fffff) // size == 0 | |
12 | .inst ((\opc | 0xc00000) & 0xbfffffff) // size == 3 && Q == 0 | |
13 | .endm | |
14 | ||
15 | # Generates tests to see if the following conditions make the instruction | |
16 | # undefined: | |
17 | # | |
18 | # 1) size == 0 || size == 3 | |
19 | # 2) size == 1 && H == 1 && Q == 0 | |
20 | # 3) size == 2 && (L == 1 || Q == 0) | |
21 | # | |
22 | # These patterns can't be created by the assembler so instead manually encode | |
23 | # them from a starting pattern. | |
24 | .macro gen_insns_elem opc | |
25 | .inst \opc | |
26 | .inst (\opc & 0xff3fffff) // size == 0 | |
27 | .inst (\opc | 0xc00000) // size == 3 | |
28 | .inst ((\opc | 0x400800) & 0xbf7fffff) // size == 1 && H == 1 && Q == 0 | |
29 | .inst ((\opc | 0xa00000) & 0xffbfffff) // size == 2 && L == 1 | |
30 | .inst ((\opc | 0x800000) & 0xbfbfffff) // size == 2 && Q == 0 | |
31 | .endm | |
32 | ||
33 | # fcmla v1.2d, v2.2d, v3.2d, #0 | |
34 | gen_insns_same 0x6ec3c441 | |
35 | ||
36 | # fcmla v1.2s, v2.2s, v3.2s, #0 | |
37 | gen_insns_same 0x2e83c441 | |
38 | ||
39 | # fcmla v1.4s, v2.4s, v3.4s, #0 | |
40 | gen_insns_same 0x6e83c441 | |
41 | ||
42 | # fcmla v1.4h, v2.4h, v3.4h, #0 | |
43 | gen_insns_same 0x2e43c441 | |
44 | ||
45 | # fcmla v1.8h, v2.8h, v3.8h, #0 | |
46 | gen_insns_same 0x6e43c441 | |
47 | ||
48 | # fcmla v1.4s, v2.4s, v3.s[0], #0 | |
49 | gen_insns_elem 0x6f831041 | |
50 | ||
51 | # fcmla v1.4h, v2.4h, v3.h[0], #0 | |
52 | gen_insns_elem 0x2f431041 | |
53 | ||
54 | # fcmla v1.8h, v2.8h, v3.h[0], #0 | |
55 | gen_insns_elem 0x6f431041 | |
56 | ||
57 | # fcadd v1.2d, v2.2d, v3.2d, #90 | |
58 | gen_insns_same 0x6ec3e441 | |
59 | ||
60 | # fcadd v1.2s, v2.2s, v3.2s, #90 | |
61 | gen_insns_same 0x2e83e441 | |
62 | ||
63 | # fcadd v1.4s, v2.4s, v3.4s, #90 | |
64 | gen_insns_same 0x6e83e441 | |
65 | ||
66 | # fcadd v1.4h, v2.4h, v3.4h, #90 | |
67 | gen_insns_same 0x2e43e441 | |
68 | ||
69 | # fcadd v1.8h, v2.8h, v3.8h, #90 | |
70 | gen_insns_same 0x6e43e441 |