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
2371d1a0
Commit
2371d1a0
authored
Nov 15, 2011
by
Richard Henderson
Committed by
Richard Henderson
Nov 15, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
alpha: Convert to atomic optabs.
From-SVN: r181395
parent
6dc88283
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
45 additions
and
10 deletions
+45
-10
gcc/ChangeLog
+26
-0
gcc/config/alpha/alpha-protos.h
+8
-9
gcc/config/alpha/alpha.c
+0
-0
gcc/config/alpha/alpha.md
+1
-0
gcc/config/alpha/constraints.md
+5
-1
gcc/config/alpha/predicates.md
+5
-0
gcc/config/alpha/sync.md
+0
-0
No files found.
gcc/ChangeLog
View file @
2371d1a0
2011
-
11
-
15
Richard
Henderson
<
rth
@
redhat
.
com
>
*
config
/
alpha
/
alpha
.
c
(
alpha_pre_atomic_barrier
):
New
.
(
alpha_post_atomic_barrier
):
New
.
(
alpha_split_atomic_op
):
New
memmodel
argument
;
honor
it
.
(
alpha_split_compare_and_swap
):
Take
array
of
operands
.
Honor
memmodel
;
always
set
bool
output
(
alpha_expand_compare_and_swap_12
):
Similarly
.
(
alpha_split_compare_and_swap_12
):
Similarly
.
(
alpha_split_atomic_exchange
):
Similarly
.
Rename
from
alpha_split_lock_test_and_set
.
(
alpha_expand_atomic_exchange_12
):
Similarly
.
Rename
from
alpha_expand_lock_test_and_set_12
.
(
alpha_split_atomic_exchange_12
):
Similarly
.
Rename
from
alpha_split_lock_test_and_set_12
.
*
config
/
alpha
/
alpha
-
protos
.
h
:
Update
.
*
config
/
alpha
/
alpha
.
md
(
UNSPECV_CMPXCHG
):
New
.
*
config
/
alpha
/
constraints
.
md
(
"w"
):
New
.
*
config
/
alpha
/
predicates
.
md
(
mem_noofs_operand
):
New
.
*
config
/
alpha
/
sync
.
md
(
atomic_compare_and_swap
<
mode
>):
Rename
from
sync_compare_and_swap
<
mode
>;
add
the
new
parameters
.
(
atomic_exchange
<
mode
>):
Update
from
sync_test_and_set
<
mode
>.
(
atomic_fetch_
<
op
><
mode
>):
Update
from
sync_old_
<
op
><
mode
>.
(
atomic_
<
op
>
_fetch
<
mode
>):
Update
from
sync_new_
<
op
><
mode
>.
(
atomic_
<
op
><
mode
>):
Update
from
sync_
<
op
><
mode
>.
2011
-
11
-
16
Tom
de
Vries
<
tom
@
codesourcery
.
com
>
2011
-
11
-
16
Tom
de
Vries
<
tom
@
codesourcery
.
com
>
*
tree
-
ssa
-
tail
-
merge
.
c
(
replace_block_by
):
Add
frequency
of
bb2
to
bb1
.
*
tree
-
ssa
-
tail
-
merge
.
c
(
replace_block_by
):
Add
frequency
of
bb2
to
bb1
.
gcc/config/alpha/alpha-protos.h
View file @
2371d1a0
...
@@ -88,15 +88,14 @@ extern bool alpha_emit_setcc (rtx[], enum machine_mode);
...
@@ -88,15 +88,14 @@ extern bool alpha_emit_setcc (rtx[], enum machine_mode);
extern
int
alpha_split_conditional_move
(
enum
rtx_code
,
rtx
,
rtx
,
rtx
,
rtx
);
extern
int
alpha_split_conditional_move
(
enum
rtx_code
,
rtx
,
rtx
,
rtx
,
rtx
);
extern
void
alpha_emit_xfloating_arith
(
enum
rtx_code
,
rtx
[]);
extern
void
alpha_emit_xfloating_arith
(
enum
rtx_code
,
rtx
[]);
extern
void
alpha_emit_xfloating_cvt
(
enum
rtx_code
,
rtx
[]);
extern
void
alpha_emit_xfloating_cvt
(
enum
rtx_code
,
rtx
[]);
extern
void
alpha_split_atomic_op
(
enum
rtx_code
,
rtx
,
rtx
,
rtx
,
rtx
,
rtx
);
extern
void
alpha_split_atomic_op
(
enum
rtx_code
,
rtx
,
rtx
,
rtx
,
rtx
,
rtx
,
extern
void
alpha_split_compare_and_swap
(
rtx
,
rtx
,
rtx
,
rtx
,
rtx
);
enum
memmodel
);
extern
void
alpha_expand_compare_and_swap_12
(
rtx
,
rtx
,
rtx
,
rtx
);
extern
void
alpha_split_compare_and_swap
(
rtx
op
[]);
extern
void
alpha_split_compare_and_swap_12
(
enum
machine_mode
,
rtx
,
rtx
,
extern
void
alpha_expand_compare_and_swap_12
(
rtx
op
[]);
rtx
,
rtx
,
rtx
,
rtx
,
rtx
);
extern
void
alpha_split_compare_and_swap_12
(
rtx
op
[]);
extern
void
alpha_split_lock_test_and_set
(
rtx
,
rtx
,
rtx
,
rtx
);
extern
void
alpha_split_atomic_exchange
(
rtx
op
[]);
extern
void
alpha_expand_lock_test_and_set_12
(
rtx
,
rtx
,
rtx
);
extern
void
alpha_expand_atomic_exchange_12
(
rtx
op
[]);
extern
void
alpha_split_lock_test_and_set_12
(
enum
machine_mode
,
rtx
,
rtx
,
extern
void
alpha_split_atomic_exchange_12
(
rtx
op
[]);
rtx
,
rtx
,
rtx
);
#endif
#endif
extern
rtx
alpha_use_linkage
(
rtx
,
bool
,
bool
);
extern
rtx
alpha_use_linkage
(
rtx
,
bool
,
bool
);
...
...
gcc/config/alpha/alpha.c
View file @
2371d1a0
This diff is collapsed.
Click to expand it.
gcc/config/alpha/alpha.md
View file @
2371d1a0
...
@@ -81,6 +81,7 @@
...
@@ -81,6 +81,7 @@
UNSPECV_SETJMPR_ER ; builtin_setjmp_receiver fragment
UNSPECV_SETJMPR_ER ; builtin_setjmp_receiver fragment
UNSPECV_LL ; load-locked
UNSPECV_LL ; load-locked
UNSPECV_SC ; store-conditional
UNSPECV_SC ; store-conditional
UNSPECV_CMPXCHG
])
])
;; On non-BWX targets, CQImode must be handled the similarly to HImode
;; On non-BWX targets, CQImode must be handled the similarly to HImode
...
...
gcc/config/alpha/constraints.md
View file @
2371d1a0
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
;;; Unused letters:
;;; Unused letters:
;;; ABCDEF V YZ
;;; ABCDEF V YZ
;;; de ghijkl
mnopq s
tu wxyz
;;; de ghijkl
pq
tu wxyz
;; Integer register constraints.
;; Integer register constraints.
...
@@ -38,6 +38,10 @@
...
@@ -38,6 +38,10 @@
(define_register_constraint "v" "R0_REG"
(define_register_constraint "v" "R0_REG"
"General register 0, function value return address")
"General register 0, function value return address")
(define_memory_constraint "w"
"A memory whose address is only a register"
(match_operand 0 "mem_noofs_operand"))
;; Integer constant constraints.
;; Integer constant constraints.
(define_constraint "I"
(define_constraint "I"
"An unsigned 8 bit constant"
"An unsigned 8 bit constant"
...
...
gcc/config/alpha/predicates.md
View file @
2371d1a0
...
@@ -623,3 +623,8 @@
...
@@ -623,3 +623,8 @@
(ior (match_operand 0 "register_operand")
(ior (match_operand 0 "register_operand")
(and (match_test "TARGET_BWX")
(and (match_test "TARGET_BWX")
(match_operand 0 "memory_operand"))))
(match_operand 0 "memory_operand"))))
;; Accept a memory whose address is only a register.
(define_predicate "mem_noofs_operand"
(and (match_code "mem")
(match_code "reg" "0")))
gcc/config/alpha/sync.md
View file @
2371d1a0
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