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
case OpAdd:
s += "__a + __b;";
break;
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 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;
case OpMulN:
s += "__a * " + Duplicate(nElts, typestr, "__b") + ";";
break;
enum OpKind {
OpNone,
OpAdd,
enum OpKind {
OpNone,
OpAdd,
NeonEmitter(RecordKeeper &R) : Records(R) {
OpMap["OP_NONE"] = OpNone;
OpMap["OP_ADD"] = OpAdd;
NeonEmitter(RecordKeeper &R) : Records(R) {
OpMap["OP_NONE"] = OpNone;
OpMap["OP_ADD"] = OpAdd;
+ OpMap["OP_ADDL"] = OpAddl;
+ OpMap["OP_ADDW"] = OpAddw;
+ OpMap["OP_SUBL"] = OpSubl;
+ OpMap["OP_SUBW"] = OpSubw;
OpMap["OP_MUL"] = OpMul;
OpMap["OP_MULL"] = OpMull;
OpMap["OP_MLA"] = OpMla;
OpMap["OP_MUL"] = OpMul;
OpMap["OP_MULL"] = OpMull;
OpMap["OP_MLA"] = OpMla;