aboutsummaryrefslogtreecommitdiff
path: root/libcpp/files.cc
diff options
context:
space:
mode:
authorRichard Earnshaw <rearnsha@arm.com>2025-04-14 16:41:16 +0100
committerRichard Earnshaw <rearnsha@arm.com>2025-05-08 13:22:35 +0100
commitf260146bc05f6fba7b2a67a62063c770588b769d (patch)
tree9af8793f436a191d69673cef5971f9184c442664 /libcpp/files.cc
parent1e8bd720b1a618a39e2a41eec05e935c32d295f3 (diff)
downloadgcc-f260146bc05f6fba7b2a67a62063c770588b769d.zip
gcc-f260146bc05f6fba7b2a67a62063c770588b769d.tar.gz
gcc-f260146bc05f6fba7b2a67a62063c770588b769d.tar.bz2
aarch64: Fix up commutative and early-clobber markers on compact insns
For constraints there are operand modifiers and constraint qualifiers. Operand modifiers apply to all alternatives and must appear, in traditional syntax before the first alternative. Constraint qualifiers, on the other hand must appear in each alternative to which they apply. There's no easy way to validate the distinction in the traditional md format, but when using the new compact format we can enforce some semantic checking of these characters to avoid some potentially surprising code generation. Fortunately, all of these errors are benign, but the two misplaced early-clobber markers were quite suspicious at first sight - it's only by luck that the second alternative does not need an early-clobber. The syntax checking will be added in the following patch, but first of all, fix up the errors in aarch64.md. gcc/ * config/aarch64/aarch64-sve.md (@aarch64_pred_<optab><mode>): Move commutative marker to the cons specification. (add<mode>3): Likewise. (@aarch64_pred_<su>abd<mode>): Likewise. (@aarch64_pred_<optab><mode>): Likewise. (*cond_<optab><mode>_z): Likewise. (<optab><mode>3): Likewise. (@aarch64_pred_<optab><mode>): Likewise. (*aarch64_pred_abd<mode>_relaxed): Likewise. (*aarch64_pred_abd<mode>_strict): Likewise. (@aarch64_pred_<optab><mode>): Likewise. (@aarch64_pred_<optab><mode>): Likewise. (@aarch64_pred_fma<mode>): Likewise. (@aarch64_pred_fnma<mode>): Likewise. (@aarch64_pred_<optab><mode>): Likewise. * config/aarch64/aarch64-sve2.md (@aarch64_sve_<su>clamp<mode>): Move commutative marker to the cons specification. (*aarch64_sve_<su>clamp<mode>_x): Likewise. (@aarch64_sve_fclamp<mode>): Likewise. (*aarch64_sve_fclamp<mode>_x): Likewise. (*aarch64_sve2_nor<mode>): Likewise. (*aarch64_sve2_nand<mode>): Likewise. (*aarch64_pred_faminmax_fused): Likewise. * config/aarch64/aarch64.md (*loadwb_pre_pair_<ldst_sz>): Move the early-clobber marker to the relevant alternative. (*storewb_pre_pair_<ldst_sz>): Likewise. (*add<mode>3_aarch64): Move commutative marker to the cons specification. (*addsi3_aarch64_uxtw): Likewise. (*add<mode>3_poly_1): Likewise. (add<mode>3_compare0): Likewise. (*addsi3_compare0_uxtw): Likewise. (*add<mode>3nr_compare0): Likewise. (<optab><mode>3): Likewise. (*<optab>si3_uxtw): Likewise. (*and<mode>3_compare0): Likewise. (*andsi3_compare0_uxtw): Likewise. (@aarch64_and<mode>3nr_compare0): Likewise.
Diffstat (limited to 'libcpp/files.cc')
0 files changed, 0 insertions, 0 deletions