Amy Kwan
9cc5b064f1
[PowerPC] Update handling of splat loads for v4i32/v4f32/v2i64 to require non-extending loads.
...
This patch updates how splat loads handled and is an extension of D106555.
Particularly, for v2i64/v4f32/v4i32 types, they are updated to handle only
non-extending loads. For v8i16/v16i8 types, they are updated to handle extending
loads only if the memory VT is the same vector element VT type.
A test case has been added to illustrate a scenario where a PPCISD::LD_SPLAT
node should not be produced. In this test, it depicts the following f64
extending load used in a v2f64 build vector, but the extending load is actually
used in more places other than the build vector (such as in t12 and t16).
```
Type-legalized selection DAG: %bb.0 'test:entry'
SelectionDAG has 20 nodes:
t0: ch = EntryToken
t4: i64,ch = CopyFromReg t0, Register:i64 %1
t6: i64,ch = CopyFromReg t0, Register:i64 %2
t11: f64,ch = load<(load (s64) from %ir.b, !tbaa !7 )> t0, t4, undef:i64
t16: f64 = fadd t31, t37
t34: ch = store<(store (s64) into %ir.c, !tbaa !7 )> t31:1, t16, t6, undef:i64
t36: ch = TokenFactor t34, t37:1
t27: v2f64 = BUILD_VECTOR t37, t37
t22: ch,glue = CopyToReg t36, Register:v2f64 $v2, t27
t12: f64 = fadd t11, t37
t28: ch = store<(store (s64) into %ir.b, !tbaa !7 )> t11:1, t12, t4, undef:i64
t31: f64,ch = load<(load (s64) from %ir.c, !tbaa !7 )> t28, t6, undef:i64
t2: i64,ch = CopyFromReg t0, Register:i64 %0
t37: f64,ch = load<(load (s32) from %ir.a, !tbaa !3 ), anyext from f32> t0, t2, undef:i64
t23: ch = PPCISD::RET_FLAG t22, Register:v2f64 $v2, t22:1
```
Differential Revision: https://reviews.llvm.org/D117803
2022-01-28 08:23:01 -06:00
..
2022-01-06 14:23:51 +01:00
2022-01-06 14:23:51 +01:00
2022-01-06 14:23:51 +01:00
2022-01-06 14:23:51 +01:00
2022-01-06 14:23:51 +01:00
2021-10-09 10:03:50 +08:00
2021-11-11 15:42:08 +08:00
2020-12-11 17:50:25 -05:00
2021-11-11 15:42:08 +08:00
2021-11-11 15:42:08 +08:00
2021-11-11 15:42:08 +08:00
2022-01-25 10:08:53 -05:00
2022-01-19 10:57:22 -06:00
2021-11-11 15:42:08 +08:00
2021-11-15 14:36:39 -06:00
2022-01-06 14:23:51 +01:00
2021-11-11 15:42:08 +08:00
2021-12-01 10:56:21 -05:00
2021-12-01 10:56:21 -05:00
2021-11-23 11:42:36 -06:00
2021-10-18 15:27:49 +08:00
2022-01-06 14:23:51 +01:00
2021-10-15 12:22:44 +08:00
2022-01-06 14:23:51 +01:00
2022-01-06 14:23:51 +01:00
2021-10-12 15:47:57 -05:00
2021-11-11 15:42:08 +08:00
2021-10-15 12:22:44 +08:00
2021-11-11 13:27:42 +08:00
2021-11-11 09:52:00 -06:00
2021-11-11 09:52:00 -06:00
2021-12-09 01:00:47 +00:00
2021-11-05 10:04:03 +00:00
2021-11-16 09:18:49 +00:00
2022-01-24 09:38:36 +00:00
2021-11-01 04:11:10 +00:00
2021-11-29 15:23:34 -08:00
2021-11-11 15:42:08 +08:00
2021-10-18 15:27:49 +08:00
2021-11-30 22:49:55 +00:00
2021-11-10 08:19:58 -06:00
2022-01-22 23:20:14 +08:00
2021-10-15 16:23:04 +00:00
2022-01-10 02:30:05 +00:00
2021-11-11 15:42:08 +08:00
2021-12-09 01:00:47 +00:00
2021-12-01 12:22:21 +08:00
2021-11-05 16:58:38 +08:00
2019-09-19 18:18:18 +00:00
2021-11-11 15:42:08 +08:00
2021-11-11 15:42:08 +08:00
2021-12-03 12:04:06 +00:00
2021-11-11 15:42:08 +08:00
2020-11-20 17:58:26 -05:00
2021-11-02 11:38:25 +00:00
2021-11-02 11:38:25 +00:00
2022-01-26 13:28:50 +08:00
2022-01-06 14:23:51 +01:00
2022-01-06 14:23:51 +01:00
2021-10-31 20:00:57 -07:00
2022-01-24 15:12:23 -06:00
2021-12-03 09:13:02 -06:00
2022-01-06 14:23:51 +01:00
2021-11-08 01:51:24 +00:00
2021-10-18 15:27:49 +08:00
2021-11-11 15:42:08 +08:00
2022-01-13 10:49:23 -05:00
2022-01-28 08:23:01 -06:00
2021-11-03 17:57:25 +08:00
2021-11-15 02:16:46 +00:00
2021-11-15 02:16:46 +00:00
2021-12-02 15:59:29 -06:00
2021-12-06 10:15:05 +08:00
2021-11-19 10:24:54 -06:00
2022-01-10 13:49:02 -08:00
2021-10-18 15:27:49 +08:00
2021-10-18 15:27:49 +08:00
2021-10-18 15:27:49 +08:00
2021-10-18 15:27:49 +08:00
2021-11-27 12:37:15 +01:00
2022-01-06 14:23:51 +01:00
2022-01-06 14:23:51 +01:00
2022-01-04 09:44:23 -08:00
2022-01-19 11:00:32 -08:00
2021-10-20 15:16:17 +02:00
2021-11-11 15:42:08 +08:00
2021-10-18 15:27:49 +08:00
2021-11-08 17:23:56 +08:00
2021-10-18 15:27:49 +08:00
2021-10-18 15:27:49 +08:00
2021-10-18 15:27:49 +08:00
2021-11-08 17:23:56 +08:00
2021-10-18 15:27:49 +08:00
2021-10-18 15:27:49 +08:00
2021-10-18 15:27:49 +08:00
2022-01-07 18:07:26 +08:00
2021-10-22 09:10:01 -07:00
2021-10-18 15:27:49 +08:00
2021-12-09 01:00:47 +00:00
2021-10-25 02:41:05 +00:00
2022-01-11 11:31:08 -08:00
2021-11-27 16:43:50 +00:00
2022-01-05 15:15:53 -06:00
2022-01-05 15:15:53 -06:00
2021-11-11 15:42:08 +08:00
2021-05-24 19:43:40 +02:00
2021-11-11 15:42:08 +08:00
2022-01-25 12:14:48 +01:00
2022-01-06 14:23:51 +01:00
2021-10-12 20:12:31 +00:00
2021-11-24 06:43:56 -06:00
2021-10-15 12:22:44 +08:00
2022-01-24 09:38:36 +00:00
2021-11-10 08:19:58 -06:00
2021-11-21 18:33:28 +00:00
2021-11-03 05:17:41 +00:00
2021-10-18 15:27:49 +08:00
2021-10-18 15:27:49 +08:00
2021-10-18 15:27:49 +08:00
2021-10-18 15:27:49 +08:00
2021-10-18 15:27:49 +08:00
2021-10-18 15:27:49 +08:00
2021-11-23 17:03:04 -06:00
2021-10-18 15:27:49 +08:00
2020-02-02 09:28:45 -08:00
2021-11-05 07:29:50 -05:00
2022-01-06 14:23:51 +01:00
2022-01-06 14:23:51 +01:00
2021-12-02 15:59:29 -06:00
2021-10-18 15:27:49 +08:00
2021-10-18 15:27:49 +08:00
2020-12-30 10:32:34 -08:00
2021-11-11 15:42:08 +08:00
2021-11-11 15:42:08 +08:00
2021-11-11 15:42:08 +08:00
2021-11-11 15:42:08 +08:00
2021-11-11 15:42:08 +08:00
2020-12-30 10:32:34 -08:00
2021-11-11 15:42:08 +08:00
2021-11-11 15:42:08 +08:00
2021-11-11 15:42:08 +08:00
2021-11-11 15:42:08 +08:00
2021-11-11 15:42:08 +08:00
2022-01-27 10:47:22 -05:00
2022-01-17 16:21:38 -05:00
2021-11-11 15:42:08 +08:00
2018-08-28 01:18:29 +00:00
2021-12-21 14:55:19 -06:00
2021-12-02 11:47:53 +00:00
2021-12-02 11:47:53 +00:00
2021-11-15 14:36:39 -06:00
2021-10-09 10:03:50 +08:00
2021-11-11 15:42:08 +08:00
2021-12-16 11:28:54 +00:00
2022-01-26 08:59:08 -06:00
2021-11-10 08:19:58 -06:00
2022-01-26 08:59:08 -06:00
2021-11-19 15:03:01 -06:00
2021-11-19 15:03:01 -06:00
2021-11-19 15:03:01 -06:00
2021-11-19 15:03:01 -06:00
2021-11-19 15:03:01 -06:00
2021-11-19 15:03:01 -06:00
2021-11-19 15:03:01 -06:00
2021-11-19 15:03:01 -06:00
2021-11-19 15:03:01 -06:00
2021-11-19 15:03:01 -06:00
2021-11-19 15:03:01 -06:00
2021-11-19 15:03:01 -06:00
2021-11-19 15:03:01 -06:00
2021-11-19 11:12:04 +00:00
2021-11-11 15:42:08 +08:00
2021-12-02 15:59:29 -06:00
2021-12-02 15:59:29 -06:00
2022-01-26 08:59:08 -06:00
2022-01-21 17:00:03 -08:00
2022-01-21 17:00:03 -08:00
2022-01-21 17:00:03 -08:00
2022-01-21 17:00:03 -08:00
2022-01-21 17:00:03 -08:00