Browse Source
This patch is adding new MOV (alias) and MOVA SME instruction. gas/ChangeLog: * config/tc-aarch64.c (enum sme_hv_slice): new enum. (struct reloc_entry): Added ZAH and ZAV registers. (parse_sme_immediate): Immediate parser. (parse_sme_za_hv_tiles_operand): ZA tile parser. (parse_sme_za_hv_tiles_operand_index): Index parser. (parse_operands): Added ZA tile parser calls. (REGNUMS): New macro. Regs with suffix. (REGSET16S): New macro. 16 regs with suffix. * testsuite/gas/aarch64/sme-2-illegal.d: New test. * testsuite/gas/aarch64/sme-2-illegal.l: New test. * testsuite/gas/aarch64/sme-2-illegal.s: New test. * testsuite/gas/aarch64/sme-2.d: New test. * testsuite/gas/aarch64/sme-2.s: New test. * testsuite/gas/aarch64/sme-2a.d: New test. * testsuite/gas/aarch64/sme-2a.s: New test. * testsuite/gas/aarch64/sme-3-illegal.d: New test. * testsuite/gas/aarch64/sme-3-illegal.l: New test. * testsuite/gas/aarch64/sme-3-illegal.s: New test. * testsuite/gas/aarch64/sme-3.d: New test. * testsuite/gas/aarch64/sme-3.s: New test. * testsuite/gas/aarch64/sme-3a.d: New test. * testsuite/gas/aarch64/sme-3a.s: New test. include/ChangeLog: * opcode/aarch64.h (enum aarch64_opnd): New enums AARCH64_OPND_SME_ZA_HV_idx_src and AARCH64_OPND_SME_ZA_HV_idx_dest. (struct aarch64_opnd_info): New ZA tile vector struct. opcodes/ChangeLog: * aarch64-asm.c (aarch64_ins_sme_za_hv_tiles): New inserter. * aarch64-asm.h (AARCH64_DECL_OPD_INSERTER): New inserter ins_sme_za_hv_tiles. * aarch64-dis.c (aarch64_ext_sme_za_hv_tiles): New extractor. * aarch64-dis.h (AARCH64_DECL_OPD_EXTRACTOR): New extractor ext_sme_za_hv_tiles. * aarch64-opc.c (aarch64_print_operand): Handle SME_ZA_HV_idx_src and SME_ZA_HV_idx_dest. * aarch64-opc.h (enum aarch64_field_kind): New enums FLD_SME_size_10, FLD_SME_Q, FLD_SME_V and FLD_SME_Rv. (struct aarch64_operand): Increase fields size to 5. * aarch64-tbl.h (OP_SME_BHSDQ_PM_BHSDQ): New qualifiers aarch64-asm-2.c: Regenerate. aarch64-dis-2.c: Regenerate. aarch64-opc-2.c: Regenerate.binutils-2_38-branch
26 changed files with 952 additions and 176 deletions
@ -0,0 +1,3 @@ |
|||
#as: -march=armv8-a+sme |
|||
#source: sme-2-illegal.s |
|||
#error_output: sme-2-illegal.l |
|||
@ -0,0 +1,27 @@ |
|||
[^:]*: Assembler messages: |
|||
[^:]*:[0-9]+: Error: ZA tile vector out of range at operand 3 -- `mova z0\.b,p0/m,za1h\.b\[w12,#0\]' |
|||
[^:]*:[0-9]+: Error: ZA tile vector out of range at operand 3 -- `mova z0\.h,p0/m,za2h\.h\[w12,#0\]' |
|||
[^:]*:[0-9]+: Error: ZA tile vector out of range at operand 3 -- `mova z0\.s,p0/m,za4h\.s\[w12,#0\]' |
|||
[^:]*:[0-9]+: Error: ZA tile vector out of range at operand 3 -- `mova z0\.d,p0/m,za8h\.d\[w12,#0\]' |
|||
[^:]*:[0-9]+: Error: operand 3 must be an SME horizontal or vertical vector access register -- `mova z0\.q,p0/m,za16h.q\[w12\]' |
|||
[^:]*:[0-9]+: Error: index offset out of range at operand 3 -- `mova z31\.b,p7/m,za0v\.b\[w15,#16\]' |
|||
[^:]*:[0-9]+: Error: index offset out of range at operand 3 -- `mova z31\.h,p7/m,za1v\.h\[w15,#8\]' |
|||
[^:]*:[0-9]+: Error: index offset out of range at operand 3 -- `mova z31\.s,p7/m,za3v\.s\[w15,#4\]' |
|||
[^:]*:[0-9]+: Error: index offset out of range at operand 3 -- `mova z31\.d,p7/m,za7v\.d\[w15,#2\]' |
|||
[^:]*:[0-9]+: Error: index offset out of range at operand 3 -- `mova z31\.q,p7/m,za15v\.q\[w15,#1\]' |
|||
[^:]*:[0-9]+: Error: expected ',' at operand 3 -- `mova z31\.q,p7/m,za15v\.q\[w15\]' |
|||
[^:]*:[0-9]+: Error: expected '\[' at operand 3 -- `mova z0\.b,p0/m,za0v.b' |
|||
[^:]*:[0-9]+: Error: expected vector select register W12-W15 at operand 3 -- `mova z31\.b,p7/m,za0v\.b\[15,w15\]' |
|||
[^:]*:[0-9]+: Error: expected ',' at operand 3 -- `mova z0\.h,p0/m,za0v\.h\[w12\. 0\]' |
|||
[^:]*:[0-9]+: Error: expected vector select register W12-W15 at operand 3 -- `mova z0\.s,p0/m,za0v\.s\[x12,0]' |
|||
[^:]*:[0-9]+: Error: expected vector select register W12-W15 at operand 3 -- `mova z0\.d,p0/m,za0v\.d\[w21,0\]' |
|||
[^:]*:[0-9]+: Error: expected vector select register W12-W15 at operand 3 -- `mova z0\.q,p0/m,za0v\.q\[s12\]' |
|||
[^:]*:[0-9]+: Error: expected vector select register W12-W15 at operand 3 -- `mova z0\.q,p0/m,za0v\.q\[d12\]' |
|||
[^:]*:[0-9]+: Error: index offset immediate expected at operand 3 -- `mova z0.q,p0/m,za0v\.q\[w12,\]' |
|||
[^:]*:[0-9]+: Error: expected ',' at operand 3 -- `mova z0\.q,p0/m,za0v\.q\[w12\.\]' |
|||
[^:]*:[0-9]+: Error: index offset immediate expected at operand 3 -- `mova z0\.q,p0/m,za0v\.q\[w12,abc\]' |
|||
[^:]*:[0-9]+: Error: index offset immediate expected at operand 3 -- `mova z0\.q,p0/m,za0v\.q\[w12,#abc\]' |
|||
[^:]*:[0-9]+: Error: expected '\]' at operand 3 -- `mova z0\.q,p0/m,za0v\.q\[w12,1a\]' |
|||
[^:]*:[0-9]+: Error: expected '\]' at operand 3 -- `mova z0\.q,p0/m,za0v\.q\[w12,#1a\]' |
|||
[^:]*:[0-9]+: Error: expected '\]' at operand 3 -- `mova z0\.q,p0/m,za0v\.q\[w12,1a2\]' |
|||
[^:]*:[0-9]+: Error: expected '\]' at operand 3 -- `mova z0\.q,p0/m,za0v\.q\[w12,#1a2\]' |
|||
@ -0,0 +1,32 @@ |
|||
/* Scalable Matrix Extension (SME). */ |
|||
|
|||
/* MOVA (tile to vector) variant. */ |
|||
mova z0.b, p0/m, za1h.b[w12, #0] |
|||
mova z0.h, p0/m, za2h.h[w12, #0] |
|||
mova z0.s, p0/m, za4h.s[w12, #0] |
|||
mova z0.d, p0/m, za8h.d[w12, #0] |
|||
mova z0.q, p0/m, za16h.q[w12] |
|||
|
|||
mova z31.b, p7/m, za0v.b[w15, #16] |
|||
mova z31.h, p7/m, za1v.h[w15, #8] |
|||
mova z31.s, p7/m, za3v.s[w15, #4] |
|||
mova z31.d, p7/m, za7v.d[w15, #2] |
|||
mova z31.q, p7/m, za15v.q[w15, #1] |
|||
mova z31.q, p7/m, za15v.q[w15] |
|||
|
|||
/* Syntax issues. */ |
|||
mova z0.b, p0/m, za0v.b |
|||
mova z31.b, p7/m, za0v.b[15, w15] |
|||
mova z0.h, p0/m, za0v.h[w12. 0] |
|||
mova z0.s, p0/m, za0v.s[x12, 0] |
|||
mova z0.d, p0/m, za0v.d[w21, 0] |
|||
mova z0.q, p0/m, za0v.q[s12] |
|||
mova z0.q, p0/m, za0v.q[d12] |
|||
mova z0.q, p0/m, za0v.q[w12,] |
|||
mova z0.q, p0/m, za0v.q[w12.] |
|||
mova z0.q, p0/m, za0v.q[w12, abc] |
|||
mova z0.q, p0/m, za0v.q[w12, #abc] |
|||
mova z0.q, p0/m, za0v.q[w12, 1a] |
|||
mova z0.q, p0/m, za0v.q[w12, #1a] |
|||
mova z0.q, p0/m, za0v.q[w12, 1a2] |
|||
mova z0.q, p0/m, za0v.q[w12, #1a2] |
|||
@ -0,0 +1,43 @@ |
|||
#name: SME extension, MOVA (tile to vector) |
|||
#as: -march=armv8-a+sme |
|||
#objdump: -dr |
|||
|
|||
.*: file format .* |
|||
|
|||
Disassembly of section \.text: |
|||
|
|||
0+ <.*>: |
|||
0: c0028000 mov z0.b, p0/m, za0v.b\[w12, 0\] |
|||
4: c0428000 mov z0.h, p0/m, za0v.h\[w12, 0\] |
|||
8: c0828000 mov z0.s, p0/m, za0v.s\[w12, 0\] |
|||
c: c0c28000 mov z0.d, p0/m, za0v.d\[w12, 0\] |
|||
10: c0c38000 mov z0.q, p0/m, za0v.q\[w12, 0\] |
|||
14: c002fdff mov z31.b, p7/m, za0v.b\[w15, 15\] |
|||
18: c042fdff mov z31.h, p7/m, za1v.h\[w15, 7\] |
|||
1c: c082fdff mov z31.s, p7/m, za3v.s\[w15, 3\] |
|||
20: c0c2fdff mov z31.d, p7/m, za7v.d\[w15, 1\] |
|||
24: c0c3fdff mov z31.q, p7/m, za15v.q\[w15, 0\] |
|||
28: c0020000 mov z0.b, p0/m, za0h.b\[w12, 0\] |
|||
2c: c0420000 mov z0.h, p0/m, za0h.h\[w12, 0\] |
|||
30: c0820000 mov z0.s, p0/m, za0h.s\[w12, 0\] |
|||
34: c0c20000 mov z0.d, p0/m, za0h.d\[w12, 0\] |
|||
38: c0c30000 mov z0.q, p0/m, za0h.q\[w12, 0\] |
|||
3c: c0027dff mov z31.b, p7/m, za0h.b\[w15, 15\] |
|||
40: c0427dff mov z31.h, p7/m, za1h.h\[w15, 7\] |
|||
44: c0827dff mov z31.s, p7/m, za3h.s\[w15, 3\] |
|||
48: c0c27dff mov z31.d, p7/m, za7h.d\[w15, 1\] |
|||
4c: c0c37dff mov z31.q, p7/m, za15h.q\[w15, 0\] |
|||
50: c0027dff mov z31.b, p7/m, za0h.b\[w15, 15\] |
|||
54: c0427dff mov z31.h, p7/m, za1h.h\[w15, 7\] |
|||
58: c0827dff mov z31.s, p7/m, za3h.s\[w15, 3\] |
|||
5c: c0c27dff mov z31.d, p7/m, za7h.d\[w15, 1\] |
|||
60: c0c37dff mov z31.q, p7/m, za15h.q\[w15, 0\] |
|||
64: c0027dff mov z31.b, p7/m, za0h.b\[w15, 15\] |
|||
68: c0427dff mov z31.h, p7/m, za1h.h\[w15, 7\] |
|||
6c: c0827dff mov z31.s, p7/m, za3h.s\[w15, 3\] |
|||
70: c0c27dff mov z31.d, p7/m, za7h.d\[w15, 1\] |
|||
74: c0c37dff mov z31.q, p7/m, za15h.q\[w15, 0\] |
|||
78: c0c27dff mov z31.d, p7/m, za7h.d\[w15, 1\] |
|||
7c: c0c37dff mov z31.q, p7/m, za15h.q\[w15, 0\] |
|||
80: c002a400 mov z0.b, p1/m, za0v.b\[w13, 0\] |
|||
84: c002a4e0 mov z0.b, p1/m, za0v.b\[w13, 7\] |
|||
@ -0,0 +1,52 @@ |
|||
/* Scalable Matrix Extension (SME). */ |
|||
|
|||
/* MOVA (tile to vector) variant. */ |
|||
mova z0.b, p0/m, za0v.b[w12, 0] |
|||
mova z0.h, p0/m, za0v.h[w12, 0] |
|||
mova z0.s, p0/m, za0v.s[w12, 0] |
|||
mova z0.d, p0/m, za0v.d[w12, 0] |
|||
mova z0.q, p0/m, za0v.q[w12, 0] |
|||
|
|||
mova z31.b, p7/m, za0v.b[w15, 15] |
|||
mova z31.h, p7/m, za1v.h[w15, 7] |
|||
mova z31.s, p7/m, za3v.s[w15, 3] |
|||
mova z31.d, p7/m, za7v.d[w15, 1] |
|||
mova z31.q, p7/m, za15v.q[w15, 0] |
|||
|
|||
mova z0.b, p0/m, za0h.b[w12, 0] |
|||
mova z0.h, p0/m, za0h.h[w12, 0] |
|||
mova z0.s, p0/m, za0h.s[w12, 0] |
|||
mova z0.d, p0/m, za0h.d[w12, 0] |
|||
mova z0.q, p0/m, za0h.q[w12, 0] |
|||
|
|||
mova z31.b, p7/m, za0h.b[w15, 15] |
|||
mova z31.h, p7/m, za1h.h[w15, 7] |
|||
mova z31.s, p7/m, za3h.s[w15, 3] |
|||
mova z31.d, p7/m, za7h.d[w15, 1] |
|||
mova z31.q, p7/m, za15h.q[w15, 0] |
|||
|
|||
/* Parser checks. */ |
|||
mova z31.b , p7/m , za0h.b [ w15 , 15 ] |
|||
mova z31.h , p7/m , za1h.h [ w15 , 7 ] |
|||
mova z31.s , p7/m , za3h.s [ w15 , 3 ] |
|||
mova z31.d , p7/m , za7h.d [ w15 , 1 ] |
|||
mova z31.q , p7/m , za15h.q [ w15 , #0 ] |
|||
mova z31.b , p7/m , za0h.b [ w15 , #15 ] |
|||
mova z31.h , p7/m , za1h.h [ w15 , #7 ] |
|||
mova z31.s , p7/m , za3h.s [ w15 , #3 ] |
|||
mova z31.d , p7/m , za7h.d [ w15 , #1 ] |
|||
mova z31.q , p7/m , za15h.q [ w15, #0 ] |
|||
|
|||
/* Register aliases. */ |
|||
foo .req w15 |
|||
bar .req za7h |
|||
baz .req z31 |
|||
|
|||
mova z31.d , p7/m , bar.d [ foo , #1 ] |
|||
mova baz.q , p7/m , za15h.q [ foo , #0 ] |
|||
|
|||
/* Named immediate. */ |
|||
val_zero = 0 |
|||
val_seven = 7 |
|||
mova z0.b, p1/m, za0v.b[w13, #val_zero] |
|||
mova z0.b, p1/m, za0v.b[w13, #val_seven] |
|||
@ -0,0 +1,29 @@ |
|||
#name: SME extension, MOV (tile to vector) |
|||
#as: -march=armv8-a+sme |
|||
#objdump: -dr |
|||
|
|||
.*: file format .* |
|||
|
|||
Disassembly of section \.text: |
|||
|
|||
0+ <.*>: |
|||
0: c0028000 mov z0\.b, p0/m, za0v\.b\[w12, 0\] |
|||
4: c0428000 mov z0\.h, p0/m, za0v\.h\[w12, 0\] |
|||
8: c0828000 mov z0\.s, p0/m, za0v\.s\[w12, 0\] |
|||
c: c0c28000 mov z0\.d, p0/m, za0v\.d\[w12, 0\] |
|||
10: c0c38000 mov z0\.q, p0/m, za0v\.q\[w12, 0\] |
|||
14: c002fdff mov z31\.b, p7/m, za0v\.b\[w15, 15\] |
|||
18: c042fdff mov z31\.h, p7/m, za1v\.h\[w15, 7\] |
|||
1c: c082fdff mov z31\.s, p7/m, za3v\.s\[w15, 3\] |
|||
20: c0c2fdff mov z31\.d, p7/m, za7v\.d\[w15, 1\] |
|||
24: c0c3fdff mov z31\.q, p7/m, za15v\.q\[w15, 0\] |
|||
28: c0020000 mov z0\.b, p0/m, za0h\.b\[w12, 0\] |
|||
2c: c0420000 mov z0\.h, p0/m, za0h\.h\[w12, 0\] |
|||
30: c0820000 mov z0\.s, p0/m, za0h\.s\[w12, 0\] |
|||
34: c0c20000 mov z0\.d, p0/m, za0h\.d\[w12, 0\] |
|||
38: c0c30000 mov z0\.q, p0/m, za0h\.q\[w12, 0\] |
|||
3c: c0027dff mov z31\.b, p7/m, za0h\.b\[w15, 15\] |
|||
40: c0427dff mov z31\.h, p7/m, za1h\.h\[w15, 7\] |
|||
44: c0827dff mov z31\.s, p7/m, za3h\.s\[w15, 3\] |
|||
48: c0c27dff mov z31\.d, p7/m, za7h\.d\[w15, 1\] |
|||
4c: c0c37dff mov z31\.q, p7/m, za15h\.q\[w15, 0\] |
|||
@ -0,0 +1,26 @@ |
|||
/* Scalable Matrix Extension (SME). */ |
|||
|
|||
/* MOV alias (tile to vector) variant. */ |
|||
mov z0.b, p0/m, za0v.b[w12, 0] |
|||
mov z0.h, p0/m, za0v.h[w12, 0] |
|||
mov z0.s, p0/m, za0v.s[w12, 0] |
|||
mov z0.d, p0/m, za0v.d[w12, 0] |
|||
mov z0.q, p0/m, za0v.q[w12, 0] |
|||
|
|||
mov z31.b, p7/m, za0v.b[w15, 15] |
|||
mov z31.h, p7/m, za1v.h[w15, 7] |
|||
mov z31.s, p7/m, za3v.s[w15, 3] |
|||
mov z31.d, p7/m, za7v.d[w15, 1] |
|||
mov z31.q, p7/m, za15v.q[w15, 0] |
|||
|
|||
mov z0.b, p0/m, za0h.b[w12, 0] |
|||
mov z0.h, p0/m, za0h.h[w12, 0] |
|||
mov z0.s, p0/m, za0h.s[w12, 0] |
|||
mov z0.d, p0/m, za0h.d[w12, 0] |
|||
mov z0.q, p0/m, za0h.q[w12, 0] |
|||
|
|||
mov z31.b, p7/m, za0h.b[w15, 15] |
|||
mov z31.h, p7/m, za1h.h[w15, 7] |
|||
mov z31.s, p7/m, za3h.s[w15, 3] |
|||
mov z31.d, p7/m, za7h.d[w15, 1] |
|||
mov z31.q, p7/m, za15h.q[w15, 0] |
|||
@ -0,0 +1,3 @@ |
|||
#as: -march=armv8-a+sme |
|||
#source: sme-3-illegal.s |
|||
#error_output: sme-3-illegal.l |
|||
@ -0,0 +1,11 @@ |
|||
[^:]*: Assembler messages: |
|||
[^:]*:[0-9]+: Error: ZA tile vector out of range at operand 1 -- `mova za1v\.b\[w12,#0\],p0/m,z0.b' |
|||
[^:]*:[0-9]+: Error: ZA tile vector out of range at operand 1 -- `mova za2v\.h\[w12,#0\],p0/m,z0.h' |
|||
[^:]*:[0-9]+: Error: ZA tile vector out of range at operand 1 -- `mova za4v\.s\[w12,#0\],p0/m,z0.s' |
|||
[^:]*:[0-9]+: Error: ZA tile vector out of range at operand 1 -- `mova za8v\.d\[w12,#0\],p0/m,z0.d' |
|||
[^:]*:[0-9]+: Error: operand 1 must be an SME horizontal or vertical vector access register -- `mova za16v\.q\[w12\],p0/m,z0.q' |
|||
[^:]*:[0-9]+: Error: index offset out of range at operand 1 -- `mova za0v\.b\[w15,#16\],p7/m,z31.b' |
|||
[^:]*:[0-9]+: Error: index offset out of range at operand 1 -- `mova za1v\.h\[w15,#8\],p7/m,z31.h' |
|||
[^:]*:[0-9]+: Error: index offset out of range at operand 1 -- `mova za3v\.s\[w15,#4\],p7/m,z31.s' |
|||
[^:]*:[0-9]+: Error: index offset out of range at operand 1 -- `mova za7v\.d\[w15,#2\],p7/m,z31.d' |
|||
[^:]*:[0-9]+: Error: index offset out of range at operand 1 -- `mova za15v\.q\[w15,#1\],p7/m,z31.q' |
|||
@ -0,0 +1,14 @@ |
|||
/* Scalable Matrix Extension (SME). */ |
|||
|
|||
/* MOVA (vector to tile) variant. */ |
|||
mova za1v.b[w12, #0], p0/m, z0.b |
|||
mova za2v.h[w12, #0], p0/m, z0.h |
|||
mova za4v.s[w12, #0], p0/m, z0.s |
|||
mova za8v.d[w12, #0], p0/m, z0.d |
|||
mova za16v.q[w12], p0/m, z0.q |
|||
|
|||
mova za0v.b[w15, #16], p7/m, z31.b |
|||
mova za1v.h[w15, #8], p7/m, z31.h |
|||
mova za3v.s[w15, #4], p7/m, z31.s |
|||
mova za7v.d[w15, #2], p7/m, z31.d |
|||
mova za15v.q[w15, #1], p7/m, z31.q |
|||
@ -0,0 +1,31 @@ |
|||
#name: SME extension, MOVA (vector to tile) |
|||
#as: -march=armv8-a+sme |
|||
#objdump: -dr |
|||
|
|||
.*: file format .* |
|||
|
|||
Disassembly of section \.text: |
|||
|
|||
0+ <.*>: |
|||
0: c0008000 mov za0v\.b\[w12, 0\], p0/m, z0\.b |
|||
4: c0408000 mov za0v\.h\[w12, 0\], p0/m, z0\.h |
|||
8: c0808000 mov za0v\.s\[w12, 0\], p0/m, z0\.s |
|||
c: c0c08000 mov za0v\.d\[w12, 0\], p0/m, z0\.d |
|||
10: c0c18000 mov za0v\.q\[w12, 0\], p0/m, z0\.q |
|||
14: c000ffef mov za0v\.b\[w15, 15\], p7/m, z31\.b |
|||
18: c040ffef mov za1v\.h\[w15, 7\], p7/m, z31\.h |
|||
1c: c080ffef mov za3v\.s\[w15, 3\], p7/m, z31\.s |
|||
20: c0c0ffef mov za7v\.d\[w15, 1\], p7/m, z31\.d |
|||
24: c0c1ffef mov za15v\.q\[w15, 0\], p7/m, z31\.q |
|||
28: c0000000 mov za0h\.b\[w12, 0\], p0/m, z0\.b |
|||
2c: c0400000 mov za0h\.h\[w12, 0\], p0/m, z0\.h |
|||
30: c0800000 mov za0h\.s\[w12, 0\], p0/m, z0\.s |
|||
34: c0c00000 mov za0h\.d\[w12, 0\], p0/m, z0\.d |
|||
38: c0c10000 mov za0h\.q\[w12, 0\], p0/m, z0\.q |
|||
3c: c0007fef mov za0h\.b\[w15, 15\], p7/m, z31\.b |
|||
40: c0407fef mov za1h\.h\[w15, 7\], p7/m, z31\.h |
|||
44: c0807fef mov za3h\.s\[w15, 3\], p7/m, z31\.s |
|||
48: c0c07fef mov za7h\.d\[w15, 1\], p7/m, z31\.d |
|||
4c: c0c17fef mov za15h\.q\[w15, 0\], p7/m, z31\.q |
|||
50: c0008000 mov za0v\.b\[w12, 0\], p0/m, z0\.b |
|||
54: c0c17fef mov za15h\.q\[w15, 0\], p7/m, z31\.q |
|||
@ -0,0 +1,31 @@ |
|||
/* Scalable Matrix Extension (SME). */ |
|||
|
|||
/* MOVA (vector to tile) variant. */ |
|||
mova za0v.b[w12, 0], p0/m, z0.b |
|||
mova za0v.h[w12, 0], p0/m, z0.h |
|||
mova za0v.s[w12, 0], p0/m, z0.s |
|||
mova za0v.d[w12, 0], p0/m, z0.d |
|||
mova za0v.q[w12, 0], p0/m, z0.q |
|||
|
|||
mova za0v.b[w15, 15], p7/m, z31.b |
|||
mova za1v.h[w15, 7], p7/m, z31.h |
|||
mova za3v.s[w15, 3], p7/m, z31.s |
|||
mova za7v.d[w15, 1], p7/m, z31.d |
|||
mova za15v.q[w15, 0], p7/m, z31.q |
|||
|
|||
mova za0h.b[w12, 0], p0/m, z0.b |
|||
mova za0h.h[w12, 0], p0/m, z0.h |
|||
mova za0h.s[w12, 0], p0/m, z0.s |
|||
mova za0h.d[w12, 0], p0/m, z0.d |
|||
mova za0h.q[w12, 0], p0/m, z0.q |
|||
|
|||
mova za0h.b[w15, 15], p7/m, z31.b |
|||
mova za1h.h[w15, 7], p7/m, z31.h |
|||
mova za3h.s[w15, 3], p7/m, z31.s |
|||
mova za7h.d[w15, 1], p7/m, z31.d |
|||
mova za15h.q[w15, 0], p7/m, z31.q |
|||
|
|||
foo .req w12 |
|||
bar .req w15 |
|||
mova za0v.b[foo, 0], p0/m, z0.b |
|||
mova za15h.q[bar, 0], p7/m, z31.q |
|||
@ -0,0 +1,29 @@ |
|||
#name: SME extension, MOV (vector to tile) |
|||
#as: -march=armv8-a+sme |
|||
#objdump: -dr |
|||
|
|||
.*: file format .* |
|||
|
|||
Disassembly of section \.text: |
|||
|
|||
0+ <.*>: |
|||
0: c0008000 mov za0v\.b\[w12, 0\], p0/m, z0\.b |
|||
4: c0408000 mov za0v\.h\[w12, 0\], p0/m, z0\.h |
|||
8: c0808000 mov za0v\.s\[w12, 0\], p0/m, z0\.s |
|||
c: c0c08000 mov za0v\.d\[w12, 0\], p0/m, z0\.d |
|||
10: c0c18000 mov za0v\.q\[w12, 0\], p0/m, z0\.q |
|||
14: c000ffef mov za0v\.b\[w15, 15\], p7/m, z31\.b |
|||
18: c040ffef mov za1v\.h\[w15, 7\], p7/m, z31\.h |
|||
1c: c080ffef mov za3v\.s\[w15, 3\], p7/m, z31\.s |
|||
20: c0c0ffef mov za7v\.d\[w15, 1\], p7/m, z31\.d |
|||
24: c0c1ffef mov za15v\.q\[w15, 0\], p7/m, z31\.q |
|||
28: c0000000 mov za0h\.b\[w12, 0\], p0/m, z0\.b |
|||
2c: c0400000 mov za0h\.h\[w12, 0\], p0/m, z0\.h |
|||
30: c0800000 mov za0h\.s\[w12, 0\], p0/m, z0\.s |
|||
34: c0c00000 mov za0h\.d\[w12, 0\], p0/m, z0\.d |
|||
38: c0c10000 mov za0h\.q\[w12, 0\], p0/m, z0\.q |
|||
3c: c0007fef mov za0h\.b\[w15, 15\], p7/m, z31\.b |
|||
40: c0407fef mov za1h\.h\[w15, 7\], p7/m, z31\.h |
|||
44: c0807fef mov za3h\.s\[w15, 3\], p7/m, z31\.s |
|||
48: c0c07fef mov za7h\.d\[w15, 1\], p7/m, z31\.d |
|||
4c: c0c17fef mov za15h\.q\[w15, 0\], p7/m, z31\.q |
|||
@ -0,0 +1,26 @@ |
|||
/* Scalable Matrix Extension (SME). */ |
|||
|
|||
/* MOV alias (vector to tile) variant. */ |
|||
mov za0v.b[w12, 0], p0/m, z0.b |
|||
mov za0v.h[w12, 0], p0/m, z0.h |
|||
mov za0v.s[w12, 0], p0/m, z0.s |
|||
mov za0v.d[w12, 0], p0/m, z0.d |
|||
mov za0v.q[w12, 0], p0/m, z0.q |
|||
|
|||
mov za0v.b[w15, 15], p7/m, z31.b |
|||
mov za1v.h[w15, 7], p7/m, z31.h |
|||
mov za3v.s[w15, 3], p7/m, z31.s |
|||
mov za7v.d[w15, 1], p7/m, z31.d |
|||
mov za15v.q[w15, 0], p7/m, z31.q |
|||
|
|||
mov za0h.b[w12, 0], p0/m, z0.b |
|||
mov za0h.h[w12, 0], p0/m, z0.h |
|||
mov za0h.s[w12, 0], p0/m, z0.s |
|||
mov za0h.d[w12, 0], p0/m, z0.d |
|||
mov za0h.q[w12, 0], p0/m, z0.q |
|||
|
|||
mov za0h.b[w15, 15], p7/m, z31.b |
|||
mov za1h.h[w15, 7], p7/m, z31.h |
|||
mov za3h.s[w15, 3], p7/m, z31.s |
|||
mov za7h.d[w15, 1], p7/m, z31.d |
|||
mov za15h.q[w15, 0], p7/m, z31.q |
|||
File diff suppressed because it is too large
Loading…
Reference in new issue