diff options
| author | Thomas Lively <tlively@google.com> | 2018-08-22 23:06:27 +0000 |
|---|---|---|
| committer | Thomas Lively <tlively@google.com> | 2018-08-22 23:06:27 +0000 |
| commit | 2ee686da27abaf723c4d6c5c43a35a103176bd16 (patch) | |
| tree | 1eecde95e7c0eeed133f9a1a4fc1087b574a0a52 /llvm/lib/Target/WebAssembly/WebAssemblyInstrFormats.td | |
| parent | 678c1c6cccf4ca16df1a9986a2ec5e05040880c4 (diff) | |
| download | bcm5719-llvm-2ee686da27abaf723c4d6c5c43a35a103176bd16.tar.gz bcm5719-llvm-2ee686da27abaf723c4d6c5c43a35a103176bd16.zip | |
[WebAssembly] Arbitrary BUILD_VECTOR and remove i64x2.mul
Summary:
This CL adds support for arbitrary BUILD_VECTORS, i.e. not splats and
not consts. This is the last feature needed to properly lower v2i64
multiplies without a i64x2.mul instruction (which is not in the spec),
so i64x2.mul is removed as well.
Reviewers: aheejin, dschuff
Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits
Differential Revision: https://reviews.llvm.org/D51082
Remove unnecessary condition and fix whitespace
llvm-svn: 340472
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyInstrFormats.td')
| -rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyInstrFormats.td | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyInstrFormats.td b/llvm/lib/Target/WebAssembly/WebAssemblyInstrFormats.td index c99b20b60bc..08cb184cca3 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyInstrFormats.td +++ b/llvm/lib/Target/WebAssembly/WebAssemblyInstrFormats.td @@ -119,7 +119,7 @@ multiclass BinaryFP<SDNode node, string name, bits<32> f32Inst, !strconcat("f64.", !strconcat(name, "\t$dst, $lhs, $rhs")), !strconcat("f64.", name), f64Inst>; } -multiclass SIMDBinaryInt<SDNode node, string name, bits<32> baseInst> { +multiclass SIMDBinaryIntNoI64x2<SDNode node, string name, bits<32> baseInst> { defm _I8x16 : SIMD_I<(outs V128:$dst), (ins V128:$lhs, V128:$rhs), (outs), (ins), [(set (v16i8 V128:$dst), (node V128:$lhs, V128:$rhs))], @@ -138,6 +138,9 @@ multiclass SIMDBinaryInt<SDNode node, string name, bits<32> baseInst> { !strconcat("i32x4.", !strconcat(name, "\t$dst, $lhs, $rhs")), !strconcat("i32x4.", name), !add(baseInst, 2)>; +} +multiclass SIMDBinaryInt<SDNode node, string name, bits<32> baseInst> { + defm "" : SIMDBinaryIntNoI64x2<node, name, baseInst>; defm _I64x2 : SIMD_I<(outs V128:$dst), (ins V128:$lhs, V128:$rhs), (outs), (ins), [(set (v2i64 V128:$dst), (node V128:$lhs, V128:$rhs))], |

