On Fri, Dec 06, 2013 at 10:59:37AM -0500, Vladimir Makarov wrote: > It is still two different patterns. One for reload and one for LRA. > Attribute enabled is mostly used to describe insn constraints for > subtargets.
I meant something like: (define_insn "*bswapdi2_64bit" [(set (match_operand:DI 0 "reg_or_mem_operand" "=&r,Z,??&r,r") (bswap:DI (match_operand:DI 1 "reg_or_mem_operand" "Z,r,r,r"))) (clobber (match_scratch:DI 2 "=&b,&b,&r,&r")) (clobber (match_scratch:DI 3 "=&r,&r,&r,&r")) (clobber (match_scratch:DI 4 "=&r,X,&r,&r"))] "TARGET_POWERPC64 && !TARGET_LDBRX && (REG_P (operands[0]) || REG_P (operands[1])) && !(MEM_P (operands[0]) && MEM_VOLATILE_P (operands[0])) && !(MEM_P (operands[1]) && MEM_VOLATILE_P (operands[1]))" "#" [(set_attr "length" "16,12,36,36") (set (attr "enabled") (cond [(eq_attr "alternative" "0,1") (const_int 1) (and (eq_attr "alternative" "2") (match_test "!rs6000_lra_flag")) (const_int 1) (and (eq_attr "alternative" "3") (match_test "rs6000_lra_flag")) (const_int 1)] (const_int 0)]))]) That is just one pattern. And of course (define_attr "enabled" "" (const_int 1)) somewhere early, because rs6000 wasn't using enabled attribute yet. Jakub