https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104673
Bug ID: 104673
Summary: powerpc e500mc Error: unrecognized opcode: `isel'
Product: gcc
Version: 11.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: judge.packham at gmail dot com
Target Milestone: ---
Created attachment 52503
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=52503&action=edit
assembly file emitted by GCC
When building for powerpc with -mcpu=e500mc the generated assembly includes a
".machine ppc" directive which causes gas to ignore the command line -me500mc
flag. This means that it decides any e500mc specific instructions are invalid.
Attached is the generated assembly from a build with gcc 11.2 cross-compiled
for powerpc. As you can see the .machine directive says ppc but when gas sees
this it will reset it's internal state and decide the isel instruction is
invalid.
I think this might be an regression from
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=2d94f7dea9.
GCC only seems to have a limited set of machines it will emit which don't match
with what binutils uses.