rl78-opts.h (enum rl78_mul_types): Add MUL_G14 and MUL_UNINIT.
authorNick Clifton <nickc@redhat.com>
Thu, 16 Apr 2015 07:57:56 +0000 (07:57 +0000)
committerNick Clifton <nickc@gcc.gnu.org>
Thu, 16 Apr 2015 07:57:56 +0000 (07:57 +0000)
commit72ed1126861875a4fae0d75f994e35f1b79509bd
tree6058a55ad9abb695d0a8f4a9b314ab329d819ebc
parent8a474dc5d7d152653e90e960eff1852d1c7ff914
rl78-opts.h (enum rl78_mul_types): Add MUL_G14 and MUL_UNINIT.

  * config/rl78/rl78-opts.h (enum rl78_mul_types): Add MUL_G14 and
  MUL_UNINIT.
  (enum rl78_cpu_type): New.
  * config/rl78/rl78-virt.md (attr valloc): Add divhi and divsi.
  (umulhi3_shift_virt): Remove m constraint from operand 1.
  (umulqihi3_virt): Likewise.
  * config/rl78/rl78.c (rl78_option_override): Add code to process
  -mcpu and -mmul options.
  (rl78_alloc_physical_registers): Add code to handle divhi and
  divsi valloc attributes.
  (set_origin): Likewise.
  * config/rl78/rl78.h (RL78_MUL_G14): Define.
  (TARGET_G10, TARGET_G13, TARGET_G14): Define.
  (TARGET_CPU_CPP_BUILTINS): Define __RL78_MUL_xxx__ and
  __RL78_Gxx__.
  (ASM_SPEC): Pass -mcpu on to assembler.
  * config/rl78/rl78.md (mulqi3): Add a clobber of AX.
  (mulqi3_rl78): Likewise.
  (mulhi3_g13): Likewise.
  (mulhi3): Generate the G13 or G14 versions of the insn directly.
  (mulsi3): Likewise.
  (mulhi3_g14): Add clobbers of AX and BC.
  (mulsi3_g14): Likewise.
  (mulsi3_g13): Likewise.
  (udivmodhi4, udivmodhi4_g14, udivmodsi4): New patterns.
  (udivmodsi4_g14, udivmodsi4_g13): New patterns.
  * config/rl78/rl78.opt (mmul): Initialise value to
  RL78_MUL_UNINIT.
  (mcpu): New option.
  (m13, m14, mrl78): New option aliases.
  * config/rl78/t-rl78 (MULTILIB_OPTIONS): Add mg13 and mg14.
  (MULTILIB_DIRNAMES): Add g13 and g14.
  * doc/invoke.texi: Document -mcpu and -mmul options.

  * config/rl78/divmodhi.S: Add G14 and G13 versions of the __divhi3
  and __modhi3 functions.
* config/rl78/divmodso.S: Add G14 and G13 versions of the
  __divsi3, __udivsi3, __modsi3 and __umodsi3 functions.

From-SVN: r222142
13 files changed:
gcc/ChangeLog
gcc/config/rl78/rl78-opts.h
gcc/config/rl78/rl78-virt.md
gcc/config/rl78/rl78.c
gcc/config/rl78/rl78.h
gcc/config/rl78/rl78.md
gcc/config/rl78/rl78.opt
gcc/config/rl78/t-rl78
gcc/doc/invoke.texi
gcc/testsuite/gcc.c-torture/execute/20101011-1.c
libgcc/ChangeLog
libgcc/config/rl78/divmodhi.S
libgcc/config/rl78/divmodsi.S