Since a prominent LEON2 chip, the AT697F, does not support the FSMULD
instruction, disable it for all LEON2 targets due to simplicity. The
code generation for the fmaf() function of Newlib changes for example
from
00000000 <fmaf>:
0: 9c 03 bf b0 add %sp, -80, %sp
4: d2 23 a0 4c st %o1, [ %sp + 0x4c ]
8: d1 03 a0 4c ld [ %sp + 0x4c ], %f8
c: d0 23 a0 4c st %o0, [ %sp + 0x4c ]
10: d3 03 a0 4c ld [ %sp + 0x4c ], %f9
14: d4 23 a0 4c st %o2, [ %sp + 0x4c ]
18: 81 a2 0d 29 fsmuld %f8, %f9, %f0
1c: d1 03 a0 4c ld [ %sp + 0x4c ], %f8
20: 91 a0 19 28 fstod %f8, %f8
24: 9c 03 a0 50 add %sp, 0x50, %sp
28: 81 a0 08 48 faddd %f0, %f8, %f0
2c: 81 c3 e0 08 retl
30: 81 a0 18 c0 fdtos %f0, %f0
to
00000000 <fmaf>:
0: 9c 03 bf b0 add %sp, -80, %sp
4: d0 23 a0 4c st %o0, [ %sp + 0x4c ]
8: d1 03 a0 4c ld [ %sp + 0x4c ], %f8
c: d2 23 a0 4c st %o1, [ %sp + 0x4c ]
10: 81 a0 19 28 fstod %f8, %f0
14: d1 03 a0 4c ld [ %sp + 0x4c ], %f8
18: 95 a0 19 28 fstod %f8, %f10
1c: d4 23 a0 4c st %o2, [ %sp + 0x4c ]
20: d1 03 a0 4c ld [ %sp + 0x4c ], %f8
24: 81 a0 09 4a fmuld %f0, %f10, %f0
28: 91 a0 19 28 fstod %f8, %f8
2c: 9c 03 a0 50 add %sp, 0x50, %sp
30: 81 a0 08 48 faddd %f0, %f8, %f0
34: 81 c3 e0 08 retl
38: 81 a0 18 c0 fdtos %f0, %f0
gcc/
* config/sparc/sparc.md (muldf3_extend): Disable if -mcpu=leon.
---
gcc/config/sparc/sparc.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md
index 337ccadfbe0..100178f67e4 100644
--- a/gcc/config/sparc/sparc.md
+++ b/gcc/config/sparc/sparc.md
@@ -6016,7 +6016,7 @@
[(set (match_operand:DF 0 "register_operand" "=e")
(mult:DF (float_extend:DF (match_operand:SF 1 "register_operand" "f"))
(float_extend:DF (match_operand:SF 2 "register_operand"
"f"))))]
- "(TARGET_V8 || TARGET_V9) && TARGET_FPU && !sparc_fix_ut699"
+ "(TARGET_V8 || TARGET_V9) && TARGET_FPU && !sparc_fix_ut699 && !TARGET_LEON"
"fsmuld\t%1, %2, %0"
[(set_attr "type" "fpmul")
(set_attr "fptype" "double")])
--
2.12.3
_______________________________________________
devel mailing list
[email protected]
http://lists.rtems.org/mailman/listinfo/devel