From: jconner Date: Thu, 18 Jan 2007 16:44:03 +0000 (+0000) Subject: 2007-01-18 Josh Conner X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fa4b183bf8ce1fbed9f61691e2697ed556958497;p=thirdparty%2Fgcc.git 2007-01-18 Josh Conner PR target/30485 * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add support for UNLE, UNLT, UNGE, and UNGT. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120902 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4fae499454da..af089fe98891 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-01-18 Josh Conner + + PR target/30485 + * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add + support for UNLE, UNLT, UNGE, and UNGT. + 2007-01-18 Jan Hubicka * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index ce178140ef05..592cfdd937d8 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -11890,10 +11890,18 @@ rs6000_emit_vector_compare (enum rtx_code rcode, try_again = true; break; case NE: - /* Treat A != B as ~(A==B). */ + case UNLE: + case UNLT: + case UNGE: + case UNGT: + /* Invert condition and try again. + e.g., A != B becomes ~(A==B). */ { + enum rtx_code rev_code; enum insn_code nor_code; - rtx eq_rtx = rs6000_emit_vector_compare (EQ, op0, op1, + + rev_code = reverse_condition_maybe_unordered (rcode); + rtx eq_rtx = rs6000_emit_vector_compare (rev_code, op0, op1, dest_mode); nor_code = one_cmpl_optab->handlers[(int)dest_mode].insn_code;