https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82240
--- Comment #7 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I think this due to the following from atom.md: (define_insn_reservation "atom_icmp" 1 (and (eq_attr "cpu" "atom") (and (eq_attr "type" "icmp") (eq_attr "memory" "none"))) "atom-simple-either") (define_insn_reservation "atom_icmp_mem" 1 (and (eq_attr "cpu" "atom") (and (eq_attr "type" "icmp") (eq_attr "memory" "!none"))) "atom-simple-either") (define_insn_reservation "atom_test" 1 (and (eq_attr "cpu" "atom") (and (eq_attr "type" "test") (eq_attr "memory" "none"))) "atom-simple-either") (define_insn_reservation "atom_test_mem" 1 (and (eq_attr "cpu" "atom") (and (eq_attr "type" "test") (eq_attr "memory" "!none"))) "atom-simple-either") Basically the latency code generator is being a little dumb here (I had similar issues when writing a scheduler for a new aarch64 processor) but atom.md could be improved to just say: (define_insn_reservation "atom_icmp" 1 (and (eq_attr "cpu" "atom") (and (eq_attr "type" "icmp") (eq_attr "memory" "none"))) "atom-simple-either") (define_insn_reservation "atom_icmp_mem" 1 (and (eq_attr "cpu" "atom") (eq_attr "type" "icmp")) "atom-simple-either") (define_insn_reservation "atom_test" 1 (and (eq_attr "cpu" "atom") (and (eq_attr "type" "test") (eq_attr "memory" "none"))) "atom-simple-either") (define_insn_reservation "atom_test_mem" 1 (and (eq_attr "cpu" "atom") (eq_attr "type" "test")) "atom-simple-either") That is get rid of the check for memory attr on the second case.