Jakob Stoklund Olesen 9bbe4d6c00 Clean up the handling of the x87 fp stack to make it more robust.
Drop the FpMov instructions, use plain COPY instead.

Drop the FpSET/GET instruction for accessing fixed stack positions.
Instead use normal COPY to/from ST registers around inline assembly, and
provide a single new FpPOP_RETVAL instruction that can access the return
value(s) from a call. This is still necessary since you cannot tell from
the CALL instruction alone if it returns anything on the FP stack. Teach
fast isel to use this.

This provides a much more robust way of handling fixed stack registers -
we can tolerate arbitrary FP stack instructions inserted around calls
and inline assembly. Live range splitting could sometimes break x87 code
by inserting spill code in unfortunate places.

As a bonus we handle floating point inline assembly correctly now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134018 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-28 18:32:28 +00:00
..
2011-04-15 00:32:41 +00:00
2010-09-30 23:57:10 +00:00
2010-09-30 23:57:10 +00:00
2011-01-16 18:02:57 +00:00
2011-03-09 22:07:31 +00:00
2011-06-19 12:14:34 +00:00
2010-07-13 18:14:47 +00:00
2010-10-11 21:08:42 +00:00
2011-03-08 20:19:10 +00:00
2011-01-16 18:02:57 +00:00
2010-11-29 22:34:55 +00:00
2011-06-16 07:03:21 +00:00
2011-05-26 18:00:32 +00:00
2011-04-25 10:12:01 +00:00
2011-01-01 21:58:41 +00:00
2011-04-17 02:36:27 +00:00
2011-02-16 01:08:31 +00:00
2011-03-23 23:11:02 +00:00
2011-03-11 21:52:04 +00:00
2010-09-30 23:57:10 +00:00
2010-09-30 23:57:10 +00:00
2010-09-30 23:57:10 +00:00
2010-09-30 23:57:10 +00:00
2010-10-05 21:58:12 +00:00
2010-10-01 05:08:18 +00:00
2010-09-30 23:57:10 +00:00
2011-06-28 06:25:03 +00:00
2011-04-05 00:32:44 +00:00
2011-04-05 00:32:44 +00:00
2010-09-17 22:28:18 +00:00
2011-06-02 20:02:48 +00:00
2011-01-16 18:02:57 +00:00
2011-03-23 23:11:02 +00:00
2010-12-02 20:17:34 +00:00
2011-04-05 00:32:44 +00:00
2011-06-14 23:47:36 +00:00
2010-11-27 20:43:02 +00:00
2010-09-30 23:57:10 +00:00
2010-09-30 23:57:10 +00:00
2011-02-20 12:37:50 +00:00
2010-12-20 20:10:50 +00:00
2011-03-11 21:52:04 +00:00