diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b0fd76c3782c..aace6c4f4351 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-10-12 Alexander Monakov + + * config/i386/i386.c (ix86_expand_sse_compare_and_jump): Use mode + provided by ix86_fp_compare_mode instead of CCFPUmode. + 2013-10-12 James Greenhalgh * config/aarch64/arm_neon.h diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index f6058a42ea94..c35cb700b044 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -38289,6 +38289,7 @@ static rtx ix86_expand_sse_compare_and_jump (enum rtx_code code, rtx op0, rtx op1, bool swap_operands) { + enum machine_mode fpcmp_mode = ix86_fp_compare_mode (code); rtx label, tmp; if (swap_operands) @@ -38299,9 +38300,9 @@ ix86_expand_sse_compare_and_jump (enum rtx_code code, rtx op0, rtx op1, } label = gen_label_rtx (); - tmp = gen_rtx_REG (CCFPUmode, FLAGS_REG); + tmp = gen_rtx_REG (fpcmp_mode, FLAGS_REG); emit_insn (gen_rtx_SET (VOIDmode, tmp, - gen_rtx_COMPARE (CCFPUmode, op0, op1))); + gen_rtx_COMPARE (fpcmp_mode, op0, op1))); tmp = gen_rtx_fmt_ee (code, VOIDmode, tmp, const0_rtx); tmp = gen_rtx_IF_THEN_ELSE (VOIDmode, tmp, gen_rtx_LABEL_REF (VOIDmode, label), pc_rtx); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5c26e564506e..5ab49b471a34 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-10-12 Alexander Monakov + + * gcc.target/i386/builtin-ucmp.c: New test. + 2013-10-11 Brooks Moses * g++.dg/ext/altivec-7.C: Check for standard vector-type name diff --git a/gcc/testsuite/gcc.target/i386/builtin-ucmp.c b/gcc/testsuite/gcc.target/i386/builtin-ucmp.c new file mode 100644 index 000000000000..709804c35f63 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/builtin-ucmp.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -ffast-math -mfpmath=sse -msse2" } */ + +double foo(double a) +{ + return __builtin_round(a); +} + +/* { dg-final { scan-assembler-not "ucom" } } */