diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5ba33772790..d397e4f3349 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2005-12-05 Jan Beulich + + * config/ia64/ia64.md (rotlsi3_internal): Don't split if rotating by + 16 bits. Provide insn pattern for this case. + 2005-12-05 Jan Beulich * libgcc2.c (__popcountSI2): Don't use wide type for iterator and diff --git a/gcc/config/ia64/ia64.md b/gcc/config/ia64/ia64.md index 989a4fd0e16..afe3e53ba4d 100644 --- a/gcc/config/ia64/ia64.md +++ b/gcc/config/ia64/ia64.md @@ -4453,8 +4453,8 @@ (rotate:SI (match_operand:SI 1 "gr_register_operand" "r") (match_operand:SI 2 "shift_32bit_count_operand" "n")))] "" - "#" - "reload_completed" + "mux2 %0 = %1, 0xe1" + "reload_completed && INTVAL (operands[2]) != 16" [(set (match_dup 3) (ior:DI (zero_extend:DI (match_dup 1)) (ashift:DI (zero_extend:DI (match_dup 1)) (const_int 32)))) @@ -4463,7 +4463,8 @@ { operands[3] = gen_rtx_REG (DImode, REGNO (operands[0])); operands[2] = GEN_INT (32 - INTVAL (operands[2])); -}) +} + [(set_attr "itanium_class" "mmshf")]) ;; :::::::::::::::::::: ;; ::