diff options
author | Thomas Lively <7121787+tlively@users.noreply.github.com> | 2019-09-03 14:13:29 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-03 14:13:29 -0700 |
commit | 0faa68b9dfbe478c6d238a5c55ac61b54a86a3c3 (patch) | |
tree | 9ca1c6e09858ebcefb0dc14f60c95293fb6976ef /src/passes/Print.cpp | |
parent | 445881f6c8a28faae22a764c96449be86b48a96b (diff) | |
download | binaryen-0faa68b9dfbe478c6d238a5c55ac61b54a86a3c3.tar.gz binaryen-0faa68b9dfbe478c6d238a5c55ac61b54a86a3c3.tar.bz2 binaryen-0faa68b9dfbe478c6d238a5c55ac61b54a86a3c3.zip |
QFMA/QFMS instructions (#2328)
Renames the SIMDBitselect class to SIMDTernary and adds the new
{f32x4,f64x2}.qfm{a,s} ternary instructions. Because the SIMDBitselect
class is no more, this is a backwards-incompatible change to the C
interface. The new instructions are not yet used in the fuzzer because
they are not yet implemented in V8.
The corresponding LLVM commit is https://reviews.llvm.org/rL370556.
Diffstat (limited to 'src/passes/Print.cpp')
-rw-r--r-- | src/passes/Print.cpp | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/src/passes/Print.cpp b/src/passes/Print.cpp index b1e1240ae..ad4d20bae 100644 --- a/src/passes/Print.cpp +++ b/src/passes/Print.cpp @@ -330,9 +330,25 @@ struct PrintExpressionContents o << " " << std::to_string(mask_index); } } - void visitSIMDBitselect(SIMDBitselect* curr) { + void visitSIMDTernary(SIMDTernary* curr) { prepareColor(o); - o << "v128.bitselect"; + switch (curr->op) { + case Bitselect: + o << "v128.bitselect"; + break; + case QFMAF32x4: + o << "f32x4.qfma"; + break; + case QFMSF32x4: + o << "f32x4.qfms"; + break; + case QFMAF64x2: + o << "f64x2.qfma"; + break; + case QFMSF64x2: + o << "f64x2.qfms"; + break; + } } void visitSIMDShift(SIMDShift* curr) { prepareColor(o); @@ -1534,13 +1550,13 @@ struct PrintSExpression : public OverriddenVisitor<PrintSExpression> { printFullLine(curr->right); decIndent(); } - void visitSIMDBitselect(SIMDBitselect* curr) { + void visitSIMDTernary(SIMDTernary* curr) { o << '('; PrintExpressionContents(currFunction, o).visit(curr); incIndent(); - printFullLine(curr->left); - printFullLine(curr->right); - printFullLine(curr->cond); + printFullLine(curr->a); + printFullLine(curr->b); + printFullLine(curr->c); decIndent(); } void visitSIMDShift(SIMDShift* curr) { |