HP-UX IA64 ILP32 patch

Richard Henderson rth@redhat.com
Sun Jun 16 12:23:00 GMT 2002


On Fri, Jun 14, 2002 at 12:26:48PM -0700, Steve Ellcey wrote:
> +   rtx scratch = operands[2];
> +   if (!reload_completed)
> +     gen_reg_rtx (ptr_mode);

Typo.

> ! (define_insn "*load_di_fptr_internal1"
>     [(set (match_operand:DI 0 "register_operand" "=r")
>   	(plus:DI (reg:DI 1) (match_operand:DI 1 "function_operand" "s")))]
>     ""
>     "addl %0 = @ltoff(@fptr(%1)), gp"
>     [(set_attr "itanium_class" "ialu")])
>   
> ! (define_insn "*load_si_fptr_internal1"
> !   [(set (match_operand:DI 0 "register_operand" "=r")
> ! 	(plus:DI (reg:DI 1) (match_operand:SI 1 "function_operand" "s")))]
> !   ""
> !   "addl %0 = @ltoff(@fptr(%1)), gp"
> !   [(set_attr "itanium_class" "ialu")])

Could also just remove the mode check on op1.

> ! (define_insn "load_di_gprel"
>     [(set (match_operand:DI 0 "register_operand" "=r")
>   	(plus:DI (reg:DI 1) (match_operand:DI 1 "sdata_symbolic_operand" "s")))]
>     ""
>     "addl %0 = @gprel(%1), gp"
>     [(set_attr "itanium_class" "ialu")])
>   
> + (define_insn "load_si_gprel"
> +   [(set (match_operand:DI 0 "register_operand" "=r")
> + 	(plus:DI (reg:DI 1) (match_operand:SI 1 "sdata_symbolic_operand" "s")))]
> +   ""
> +   "addl %0 = @gprel(%1), gp"
> +   [(set_attr "itanium_class" "ialu")])

Likewise.

> ! (define_insn "*load_symptr_di_internal1"
>     [(set (match_operand:DI 0 "register_operand" "=r")
>   	(plus:DI (reg:DI 1) (match_operand:DI 1 "got_symbolic_operand" "s")))]
>     ""
>     "addl %0 = @ltoff(%1), gp"
>     [(set_attr "itanium_class" "ialu")])
>   
> + (define_insn "*load_symptr_si_internal1"
> +   [(set (match_operand:DI 0 "register_operand" "=r")
> + 	(plus:DI (reg:DI 1) (match_operand:SI 1 "got_symbolic_operand" "s")))]
> +   ""
> +   "addl %0 = @ltoff(%1), gp"
> +   [(set_attr "itanium_class" "ialu")])

Likewise.

> ! (define_insn "call_di_pic"
>     [(call (mem:DI (match_operand:DI 0 "call_operand" "b,i"))
> + 	 (match_operand 1 "" ""))
> +    (use (unspec [(reg:DI 1)] UNSPEC_PIC_CALL))
> +    (clobber (match_operand:DI 2 "register_operand" "=b,b"))]
> +   ""
> +   "br.call%+.many %2 = %0"
> +   [(set_attr "itanium_class" "br,scall")])
> + 
> + (define_insn "call_si_pic"
> +   [(call (mem:SI (match_operand:SI 0 "call_operand" "b,i"))

Likewise.

> +       else if (!TARGET_NO_PIC && symbolic_operand (op1, SImode))

Use VOIDmode to share the two code blocks.



r~



More information about the Gcc-patches mailing list