fujitsu/xbyak_aarch64

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 as FDIV <Zdn>.<T>, <Pg>/M, <Zdn>.<T>, <Zm>.<T>.