Warnings on Ampere A1
bkmgit opened this issue · 4 comments
When running tests on Ampere A1 with gcc, get the following warnings
Start test senario=make_nm_load_store
a.asm: Assembler messages:
a.asm:6985: Warning: unpredictable load of register pair -- `ldxp w0,w0,[x3]'
a.asm:6992: Warning: unpredictable load of register pair -- `ldxp w0,w0,[x3]'
...
a.asm:8951: Warning: unpredictable: identical transfer and status registers --`stlxr w7,w7,[x3]'
...
a.asm:9091: Warning: unpredictable: identical base and status registers --`stlxrb w7,w7,[x7]'
...
##########################################
# Test OK :-)
##########################################
9428 9428 84852 x.lst
Finish test senario=make_nm_load_store
########################################################
and
########################################################
Start test senario=make_nm_sve
a.asm: Assembler messages:
a.asm:2002: Warning: instruction opens new dependency sequence without ending previous one -- `movprfx z0.b,p7/m,z7.b'
...
a.asm:2109: Warning: SVE `movprfx' compatible instruction expected -- `orv b7,p7,z7.b'
a.asm:6824: Warning: instruction opens new dependency sequence without ending previous one -- `movprfx z0,z7'
...
a.asm:6838: Warning: instruction opens new dependency sequence without ending previous one -- `movprfx z7,z31'
a.asm:6840: Warning: SVE `movprfx' compatible instruction expected -- `sqincb x15,w15'
##########################################
# Test OK :-)
##########################################
47518 47518 427662 x.lst
Finish test senario=make_nm_sve
########################################################
Thank you for the comment. They are pseudo errors.
The regression test only checks whether Xbyak_aarch64 outputs the correct bit sequence correspond to the specified instruction; the test does not care whether the specified instruction is correct (make sense) or not (meaningless).
For exampole, LDR w0, ptr(x3)
or LDR w0, ptr(x3, 8)
should be used instead of 'LDXP w0, w0, ptr(x3)`.
So these warnings are not bugs of Xbyak_aarch64, but I think it's better to eliminate the warning in the test (eliminate the test pattern of LDXP w0, w0, ptr(x3)
).
Ok, can make a pull request with this change. What about the SVE warnings?
The warnings are output for LDXP
, STX*
, LDAXP
and STLX*
. These are pseudo errors as explained the previous comment.
That for MOVPRF
is also preudo error. MOVPRF
requires the following conditions. The test dosn't always meet these requirements, but it satisfies the purpose of checking the correctness of bit patterns generated by Xbyak_aarch64.
- the register index of
MOVPRF
destination operand is as same as that of the destination operand of its immediately preceding instruction, MOVPRF
should be combined with the destructive instruction such asFDIV <Zdn>.<T>, <Pg>/M, <Zdn>.<T>, <Zm>.<T>
.