
Hello all, this patch checks in mdcompact, the tool written in elisp that I used to mass convert all the multi choice pattern in the aarch64 back-end to the new compact syntax. I tested it on Emacs 29 (might run on older versions as well not sure), also I verified it runs cleanly on a few other back-ends (arm, loongarch). The tool can be used to convert a single pattern, an open buffer or all md files in a directory. The tool might need further adjustment to run on some specific back-end, in case very happy to help. This patch was pre-approved here [1]. Best Regards Andrea Corallo [1] <https://gcc.gnu.org/pipermail/gcc-patches/2023-October/631830.html> contrib/ChangeLog * mdcompact/mdcompact-testsuite.el: New file. * mdcompact/mdcompact.el: Likewise. * mdcompact/tests/1.md: Likewise. * mdcompact/tests/1.md.out: Likewise. * mdcompact/tests/2.md: Likewise. * mdcompact/tests/2.md.out: Likewise. * mdcompact/tests/3.md: Likewise. * mdcompact/tests/3.md.out: Likewise. * mdcompact/tests/4.md: Likewise. * mdcompact/tests/4.md.out: Likewise. * mdcompact/tests/5.md: Likewise. * mdcompact/tests/5.md.out: Likewise. * mdcompact/tests/6.md: Likewise. * mdcompact/tests/6.md.out: Likewise. * mdcompact/tests/7.md: Likewise. * mdcompact/tests/7.md.out: Likewise.
21 lines
1 KiB
Text
21 lines
1 KiB
Text
(define_insn "*movti_aarch64"
|
|
[(set (match_operand:TI 0
|
|
"nonimmediate_operand")
|
|
(match_operand:TI 1
|
|
"aarch64_movti_operand"))]
|
|
"(register_operand (operands[0], TImode)
|
|
|| aarch64_reg_or_zero (operands[1], TImode))"
|
|
{@ [ cons: =0 , 1 ; attrs: type , length , arch ]
|
|
[ r , rUti ; multiple , 8 , * ] #
|
|
[ w , Z ; neon_move , 4 , simd ] movi\t%0.2d, #0
|
|
[ w , Z ; f_mcr , 4 , * ] fmov\t%d0, xzr
|
|
[ w , r ; f_mcr , 8 , * ] #
|
|
[ r , w ; f_mrc , 8 , * ] #
|
|
[ w , w ; neon_logic_q , 4 , simd ] mov\t%0.16b, %1.16b
|
|
[ r , m ; load_16 , 4 , * ] ldp\t%0, %H0, %1
|
|
[ m , r ; store_16 , 4 , * ] stp\t%1, %H1, %0
|
|
[ m , Z ; store_16 , 4 , * ] stp\txzr, xzr, %0
|
|
[ w , m ; load_16 , 4 , fp ] ldr\t%q0, %1
|
|
[ m , w ; store_16 , 4 , fp ] str\t%q1, %0
|
|
}
|
|
)
|