mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-07-16 04:17:25 +00:00
ff0f815593
Acked-by: Martin Jansa <Martin.Jansa@gmail.com> Acked-by: Eric Bénard <eric@eukrea.com> Acked-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
46 lines
1.2 KiB
Diff
46 lines
1.2 KiB
Diff
Index: gcc-4_6-branch/gcc/config/arm/arm.c
|
|
===================================================================
|
|
--- gcc-4_6-branch.orig/gcc/config/arm/arm.c 2012-03-05 17:14:09.901129286 -0800
|
|
+++ gcc-4_6-branch/gcc/config/arm/arm.c 2012-03-05 17:18:23.061141606 -0800
|
|
@@ -17525,6 +17525,13 @@
|
|
}
|
|
return;
|
|
|
|
+ case 'v':
|
|
+ {
|
|
+ gcc_assert (GET_CODE (x) == CONST_DOUBLE);
|
|
+ fprintf (stream, "#%d", vfp3_const_double_for_fract_bits (x));
|
|
+ return;
|
|
+ }
|
|
+
|
|
/* Register specifier for vld1.16/vst1.16. Translate the S register
|
|
number into a D register number and element index. */
|
|
case 'z':
|
|
@@ -24925,4 +24932,26 @@
|
|
return 4;
|
|
}
|
|
|
|
+int
|
|
+vfp3_const_double_for_fract_bits (rtx operand)
|
|
+{
|
|
+ REAL_VALUE_TYPE r0;
|
|
+
|
|
+ if (GET_CODE (operand) != CONST_DOUBLE)
|
|
+ return 0;
|
|
+
|
|
+ REAL_VALUE_FROM_CONST_DOUBLE (r0, operand);
|
|
+ if (exact_real_inverse (DFmode, &r0))
|
|
+ {
|
|
+ if (exact_real_truncate (DFmode, &r0))
|
|
+ {
|
|
+ HOST_WIDE_INT value = real_to_integer (&r0);
|
|
+ value = value & 0xffffffff;
|
|
+ if ((value != 0) && ( (value & (value - 1)) == 0))
|
|
+ return int_log2 (value);
|
|
+ }
|
|
+ }
|
|
+ return 0;
|
|
+}
|
|
+
|
|
#include "gt-arm.h"
|