diff options
author | Bob Wilson <bob.wilson@apple.com> | 2010-12-08 00:14:04 +0000 |
---|---|---|
committer | Bob Wilson <bob.wilson@apple.com> | 2010-12-08 00:14:04 +0000 |
commit | e113ae56d9ee2fddce14f5caaae1229e70ee0a00 (patch) | |
tree | adb056e7f2dc693a7f4b294188a516ffb3e7ee7b /utils | |
parent | 94541efd9238ee0ab615d22dcd6182199490ae61 (diff) | |
download | external_llvm-e113ae56d9ee2fddce14f5caaae1229e70ee0a00.zip external_llvm-e113ae56d9ee2fddce14f5caaae1229e70ee0a00.tar.gz external_llvm-e113ae56d9ee2fddce14f5caaae1229e70ee0a00.tar.bz2 |
Add operators for vadd[lw] and vsub[lw]
so they can be implemented without clang builtins.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121213 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils')
-rw-r--r-- | utils/TableGen/NeonEmitter.cpp | 14 | ||||
-rw-r--r-- | utils/TableGen/NeonEmitter.h | 8 |
2 files changed, 22 insertions, 0 deletions
diff --git a/utils/TableGen/NeonEmitter.cpp b/utils/TableGen/NeonEmitter.cpp index c7b3ec5..7a62358 100644 --- a/utils/TableGen/NeonEmitter.cpp +++ b/utils/TableGen/NeonEmitter.cpp @@ -584,9 +584,23 @@ static std::string GenOpString(OpKind op, const std::string &proto, case OpAdd: s += "__a + __b;"; break; + case OpAddl: + s += Extend(proto, typestr, "__a") + " + " + + Extend(proto, typestr, "__b") + ";"; + break; + case OpAddw: + s += "__a + " + Extend(proto, typestr, "__b") + ";"; + break; case OpSub: s += "__a - __b;"; break; + case OpSubl: + s += Extend(proto, typestr, "__a") + " - " + + Extend(proto, typestr, "__b") + ";"; + break; + case OpSubw: + s += "__a - " + Extend(proto, typestr, "__b") + ";"; + break; case OpMulN: s += "__a * " + Duplicate(nElts, typestr, "__b") + ";"; break; diff --git a/utils/TableGen/NeonEmitter.h b/utils/TableGen/NeonEmitter.h index 4c58893..6c0937b 100644 --- a/utils/TableGen/NeonEmitter.h +++ b/utils/TableGen/NeonEmitter.h @@ -24,7 +24,11 @@ enum OpKind { OpNone, OpAdd, + OpAddl, + OpAddw, OpSub, + OpSubl, + OpSubw, OpMul, OpMull, OpMla, @@ -87,7 +91,11 @@ namespace llvm { NeonEmitter(RecordKeeper &R) : Records(R) { OpMap["OP_NONE"] = OpNone; OpMap["OP_ADD"] = OpAdd; + OpMap["OP_ADDL"] = OpAddl; + OpMap["OP_ADDW"] = OpAddw; OpMap["OP_SUB"] = OpSub; + OpMap["OP_SUBL"] = OpSubl; + OpMap["OP_SUBW"] = OpSubw; OpMap["OP_MUL"] = OpMul; OpMap["OP_MULL"] = OpMull; OpMap["OP_MLA"] = OpMla; |