Ulrich Weigand
1ef2cec146
Fix ppcf128 component access on little-endian systems
...
The PowerPC 128-bit long double data type (ppcf128 in LLVM) is in fact a
pair of two doubles, where one is considered the "high" or
more-significant part, and the other is considered the "low" or
less-significant part. When a ppcf128 value is stored in memory or a
register pair, the high part always comes first, i.e. at the lower
memory address or in the lower-numbered register, and the low part
always comes second. This is true both on big-endian and little-endian
PowerPC systems. (Similar to how with a complex number, the real part
always comes first and the imaginary part second, no matter the byte
order of the system.)
This was implemented incorrectly for little-endian systems in LLVM.
This commit fixes three related issues:
- When printing an immediate ppcf128 constant to assembler output
in emitGlobalConstantFP, emit the high part first on both big-
and little-endian systems.
- When lowering a ppcf128 type to a pair of f64 types in SelectionDAG
(which is used e.g. when generating code to load an argument into a
register pair), use correct low/high part ordering on little-endian
systems.
- In a related issue, because lowering ppcf128 into a pair of f64 must
operate differently from lowering an int128 into a pair of i64,
bitcasts between ppcf128 and int128 must not be optimized away by the
DAG combiner on little-endian systems, but must effect a word-swap.
Reviewed by Hal Finkel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212274 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-03 15:06:47 +00:00
..
2014-02-13 14:44:26 +00:00
2014-02-13 14:44:26 +00:00
2014-04-12 00:59:48 +00:00
2014-05-27 15:57:51 +00:00
2013-07-14 06:24:09 +00:00
2013-09-12 05:24:49 +00:00
2013-07-14 06:24:09 +00:00
2013-07-13 20:38:47 +00:00
2013-05-16 17:58:02 +00:00
2013-08-22 21:28:54 +00:00
2014-04-12 01:26:00 +00:00
2013-07-14 06:24:09 +00:00
2013-08-22 21:28:54 +00:00
2014-05-29 15:41:38 +00:00
2013-07-08 20:00:03 +00:00
2013-12-18 14:35:37 +00:00
2013-07-09 18:16:16 +00:00
2013-07-08 20:20:51 +00:00
2013-08-22 21:28:54 +00:00
2014-06-13 14:24:07 +00:00
2014-06-13 14:24:07 +00:00
2014-06-13 14:24:07 +00:00
2014-03-11 10:48:52 +00:00
2014-02-28 00:27:01 +00:00
2013-07-08 06:16:58 +00:00
2013-07-09 18:55:10 +00:00
2014-01-21 20:15:58 +00:00
2014-04-04 15:15:57 +00:00
2013-11-30 19:39:27 +00:00
2013-11-30 19:39:27 +00:00
2013-08-19 06:55:37 +00:00
2013-08-22 21:28:54 +00:00
2013-12-16 21:24:00 +00:00
2014-03-02 18:23:39 +00:00
2014-03-01 21:36:57 +00:00
2013-07-03 17:59:07 +00:00
2013-08-22 21:28:54 +00:00
2013-05-18 09:20:39 +00:00
2013-08-19 23:35:24 +00:00
2013-05-16 20:28:05 +00:00
2013-06-07 22:16:19 +00:00
2014-02-16 13:27:39 +00:00
2014-04-12 21:52:38 +00:00
2014-04-12 21:52:38 +00:00
2013-05-15 21:37:41 +00:00
2014-05-11 16:23:29 +00:00
2014-02-25 20:51:50 +00:00
2013-05-15 21:37:41 +00:00
2014-05-14 21:52:46 +00:00
2013-09-30 18:17:35 +00:00
2014-06-25 15:41:00 +00:00
2013-07-14 06:24:09 +00:00
2013-08-30 02:29:45 +00:00
2013-08-25 22:33:42 +00:00
2013-08-30 22:18:55 +00:00
2013-08-30 03:16:48 +00:00
2014-06-24 20:05:18 +00:00
2014-06-24 20:05:18 +00:00
2013-08-30 02:43:08 +00:00
2013-08-26 19:42:51 +00:00
2013-08-30 22:18:55 +00:00
2013-08-30 02:43:08 +00:00
2013-08-25 22:33:42 +00:00
2013-08-30 02:29:45 +00:00
2013-08-30 02:43:08 +00:00
2013-08-26 19:42:51 +00:00
2013-08-30 02:43:08 +00:00
2013-11-15 19:09:27 +00:00
2013-08-19 05:01:02 +00:00
2014-03-23 05:35:00 +00:00
2013-06-13 20:23:34 +00:00
2013-07-13 20:38:47 +00:00
2014-02-28 00:27:01 +00:00
2013-08-22 21:28:54 +00:00
2014-06-23 13:47:52 +00:00
2014-06-23 13:47:52 +00:00
2014-06-23 13:47:52 +00:00
2014-06-16 21:36:02 +00:00
2013-09-30 18:17:55 +00:00
2013-12-14 13:34:02 +00:00
2014-03-05 22:14:00 +00:00
2014-03-23 05:35:00 +00:00
2013-08-12 12:43:26 +00:00
2014-03-23 05:35:00 +00:00
2014-05-20 17:20:34 +00:00
2013-07-14 06:24:09 +00:00
2014-02-13 15:33:35 +00:00
2013-08-14 20:05:04 +00:00
2013-09-30 18:17:35 +00:00
2013-11-30 19:39:27 +00:00
2014-06-09 22:42:55 +00:00
2013-11-30 19:39:27 +00:00
2014-02-13 14:44:26 +00:00
2013-07-13 20:38:47 +00:00
2013-09-17 20:03:25 +00:00
2013-09-17 20:03:25 +00:00
2013-09-17 20:03:25 +00:00
2013-07-13 20:38:47 +00:00
2013-07-13 20:38:47 +00:00
2013-07-13 20:38:47 +00:00
2013-07-13 20:38:47 +00:00
2013-11-14 13:58:06 +00:00
2014-04-12 21:52:38 +00:00
2014-04-12 21:52:38 +00:00
2013-07-13 20:38:47 +00:00
2013-07-13 20:38:47 +00:00
2014-04-12 21:52:38 +00:00
2013-06-13 20:23:34 +00:00
2013-07-13 20:38:47 +00:00
2013-08-06 17:03:03 +00:00
2014-05-11 19:29:11 +00:00
2014-05-11 19:29:11 +00:00
2014-05-11 19:29:11 +00:00
2014-05-11 19:29:11 +00:00
2014-05-11 19:29:11 +00:00
2014-05-11 19:29:11 +00:00
2014-05-11 19:29:11 +00:00
2013-08-22 21:28:54 +00:00
2014-02-28 00:27:01 +00:00
2014-03-06 00:45:19 +00:00
2013-11-30 19:39:27 +00:00
2013-06-13 20:23:34 +00:00
2014-06-23 12:36:34 +00:00
2014-06-18 17:52:49 +00:00
2014-06-20 16:34:05 +00:00
2013-07-14 06:24:09 +00:00
2014-06-20 16:34:05 +00:00
2014-07-03 15:06:47 +00:00
2013-07-14 06:24:09 +00:00
2013-08-21 22:20:53 +00:00
2013-07-13 22:08:55 +00:00
2013-07-08 14:22:45 +00:00
2013-07-16 13:03:25 +00:00
2014-02-04 01:23:52 +00:00
2013-09-26 17:09:28 +00:00
2014-02-19 17:23:20 +00:00
2013-12-12 00:19:11 +00:00
2013-09-12 19:04:12 +00:00
2013-11-11 14:58:40 +00:00
2013-08-22 21:28:54 +00:00
2013-07-15 18:57:05 +00:00
2014-06-27 13:04:12 +00:00
2014-02-28 00:27:01 +00:00
2014-04-13 17:10:58 +00:00
2013-08-08 04:31:34 +00:00
2013-07-11 05:55:57 +00:00
2014-02-28 00:27:01 +00:00
2013-07-11 17:43:32 +00:00
2014-02-28 00:27:01 +00:00
2014-02-28 00:27:01 +00:00
2013-07-17 05:35:44 +00:00
2013-11-30 19:52:28 +00:00
2014-01-28 05:32:58 +00:00
2014-05-27 15:57:51 +00:00
2013-11-20 01:10:15 +00:00
2013-06-28 20:18:14 +00:00
2013-09-30 18:17:35 +00:00
2013-07-09 06:34:51 +00:00
2013-11-30 20:04:33 +00:00
2013-07-18 22:29:15 +00:00
2013-11-30 19:39:27 +00:00
2013-11-30 19:39:27 +00:00
2013-07-09 17:02:45 +00:00
2014-02-28 00:27:01 +00:00
2014-06-23 13:47:52 +00:00
2013-12-12 11:51:23 +00:00
2013-12-20 18:08:54 +00:00
2013-08-22 21:28:54 +00:00
2013-09-15 22:09:58 +00:00
2013-05-26 18:08:30 +00:00
2013-11-30 19:52:28 +00:00
2014-02-04 01:23:52 +00:00
2013-06-28 22:29:56 +00:00
2013-07-13 20:38:47 +00:00
2013-07-13 20:38:47 +00:00
2014-06-19 19:41:26 +00:00
2013-07-13 20:38:47 +00:00
2013-07-14 06:24:09 +00:00
2013-09-28 11:46:15 +00:00
2013-07-12 14:54:12 +00:00
2014-06-09 22:00:52 +00:00
2014-06-09 16:06:29 +00:00
2013-07-14 06:24:09 +00:00
2014-06-10 14:35:01 +00:00
2013-07-14 06:24:09 +00:00
2013-09-12 23:23:12 +00:00
2013-07-08 17:30:25 +00:00
2014-06-05 22:57:38 +00:00
2014-06-06 14:06:26 +00:00
2013-06-13 20:23:34 +00:00
2014-03-28 19:58:11 +00:00
2014-03-29 05:29:01 +00:00
2014-03-27 23:12:31 +00:00
2014-03-29 05:29:01 +00:00
2014-04-01 19:24:27 +00:00
2014-03-14 12:45:22 +00:00
2014-02-07 16:21:30 +00:00
2013-08-22 21:28:54 +00:00