sync.md: Update comment about unpredictable LL/SC lock clearing by a taken branch.

* config/alpha/sync.md: Update comment about unpredictable LL/SC lock
	clearing by a taken branch.
	(sync_<fetchop_name><mode>): Split when epilogue_completed is set,
	effectively after bbro pass.
	(sync_nand<mode>): Ditto.
	(sync_old_<fetchop_name><mode>): Ditto.
	(sync_old_nand<mode>): Ditto.
	(sync_new_<fetchop_name><mode>): Dito.
	(sync_new_nand<mode>): Ditto.
	(sync_compare_and_swap<mode>_1): Ditto.
	(*sync_compare_and_swap<mode>): Ditto.
	(sync_lock_test_and_set<mode>_1): Ditto.
	("sync_lock_test_and_set<mode>): Ditto.

From-SVN: r151115
This commit is contained in:
Uros Bizjak 2009-08-26 08:19:37 +02:00
parent 1dad57e65d
commit 7b3d1847e6
2 changed files with 41 additions and 27 deletions

View File

@ -1,3 +1,19 @@
2009-08-26 Uros Bizjak <ubizjak@gmail.com>
* config/alpha/sync.md: Update comment about unpredictable LL/SC lock
clearing by a taken branch.
(sync_<fetchop_name><mode>): Split when epilogue_completed is set,
effectively after bbro pass.
(sync_nand<mode>): Ditto.
(sync_old_<fetchop_name><mode>): Ditto.
(sync_old_nand<mode>): Ditto.
(sync_new_<fetchop_name><mode>): Dito.
(sync_new_nand<mode>): Ditto.
(sync_compare_and_swap<mode>_1): Ditto.
(*sync_compare_and_swap<mode>): Ditto.
(sync_lock_test_and_set<mode>_1): Ditto.
("sync_lock_test_and_set<mode>): Ditto.
2009-08-25 Douglas B Rupp <rupp@gnat.com>
* hwint.h (HOST_LONG_FORMAT): New macro
@ -406,9 +422,10 @@
(sse5_maskcmp_uns<mode>3): Ditto.
(sse5_maskcmp_uns2<mode>3): Ditto.
(sse5_pcom_tf<mode>3): Ditto.
* config/i386/predicates.md (sse5_comparison_float_operator): New predicate to match the
comparison operators supported by the SSE5 com instruction.
* config/i386/predicates.md (sse5_comparison_float_operator):
New predicate to match the comparison operators supported by
the SSE5 com instruction.
(ix86_comparison_int_operator): New predicate to match just the
signed int comparisons.
(ix86_comparison_uns_operator): New predicate to match just the
@ -484,7 +501,7 @@
* config/crx/crx.h (CAN_ELIMINATE): Remove macro.
* config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
(crx_can_eliminate): New function.
* config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
* config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
(fr30_can_eliminate): New function.
@ -649,23 +666,23 @@
2009-08-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
* config/arm/arm.c (output_return_instruction): Handle for
unified syntax.
* config/arm/arm.c (output_return_instruction): Handle for
unified syntax.
2009-08-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
* config/arm/arm.c (arm_select_cc_mode): Handle subreg.
* config/arm/arm.c (arm_select_cc_mode): Handle subreg.
2009-08-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
* config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
(*arm_movdf_vfp): Likewise.
* config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
(*arm_movdf_vfp): Likewise.
2009-08-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
* config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
(vashr<mode>3): Rename from ashr<mode>3.
(vlshr<mode>3): Rename from lshr<mode>3.
* config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
(vashr<mode>3): Rename from ashr<mode>3.
(vlshr<mode>3): Rename from lshr<mode>3.
2009-08-24 Kai Tietz <kai.tietz@onevision.com>

View File

@ -62,11 +62,8 @@
[(set_attr "type" "st_c")])
;; The Alpha Architecture Handbook says that it is UNPREDICTABLE whether
;; the lock is cleared by a TAKEN branch. If we were to honor that, it
;; would mean that we could not expand a ll/sc sequence until after the
;; final basic-block reordering pass. Fortunately, it appears that no
;; Alpha implementation ever built actually clears the lock on branches,
;; taken or not.
;; the lock is cleared by a TAKEN branch. This means that we can not
;; expand a ll/sc sequence until after the final basic-block reordering pass.
(define_insn_and_split "sync_<fetchop_name><mode>"
[(set (match_operand:I48MODE 0 "memory_operand" "+m")
@ -77,7 +74,7 @@
(clobber (match_scratch:I48MODE 2 "=&r"))]
""
"#"
"reload_completed"
"epilogue_completed"
[(const_int 0)]
{
alpha_split_atomic_op (<CODE>, operands[0], operands[1],
@ -96,7 +93,7 @@
(clobber (match_scratch:I48MODE 2 "=&r"))]
""
"#"
"reload_completed"
"epilogue_completed"
[(const_int 0)]
{
alpha_split_atomic_op (NOT, operands[0], operands[1],
@ -116,7 +113,7 @@
(clobber (match_scratch:I48MODE 3 "=&r"))]
""
"#"
"reload_completed"
"epilogue_completed"
[(const_int 0)]
{
alpha_split_atomic_op (<CODE>, operands[1], operands[2],
@ -137,7 +134,7 @@
(clobber (match_scratch:I48MODE 3 "=&r"))]
""
"#"
"reload_completed"
"epilogue_completed"
[(const_int 0)]
{
alpha_split_atomic_op (NOT, operands[1], operands[2],
@ -158,7 +155,7 @@
(clobber (match_scratch:I48MODE 3 "=&r"))]
""
"#"
"reload_completed"
"epilogue_completed"
[(const_int 0)]
{
alpha_split_atomic_op (<CODE>, operands[1], operands[2],
@ -179,7 +176,7 @@
(clobber (match_scratch:I48MODE 3 "=&r"))]
""
"#"
"reload_completed"
"epilogue_completed"
[(const_int 0)]
{
alpha_split_atomic_op (NOT, operands[1], operands[2],
@ -214,7 +211,7 @@
(clobber (match_scratch:DI 6 "=X,&r"))]
""
"#"
"reload_completed"
"epilogue_completed"
[(const_int 0)]
{
alpha_split_compare_and_swap_12 (<MODE>mode, operands[0], operands[1],
@ -251,7 +248,7 @@
(clobber (match_scratch:I48MODE 4 "=&r"))]
""
"#"
"reload_completed"
"epilogue_completed"
[(const_int 0)]
{
alpha_split_compare_and_swap (operands[0], operands[1], operands[2],
@ -282,7 +279,7 @@
(clobber (match_scratch:DI 4 "=&r"))]
""
"#"
"reload_completed"
"epilogue_completed"
[(const_int 0)]
{
alpha_split_lock_test_and_set_12 (<MODE>mode, operands[0], operands[1],
@ -301,7 +298,7 @@
(clobber (match_scratch:I48MODE 3 "=&r"))]
""
"#"
"reload_completed"
"epilogue_completed"
[(const_int 0)]
{
alpha_split_lock_test_and_set (operands[0], operands[1],