diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1c7462f7ef2..37be75b1e4b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2017-08-23 Tamar Christina + + PR middle-end/19706 + * doc/sourcebuild.texi (Other hardware attributes): + Document xorsign. + 2017-08-23 Tamar Christina PR middle-end/19706 diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi index e6313dc031e..a1ca417b5c8 100644 --- a/gcc/doc/sourcebuild.texi +++ b/gcc/doc/sourcebuild.texi @@ -1908,6 +1908,9 @@ or @code{EM_SPARCV9} executables. @item vect_cmdline_needed Target requires a command line argument to enable a SIMD instruction set. +@item xorsign +Target supports the xorsign optab expansion. + @end table @subsubsection Environment attributes diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fe394556efe..487d94bd06f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2017-08-23 Tamar Christina + + PR middle-end/19706 + * gcc.dg/tree-ssa/pr19706.c: New. + * lib/target-supports.exp (check_effective_target_xorsign): New. + 2017-08-22 Daniel Santos * gcc.target/i386/pr71958.c: New test to verify error on -mx32 and diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 5219fbf4671..db0c0ff089a 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -5332,6 +5332,28 @@ proc check_effective_target_vect_perm_short { } { return $et_vect_perm_short_saved($et_index) } +# Return 1 if the target plus current options supports folding of +# copysign into XORSIGN. +# +# This won't change for different subtargets so cache the result. + +proc check_effective_target_xorsign { } { + global et_xorsign_saved + global et_index + + if [info exists et_xorsign_saved($et_index)] { + verbose "check_effective_target_xorsign: using cached result" 2 + } else { + set et_xorsign_saved($et_index) 0 + if { [istarget aarch64*-*-*] || [istarget arm*-*-*] } { + set et_xorsign_saved($et_index) 1 + } + } + verbose "check_effective_target_xorsign:\ + returning $et_xorsign_saved($et_index)" 2 + return $et_xorsign_saved($et_index) +} + # Return 1 if the target plus current options supports a vector # widening summation of *short* args into *int* result, 0 otherwise. #