https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93053
ktkachov at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ktkachov at gcc dot gnu.org --- Comment #9 from ktkachov at gcc dot gnu.org --- (In reply to Jakub Jelinek from comment #8) > I've tried manually: > --- cas_16_1.s~ 2020-04-14 12:19:03.000000000 +0200 > +++ cas_16_1.s 2020-04-14 12:20:10.083098672 +0200 > @@ -5,7 +5,7 @@ > # 1 "<command-line>" 2 > # 1 "/usr/src/gcc/libgcc/config/aarch64/lse.S" > # 53 "/usr/src/gcc/libgcc/config/aarch64/lse.S" > - .arch armv8-a+lse > + .arch armv8-a > > > .hidden __aarch64_have_lse_atomics > @@ -37,7 +37,8 @@ > STARTFN __aarch64_cas16_relax > JUMP_IF_NOT_LSE 8f > # 166 "/usr/src/gcc/libgcc/config/aarch64/lse.S" > - casp x0, x1, x2, x3, [x4] > +// casp x0, x1, x2, x3, [x4] > + .word 0x48207c82 > ret > > 8: mov x16, x0 > which assembles (the constant taken from aarch64-linux-objdump -dr before > the changes), but for some reason when disassembled aarch64-linux-objdump > -dr knows that it was .word and not casp instruction. > Any way to emit insns not supported by the assembler? There is the .inst directive