diff options
| author | Thomas Lively <tlively@google.com> | 2019-01-29 23:44:48 +0000 |
|---|---|---|
| committer | Thomas Lively <tlively@google.com> | 2019-01-29 23:44:48 +0000 |
| commit | 74c12ceacbd0a0f7d98e93e9724595a331be2f98 (patch) | |
| tree | 29e1fb757021f7a567918af3d2e81d0184d5fafc /llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td | |
| parent | 035c08f73d16ef99f975e84f7913a1e1c66478ed (diff) | |
| download | bcm5719-llvm-74c12ceacbd0a0f7d98e93e9724595a331be2f98.tar.gz bcm5719-llvm-74c12ceacbd0a0f7d98e93e9724595a331be2f98.zip | |
[WebAssembly] Lower SCALAR_TO_VECTOR to splats
Reviewers: aheejin
Subscribers: dschuff, sbc100, jgravelle-google, hiraditya, sunfish
Differential Revision: https://reviews.llvm.org/D57269
llvm-svn: 352568
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td')
| -rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td b/llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td index 2e40c5b07ba..2476d8d99cf 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td +++ b/llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td @@ -230,6 +230,19 @@ defm "" : Splat<v2i64, "i64x2", I64, splat2, 15>; defm "" : Splat<v4f32, "f32x4", F32, splat4, 18>; defm "" : Splat<v2f64, "f64x2", F64, splat2, 21>; +// scalar_to_vector leaves high lanes undefined, so can be a splat +class ScalarSplatPat<ValueType vec_t, ValueType lane_t, + WebAssemblyRegClass reg_t> : + Pat<(vec_t (scalar_to_vector (lane_t reg_t:$x))), + (!cast<Instruction>("SPLAT_"#vec_t) reg_t:$x)>; + +def : ScalarSplatPat<v16i8, i32, I32>; +def : ScalarSplatPat<v8i16, i32, I32>; +def : ScalarSplatPat<v4i32, i32, I32>; +def : ScalarSplatPat<v2i64, i64, I64>; +def : ScalarSplatPat<v4f32, f32, F32>; +def : ScalarSplatPat<v2f64, f64, F64>; + //===----------------------------------------------------------------------===// // Accessing lanes //===----------------------------------------------------------------------===// |

