From 1c5d60f5019eec17bdad384ebc39721f0037bb25 Mon Sep 17 00:00:00 2001 From: John Wehle Date: Tue, 9 Jun 1998 15:42:21 -0600 Subject: [PATCH] i386.md (movsfcc, [...]): The floating point conditional move instructions don't support signed integer... * i386.md (movsfcc, movdfcc, movxfcc): The floating point conditional move instructions don't support signed integer comparisons. From-SVN: r20391 --- gcc/ChangeLog | 12 ++++++++++ gcc/config/i386/i386.md | 51 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 75ca6748f53..1f9f6403c4b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Wed Jun 3 23:41:24 EDT 1998 John Wehle (john@feith.com) + + * i386.md (movsfcc, movdfcc, movxfcc): The floating point + conditional move instructions don't support signed integer + comparisons. + Tue Jun 9 14:31:19 1998 Nick Clifton * config/v850/t-v850 (TCFLAGS): Add assembler options to warn of @@ -33,6 +39,12 @@ Tue Jun 9 12:10:27 1998 John Carr Tue Jun 9 12:36:16 1998 Jeffrey A Law (law@cygnus.com) + * mips.c (gpr_mode): New variable. + (override_options): Initialize gpr_mode. + (compute_frame_size): Use "gpr_mode" instead of "word_mode" to + determine size and offset of general purpose registers save slots. + (save_restore_insns, mips_expand_prologue): Similarly. + * Makefile.in (LIB2FUNCS_EH): Define. Just "_eh" for now. (LIBGCC2_CFLAGS): Remove -fexceptions. (LIB2FUNCS): Remove "_eh". diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index b2ee298ca19..4cda8f7f9b4 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -7469,6 +7469,23 @@ byte_xor_operation: if (GET_MODE_CLASS (GET_MODE (i386_compare_op0)) != MODE_INT) FAIL; + /* The floating point conditional move instructions don't support + signed integer comparisons. */ + + switch (GET_CODE (operands[1])) + { + case LT: + case LE: + case GE: + case GT: + FAIL; + /* NOTREACHED */ + break; + + default: + break; + } + operands[1] = gen_rtx_fmt_ee (GET_CODE (operands[1]), GET_MODE (i386_compare_op0), i386_compare_op0, i386_compare_op1); @@ -7543,6 +7560,23 @@ byte_xor_operation: if (GET_MODE_CLASS (GET_MODE (i386_compare_op0)) != MODE_INT) FAIL; + /* The floating point conditional move instructions don't support + signed integer comparisons. */ + + switch (GET_CODE (operands[1])) + { + case LT: + case LE: + case GE: + case GT: + FAIL; + /* NOTREACHED */ + break; + + default: + break; + } + operands[1] = gen_rtx_fmt_ee (GET_CODE (operands[1]), GET_MODE (i386_compare_op0), i386_compare_op0, i386_compare_op1); @@ -7617,6 +7651,23 @@ byte_xor_operation: if (GET_MODE_CLASS (GET_MODE (i386_compare_op0)) != MODE_INT) FAIL; + /* The floating point conditional move instructions don't support + signed integer comparisons. */ + + switch (GET_CODE (operands[1])) + { + case LT: + case LE: + case GE: + case GT: + FAIL; + /* NOTREACHED */ + break; + + default: + break; + } + operands[1] = gen_rtx_fmt_ee (GET_CODE (operands[1]), GET_MODE (i386_compare_op0), i386_compare_op0, i386_compare_op1);