Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
9c16b636
Commit
9c16b636
authored
17 years ago
by
Hans-Peter Nilsson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add CRIS v32 support. Fix -mcc-init.
From-SVN: r130973
parent
6e86f9ab
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
187 additions
and
0 deletions
+187
-0
gcc/ChangeLog
+187
-0
No files found.
gcc/ChangeLog
View file @
9c16b636
2007
-
12
-
15
Hans
-
Peter
Nilsson
<
hp
@
axis
.
com
>
Add
CRIS
v32
support
.
Fix
-
mcc
-
init
.
*
config
.
gcc
:
Make
crisv32
-*
have
cpu_type
cris
.
Handle
crisv32
-*-
elf
and
crisv32
-*-
none
like
cris
-*-
elf
and
cris
-*-
none
but
without
multilibs
and
with
target_cpu_default
=
32.
(
crisv32
-*-
linux
*):
Handle
as
cris
-*-
linux
*.
Set
target_cpu_default
to
32
and
10
accordingly
.
*
config
/
cris
/
cris
.
c
(
ASSERT_PLT_UNSPEC
):
Remove
unused
macro
.
(
cris_movem_load_rest_p
,
cris_store_multiple_op_p
):
Remove
FIXME
.
Change
regno_dir
and
regno
only
if
!TARGET_V32.
(
cris_conditional_register_usage
):
If
TARGET_V32
,
set
reg_alloc_order
as
per
REG_ALLOC_ORDER_V32
and
make
CRIS_ACR_REGNUM
non
-
fixed
.
(
cris_print_base
):
Add
gcc_assert
for
post_inc
on
CRIS_ACR_REGNUM
.
(
cris_print_operand
)
<
case
'Z'
,
case
'u'
>:
New
cases
.
<
case
REG
of
case
'H'
>:
Allow
for
CRIS_SRP_REGNUM
.
(
cris_reload_address_legitimized
):
Always
return
false
for
TARGET_V32
.
(
cris_register_move_cost
):
New
function
,
guts
from
REGISTER_MOVE_COST
adjusted
for
CRIS
v32
.
(
cris_normal_notice_update_cc
):
New
function
split
out
from
...
(
cris_notice_update_cc
):
Set
cc_status
.
flags
CC_REVERSED
for
TARGET_CCINIT
.
Call
cris_normal_notice_update_cc
for
CC_REV
,
CC_NOOV32
and
CC_NORMAL
,
but
set
cc_status
.
flags
CC_NO_OVERFLOW
for
CC_NOOV32
and
TARGET_V32
.
(
cris_simple_epilogue
):
Always
return
false
for
TARGET_V32
if
cris_return_address_on_stack
yields
true
.
(
cris_cc0_user_requires_cmp
):
New
function
.
(
cris_valid_pic_const
):
Add
argument
ANY_OPERAND
.
All
callers
changed
.
Handle
CRIS_UNSPEC_PLT_PCREL
and
CRIS_UNSPEC_PCREL
.
(
cris_asm_output_case_end
):
New
function
,
guts
from
ASM_OUTPUT_CASE_END
adjusted
for
CRIS
v32
.
(
cris_override_options
):
Adjust
for
CRIS
v32
.
Mask
out
TARGET_SIDE_EFFECT_PREFIXES
and
TARGET_MUL_BUG
if
v32
.
(
cris_asm_output_mi_thunk
,
cris_expand_epilogue
)
(
cris_gen_movem_load
,
cris_emit_movem_store
)
(
cris_expand_pic_call_address
,
cris_asm_output_symbol_ref
)
(
cris_asm_output_label_ref
,
cris_output_addr_const_extra
):
Adjust
for
CRIS
v32
.
(
cris_split_movdx
):
Copy
re
-
used
MEM
.
*
config
/
cris
/
t
-
elfmulti
:
Add
multilib
v32
for
-
march
=
v32
.
*
config
/
cris
/
predicates
.
md
(
"cris_general_operand_or_pic_source"
):
New
predicate
.
(
"cris_general_operand_or_plt_symbol"
):
Replace
by
...
(
"cris_nonmemory_operand_or_callable_symbol"
):
New
predicate
.
*
config
/
cris
/
linux
.
h
:
Sanity
-
check
TARGET_CPU_DEFAULT
for
presence
and
contents
.
(
CRIS_SUBTARGET_DEFAULT_ARCH
):
New
macro
,
MASK_AVOID_GOTPLT
for
v32
,
0
otherwise
.
(
CRIS_CPP_SUBTARGET_SPEC
,
CRIS_CC1_SUBTARGET_SPEC
,
CRIS_ASM_SUBTARGET_SPEC
):
Adjust
for
different
TARGET_CPU_DEFAULT
.
(
CRIS_SUBTARGET_DEFAULT
):
Add
CRIS_SUBTARGET_DEFAULT_ARCH
.
*
config
/
cris
/
cris
.
h
:
Sanity
-
check
TARGET_CPU_DEFAULT
for
contents
.
(
CRIS_DEFAULT_TUNE
,
CRIS_ARCH_CPP_DEFAULT
)
(
CRIS_DEFAULT_ASM_ARCH_OPTION
):
New
macros
.
(
CRIS_CC1_SUBTARGET_SPEC
):
Change
default
tuning
to
use
CRIS_DEFAULT_TUNE
.
(
CRIS_CPP_SUBTARGET_SPEC
):
Ditto
.
Add
CRIS_ARCH_CPP_DEFAULT
.
(
ASM_SPEC
):
Add
sanity
-
check
erroring
out
when
both
-
march
=
and
-
mcpu
=
are
specified
.
Pass
on
either
as
--
march
=
v32
.
(
CRIS_ASM_SUBTARGET_SPEC
):
When
neither
-
march
=
or
-
mcpu
=
are
specified
,
pass
on
CRIS_DEFAULT_ASM_ARCH_OPTION
.
(
CRIS_CPU_V32
):
New
macro
.
[
!TARGET_CPU_DEFAULT]: Default-define as CRIS_CPU_BASE.
[
!TARGET_DEFAULT, TARGET_CPU_DEFAULT == 32]: Move default
TARGET_DEFAULT
definition
after
new
TARGET_CPU_DEFAULT
definition
.
Define
v32
-
adjusted
TARGET_DEFAULT
.
(
CRIS_DEFAULT_CPU_VERSION
):
Change
to
TARGET_CPU_DEFAULT
from
CRIS_CPU_BASE
.
(
TARGET_V32
):
New
macro
.
(
REG_ALLOC_ORDER_V32
):
New
macro
.
(
HARD_REGNO_MODE_OK
):
Do
not
allow
larger
-
than
-
register
-
size
modes
into
CRIS_ACR_REGNUM
.
(
enum
reg_class
):
New
classes
ACR_REGS
,
SPEC_ACR_REGS
,
GENNONACR_REGS
and
SPEC_GENNONACR_REGS
.
(
REG_CLASS_NAMES
,
REG_CLASS_CONTENTS
):
Adjust
for
new
classes
.
(
REGNO_REG_CLASS
):
Give
ACR_REGS
for
CRIS_ACR_REGNUM
.
(
MODE_CODE_BASE_REG_CLASS
):
Define
,
give
for
OCODE
POST_INC
GENNONACR_REGS
,
BASE_REG_CLASS
otherwise
.
(
REG_CLASS_FROM_LETTER
):
'a'
is
for
ACR_REGS
.
(
REGNO_MODE_CODE_OK_FOR_BASE_P
):
Define
,
refusing
OCODE
POST_INC
for
CRIS_ACR_REGNUM
.
(
PREFERRED_RELOAD_CLASS
):
Keep
ACR_REGS
as
preferred
.
(
HARD_REGNO_RENAME_OK
):
Refuse
CRIS_ACR_REGNUM
as
TO
.
(
EXTRA_CONSTRAINT
):
New
constraint
'U'
.
(
TRAMPOLINE_TEMPLATE
,
TRAMPOLINE_SIZE
,
INITIALIZE_TRAMPOLINE
)
(
ASM_OUTPUT_ADDR_DIFF_ELT
):
Adjust
for
CRIS
v32
.
(
BASE_OR_AUTOINCR_P
):
Refuse
POST_INC
for
CRIS_ACR_REGNUM
.
(
SIMPLE_ADDRESS_P
):
Remove
.
(
GO_IF_LEGITIMATE_ADDRESS
):
Use
BASE_OR_AUTOINCR_P
,
not
redundant
SIMPLE_ADDRESS_P
.
Make
one
chained
if
-
else
,
finishing
as
non
-
match
after
BASE_OR_AUTOINCR_P
for
TARGET_V32
.
(
REGISTER_MOVE_COST
):
Just
call
the
new
function
cris_register_move_cost
.
(
enum
cris_pic_symbol_type
):
Rename
cris_gotrel_symbol
to
cris_rel_symbol
.
All
users
changed
.
(
REGISTER_NAMES
):
Replace
"pc"
with
"acr"
.
(
ADDITIONAL_REGISTER_NAMES
):
Add
"pc"
for
15.
(
ASM_OUTPUT_REG_PUSH
):
Change
to
v32
-
compatible
sequence
.
(
ASM_OUTPUT_REG_POP
):
Change
to
v32
-
compatible
syntax
.
(
ASM_OUTPUT_CASE_END
):
Just
call
the
new
function
cris_asm_output_case_end
.
*
gcc
/
config
/
cris
/
cris
.
md
:
Group
related
constants
together
,
with
comments
local
.
(
CRIS_UNSPEC_PLT_GOTREL
,
CRIS_UNSPEC_PLT_PCREL
,
CRIS_UNSPEC_PCREL
)
(
CRIS_UNSPEC_CASESI
):
New
constants
.
(
CRIS_UNSPEC_PLT
):
Remove
constant
.
(
CRIS_ACR_REGNUM
):
New
constant
.
(
"slottable"
):
New
attr
alternatives
"has_return_slot"
and
"has_call_slot"
.
(
"cc"
):
New
attr
alternatives
"noov32"
and
"rev"
.
((
eq_attr
"slottable"
"has_call_slot"
))
((
eq_attr
"slottable"
"has_return_slot"
)):
New
define_delays
.
(
"movdi"
,
"movsi"
):
Adjust
operands
for
CRIS
v32
.
(
"tstdi"
,
"cmpdi"
,
"adddi3"
,
"subdi3"
,
"uminsi3"
)
(
"indirect_jump"
):
Ditto
.
Make
define_expand
.
(
"*tstdi_non_v32"
,
"*tstdi_v32"
,
"*tst<mode>_cmp"
)
(
"*tst<mode>_non_cmp"
,
"*cmpdi_non_v32"
,
"*cmpdi_v32"
)
(
"*movdi_v32"
,
"*adddi3_non_v32"
,
"*adddi3_v32"
)
(
"*addsi3_non_v32"
,
"*addsi3_v32"
,
"*addhi3_non_v32"
)
(
"*addhi3_v32"
,
"*addqi3_non_v32"
,
"*addqi3_v32"
)
(
"*subdi3_non_v32"
,
"*subdi3_v32"
,
"*subsi3_non_v32"
)
(
"*subsi3_v32"
,
"*sub<mode>3_nonv32"
,
"*sub<mode>3_v32"
)
(
"*andqi3_non_v32"
,
"*andqi3_v32"
,
"*iorsi3_non_v32"
)
(
"*iorsi3_v32"
,
"*iorhi3_non_v32"
,
"*iorhi3_v32"
)
(
"*iorqi3_non_v32"
,
"*iorqi3_v32"
,
"*uminsi3_non_v32"
)
(
"*uminsi3_v32"
,
"*indirect_jump_non_v32"
,
"*indirect_jump_v32"
)
(
"*expanded_call_v32"
,
"*expanded_call_value_v32"
):
New
patterns
,
for
the
corresponding
standard
name
.
(
"tst<mode>"
):
Limit
to
BW
and
make
define_expand
.
(
"tstsi"
):
Make
separate
insn
,
adjusting
for
CRIS
v32
.
(
"*cmp_swapext<mode>"
):
Adjust
for
v32
.
Specify
"rev"
for
attr
"cc"
.
(
"cmpsi"
,
"cmp<mode>"
):
Remove
special
cases
for
zero
.
Specify
attr
"cc"
.
(
"*btst"
):
Don
't match for TARGET_CCINIT. Replace test of
register with compatible "cmpq 0". Specify attr "cc".
("*movdi_insn_non_v32"): New pattern, replacing "*movdi_insn" and
define_split.
(define_split for DI move): Match CRIS v32 only.
("*movsi_got_load", "*movsi_internal", "*addi"): Adjust for CRIS
v32.
("load_multiple", "store_multiple", "*addsbw_v32", "*addubw_v32")
("*adds<mode>_v32", "*addu<mode>_v32", "*bound<mode>_v32")
("*casesi_jump_v32", "*expanded_andsi_v32", "*expanded_andhi_v32")
("*extop<mode>si_v32", "*extopqihi_v32", "*andhi_lowpart_v32")
("*andqi_lowpart_v32", "cris_casesi_v32"): New patterns.
("add<mode>3"): Make addsi3, addhi3 and addqi3 define_expand.
("sub<mode>3"): Ditto subsi3, subhi3 and subqi3.
("ior<mode>3"): Ditto iorsi3, iorhi3 and iorqi3.
("*extopqihi_non_v32"): Replace "*extopqihi".
("*extop<mode>si_non_v32"): Replace "*extop<mode>si".
("*addxqihi_swap_non_v32"): Rename from "*extopqihi_swap", make
non-v32 only.
("*extop<mode>si_swap_non_v32"): Ditto "*extop<mode>si_swap".
("*expanded_andsi_non_v32"): Ditto "*expanded_andsi".
("*expanded_andhi_non_v32"): Ditto "*expanded_andhi".
("*andhi_lowpart_non_v32"): Ditto "*andhi_lowpart".
("*andqi_lowpart_non_v32"): Ditto "*andqi_lowpart".
("*expanded_call_non_v32"): Ditto "*expanded_call". Change from
"cris_general_operand_or_plt_symbol" to "general_operand".
("*expanded_call_value_non_v32") Ditto "*expanded_call_value".
("*casesi_adds_w", "mstep_shift", "mstep_mul")
("*expanded_call_side", "*expanded_call_value_side")
(op-extend-split, op-extend-split-rx=rz, op-extend-split-swapped)
(op-extend-split-swapped-rx=rz, op-extend, op-split-rx=rz)
(op-split-swapped, op-split-swapped-rx=rz): Make non-v32 only.
("dstep_mul", "xorsi3", "one_cmplsi2", "<shlr>si3")
("*expanded_<shlr><mode>", "*<shlr><mode>_lowpart", "ashl<mode>3")
("*ashl<mode>_lowpart", "abssi2", "clzsi2", "bswapsi2", "cris_swap_bits"): Specify "noov32" for
attr "cc".
("<su>mulsi3_highpart"): Ditto. Correct operand 0 to
register_operand.
("andqi3"): Make define_expand.
("*return_expanded"): For attr "slottable", change from "has_slot"
to "has_return_slot".
("cris_casesi_non_v32"): New pattern, old contents of "casesi".
("casesi"): Divert into "cris_casesi_v32" and
"cris_casesi_non_v32".
(moversideqi, movemsideqi, mover2side): Require
TARGET_SIDE_EFFECT_PREFIXES.
(gotplt-to-plt, gotplt-to-plt-side): Change from CRIS_UNSPEC_PLT
to CRIS_UNSPEC_PLT_GOTREL.
* config/cris/cris-protos.h (cris_register_move_cost)
(cris_cc0_user_requires_cmp, cris_asm_output_case_end): Declare.
2007-12-15 Alexandre Oliva <aoliva@redhat.com>
PR debug/7081
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment