Index: clang/lib/CodeGen/CGOpenMPRuntime.cpp =================================================================== --- clang/lib/CodeGen/CGOpenMPRuntime.cpp +++ clang/lib/CodeGen/CGOpenMPRuntime.cpp @@ -9611,10 +9611,18 @@ Masked.push_back('M'); break; } - for (char Mask : Masked) { - for (const ISADataTy &Data : ISAData) { - SmallString<256> Buffer; - llvm::raw_svector_ostream Out(Buffer); + + std::string Buffer; + if (Fn->hasFnAttribute("vector-variants")) { + llvm::Attribute Attr = Fn->getFnAttribute("vector-variants"); + Buffer = Attr.getValueAsString().str(); + } + llvm::raw_string_ostream Out(Buffer); + + for (auto Mask : Masked) { + for (auto &Data : ISAData) { + if (!Buffer.empty()) + Out << ","; Out << "_ZGV" << Data.ISA << Mask; if (!VLENVal) { Out << llvm::APSInt::getUnsigned(Data.VecRegSize / @@ -9643,9 +9651,11 @@ Out << 'a' << ParamAttr.Alignment; } Out << '_' << Fn->getName(); - Fn->addFnAttr(Out.str()); + Out.flush(); } } + + Fn->addFnAttr("vector-variants", Out.str()); } void CGOpenMPRuntime::emitDeclareSimdFunction(const FunctionDecl *FD, Index: clang/test/OpenMP/declare_simd_codegen.cpp =================================================================== --- clang/test/OpenMP/declare_simd_codegen.cpp +++ clang/test/OpenMP/declare_simd_codegen.cpp @@ -132,194 +132,194 @@ // CHECK-DAG: define {{.+}}@_Z3food( // CHECK-DAG: declare {{.+}}@_Z5add_2Pf( -// CHECK-DAG: "_ZGVbM4l8__Z5add_1Pf" -// CHECK-DAG: "_ZGVbN4l8__Z5add_1Pf" -// CHECK-DAG: "_ZGVcM8l8__Z5add_1Pf" -// CHECK-DAG: "_ZGVcN8l8__Z5add_1Pf" -// CHECK-DAG: "_ZGVdM8l8__Z5add_1Pf" -// CHECK-DAG: "_ZGVdN8l8__Z5add_1Pf" -// CHECK-DAG: "_ZGVeM16l8__Z5add_1Pf" -// CHECK-DAG: "_ZGVeN16l8__Z5add_1Pf" -// CHECK-DAG: "_ZGVbM32v__Z5add_1Pf" -// CHECK-DAG: "_ZGVcM32v__Z5add_1Pf" -// CHECK-DAG: "_ZGVdM32v__Z5add_1Pf" -// CHECK-DAG: "_ZGVeM32v__Z5add_1Pf" -// CHECK-DAG: "_ZGVbN2v__Z5add_1Pf" -// CHECK-DAG: "_ZGVcN4v__Z5add_1Pf" -// CHECK-DAG: "_ZGVdN4v__Z5add_1Pf" -// CHECK-DAG: "_ZGVeN8v__Z5add_1Pf" - -// CHECK-DAG: "_ZGVbM2va16va16vv__Z1hIiEvPT_S1_S1_S1_" -// CHECK-DAG: "_ZGVbN2va16va16vv__Z1hIiEvPT_S1_S1_S1_" -// CHECK-DAG: "_ZGVcM4va16va16vv__Z1hIiEvPT_S1_S1_S1_" -// CHECK-DAG: "_ZGVcN4va16va16vv__Z1hIiEvPT_S1_S1_S1_" -// CHECK-DAG: "_ZGVdM4va16va16vv__Z1hIiEvPT_S1_S1_S1_" -// CHECK-DAG: "_ZGVdN4va16va16vv__Z1hIiEvPT_S1_S1_S1_" -// CHECK-DAG: "_ZGVeM8va16va16vv__Z1hIiEvPT_S1_S1_S1_" -// CHECK-DAG: "_ZGVeN8va16va16vv__Z1hIiEvPT_S1_S1_S1_" - -// CHECK-DAG: "_ZGVbM2va16va16vv__Z1hIfEvPT_S1_S1_S1_" -// CHECK-DAG: "_ZGVbN2va16va16vv__Z1hIfEvPT_S1_S1_S1_" -// CHECK-DAG: "_ZGVcM4va16va16vv__Z1hIfEvPT_S1_S1_S1_" -// CHECK-DAG: "_ZGVcN4va16va16vv__Z1hIfEvPT_S1_S1_S1_" -// CHECK-DAG: "_ZGVdM4va16va16vv__Z1hIfEvPT_S1_S1_S1_" -// CHECK-DAG: "_ZGVdN4va16va16vv__Z1hIfEvPT_S1_S1_S1_" -// CHECK-DAG: "_ZGVeM8va16va16vv__Z1hIfEvPT_S1_S1_S1_" -// CHECK-DAG: "_ZGVeN8va16va16vv__Z1hIfEvPT_S1_S1_S1_" - -// CHECK-DAG: "_ZGVbM4uus1__ZN2VV3addEii" -// CHECK-DAG: "_ZGVbN4uus1__ZN2VV3addEii" -// CHECK-DAG: "_ZGVcM8uus1__ZN2VV3addEii" -// CHECK-DAG: "_ZGVcN8uus1__ZN2VV3addEii" -// CHECK-DAG: "_ZGVdM8uus1__ZN2VV3addEii" -// CHECK-DAG: "_ZGVdN8uus1__ZN2VV3addEii" -// CHECK-DAG: "_ZGVeM16uus1__ZN2VV3addEii" -// CHECK-DAG: "_ZGVeN16uus1__ZN2VV3addEii" - -// CHECK-DAG: "_ZGVbM4lla16l4a4__ZN2VV6taddpfEPfRS0_" -// CHECK-DAG: "_ZGVbN4lla16l4a4__ZN2VV6taddpfEPfRS0_" -// CHECK-DAG: "_ZGVcM8lla16l4a4__ZN2VV6taddpfEPfRS0_" -// CHECK-DAG: "_ZGVcN8lla16l4a4__ZN2VV6taddpfEPfRS0_" -// CHECK-DAG: "_ZGVdM8lla16l4a4__ZN2VV6taddpfEPfRS0_" -// CHECK-DAG: "_ZGVdN8lla16l4a4__ZN2VV6taddpfEPfRS0_" -// CHECK-DAG: "_ZGVeM16lla16l4a4__ZN2VV6taddpfEPfRS0_" -// CHECK-DAG: "_ZGVeN16lla16l4a4__ZN2VV6taddpfEPfRS0_" - -// CHECK-DAG: "_ZGVbM4vvl8__ZN2VV4taddERA_iRi" -// CHECK-DAG: "_ZGVbN4vvl8__ZN2VV4taddERA_iRi" -// CHECK-DAG: "_ZGVcM8vvl8__ZN2VV4taddERA_iRi" -// CHECK-DAG: "_ZGVcN8vvl8__ZN2VV4taddERA_iRi" -// CHECK-DAG: "_ZGVdM8vvl8__ZN2VV4taddERA_iRi" -// CHECK-DAG: "_ZGVdN8vvl8__ZN2VV4taddERA_iRi" -// CHECK-DAG: "_ZGVeM16vvl8__ZN2VV4taddERA_iRi" -// CHECK-DAG: "_ZGVeN16vvl8__ZN2VV4taddERA_iRi" -// CHECK-DAG: "_ZGVbM4vva8v__ZN2VV4taddERA_iRi" -// CHECK-DAG: "_ZGVbN4vva8v__ZN2VV4taddERA_iRi" -// CHECK-DAG: "_ZGVcM8vva8v__ZN2VV4taddERA_iRi" -// CHECK-DAG: "_ZGVcN8vva8v__ZN2VV4taddERA_iRi" -// CHECK-DAG: "_ZGVdM8vva8v__ZN2VV4taddERA_iRi" -// CHECK-DAG: "_ZGVdN8vva8v__ZN2VV4taddERA_iRi" -// CHECK-DAG: "_ZGVeM16vva8v__ZN2VV4taddERA_iRi" -// CHECK-DAG: "_ZGVeN16vva8v__ZN2VV4taddERA_iRi" - -// CHECK-DAG: "_ZGVbM4vva32l16a16__ZN3TVVILi16EfE6taddpfEPfRS1_" -// CHECK-DAG: "_ZGVbN4vva32l16a16__ZN3TVVILi16EfE6taddpfEPfRS1_" -// CHECK-DAG: "_ZGVcM8vva32l16a16__ZN3TVVILi16EfE6taddpfEPfRS1_" -// CHECK-DAG: "_ZGVcN8vva32l16a16__ZN3TVVILi16EfE6taddpfEPfRS1_" -// CHECK-DAG: "_ZGVdM8vva32l16a16__ZN3TVVILi16EfE6taddpfEPfRS1_" -// CHECK-DAG: "_ZGVdN8vva32l16a16__ZN3TVVILi16EfE6taddpfEPfRS1_" -// CHECK-DAG: "_ZGVeM16vva32l16a16__ZN3TVVILi16EfE6taddpfEPfRS1_" -// CHECK-DAG: "_ZGVeN16vva32l16a16__ZN3TVVILi16EfE6taddpfEPfRS1_" - -// CHECK-DAG: "_ZGVbM4uu__ZN3TVVILi16EfE4taddEi" -// CHECK-DAG: "_ZGVbN4uu__ZN3TVVILi16EfE4taddEi" -// CHECK-DAG: "_ZGVcM8uu__ZN3TVVILi16EfE4taddEi" -// CHECK-DAG: "_ZGVcN8uu__ZN3TVVILi16EfE4taddEi" -// CHECK-DAG: "_ZGVdM8uu__ZN3TVVILi16EfE4taddEi" -// CHECK-DAG: "_ZGVdN8uu__ZN3TVVILi16EfE4taddEi" -// CHECK-DAG: "_ZGVeM16uu__ZN3TVVILi16EfE4taddEi" -// CHECK-DAG: "_ZGVeN16uu__ZN3TVVILi16EfE4taddEi" -// CHECK-DAG: "_ZGVbM4vv__ZN3TVVILi16EfE4taddEi" -// CHECK-DAG: "_ZGVbN4vv__ZN3TVVILi16EfE4taddEi" -// CHECK-DAG: "_ZGVcM8vv__ZN3TVVILi16EfE4taddEi" -// CHECK-DAG: "_ZGVcN8vv__ZN3TVVILi16EfE4taddEi" -// CHECK-DAG: "_ZGVdM8vv__ZN3TVVILi16EfE4taddEi" -// CHECK-DAG: "_ZGVdN8vv__ZN3TVVILi16EfE4taddEi" -// CHECK-DAG: "_ZGVeM16vv__ZN3TVVILi16EfE4taddEi" -// CHECK-DAG: "_ZGVeN16vv__ZN3TVVILi16EfE4taddEi" - -// CHECK-DAG: "_ZGVbM64va128l64__Z3fooILi64EEvRAT__iRPf" -// CHECK-DAG: "_ZGVbN64va128l64__Z3fooILi64EEvRAT__iRPf" -// CHECK-DAG: "_ZGVcM64va128l64__Z3fooILi64EEvRAT__iRPf" -// CHECK-DAG: "_ZGVcN64va128l64__Z3fooILi64EEvRAT__iRPf" -// CHECK-DAG: "_ZGVdM64va128l64__Z3fooILi64EEvRAT__iRPf" -// CHECK-DAG: "_ZGVdN64va128l64__Z3fooILi64EEvRAT__iRPf" -// CHECK-DAG: "_ZGVeM64va128l64__Z3fooILi64EEvRAT__iRPf" -// CHECK-DAG: "_ZGVeN64va128l64__Z3fooILi64EEvRAT__iRPf" - -// CHECK-DAG: "_ZGVbM4vv__Z3bar2VVPf" -// CHECK-DAG: "_ZGVbN4vv__Z3bar2VVPf" -// CHECK-DAG: "_ZGVcM8vv__Z3bar2VVPf" -// CHECK-DAG: "_ZGVcN8vv__Z3bar2VVPf" -// CHECK-DAG: "_ZGVdM8vv__Z3bar2VVPf" -// CHECK-DAG: "_ZGVdN8vv__Z3bar2VVPf" -// CHECK-DAG: "_ZGVeM16vv__Z3bar2VVPf" -// CHECK-DAG: "_ZGVeN16vv__Z3bar2VVPf" -// CHECK-DAG: "_ZGVbN4vva32__Z3bar2VVPf" -// CHECK-DAG: "_ZGVcN8vva32__Z3bar2VVPf" -// CHECK-DAG: "_ZGVdN8vva32__Z3bar2VVPf" -// CHECK-DAG: "_ZGVeN16vva32__Z3bar2VVPf" - -// CHECK-DAG: "_ZGVbM4vv__Z3baz2VVPi" -// CHECK-DAG: "_ZGVbN4vv__Z3baz2VVPi" -// CHECK-DAG: "_ZGVcM8vv__Z3baz2VVPi" -// CHECK-DAG: "_ZGVcN8vv__Z3baz2VVPi" -// CHECK-DAG: "_ZGVdM8vv__Z3baz2VVPi" -// CHECK-DAG: "_ZGVdN8vv__Z3baz2VVPi" -// CHECK-DAG: "_ZGVeM16vv__Z3baz2VVPi" -// CHECK-DAG: "_ZGVeN16vv__Z3baz2VVPi" -// CHECK-DAG: "_ZGVbN4vva16__Z3baz2VVPi" -// CHECK-DAG: "_ZGVcN8vva16__Z3baz2VVPi" -// CHECK-DAG: "_ZGVdN8vva16__Z3baz2VVPi" -// CHECK-DAG: "_ZGVeN16vva16__Z3baz2VVPi" - -// CHECK-DAG: "_ZGVbM2vv__Z3bay2VVRPd" -// CHECK-DAG: "_ZGVbN2vv__Z3bay2VVRPd" -// CHECK-DAG: "_ZGVcM4vv__Z3bay2VVRPd" -// CHECK-DAG: "_ZGVcN4vv__Z3bay2VVRPd" -// CHECK-DAG: "_ZGVdM4vv__Z3bay2VVRPd" -// CHECK-DAG: "_ZGVdN4vv__Z3bay2VVRPd" -// CHECK-DAG: "_ZGVeM8vv__Z3bay2VVRPd" -// CHECK-DAG: "_ZGVeN8vv__Z3bay2VVRPd" -// CHECK-DAG: "_ZGVbN2vva16__Z3bay2VVRPd" -// CHECK-DAG: "_ZGVcN4vva16__Z3bay2VVRPd" -// CHECK-DAG: "_ZGVdN4vva16__Z3bay2VVRPd" -// CHECK-DAG: "_ZGVeN8vva16__Z3bay2VVRPd" - -// CHECK-DAG: "_ZGVbM4us2u__Z3bax2VVPdi" -// CHECK-DAG: "_ZGVcM8us2u__Z3bax2VVPdi" -// CHECK-DAG: "_ZGVdM8us2u__Z3bax2VVPdi" -// CHECK-DAG: "_ZGVeM16us2u__Z3bax2VVPdi" -// CHECK-DAG: "_ZGVbM4vvv__Z3bax2VVPdi" -// CHECK-DAG: "_ZGVbN4vvv__Z3bax2VVPdi" -// CHECK-DAG: "_ZGVcM8vvv__Z3bax2VVPdi" -// CHECK-DAG: "_ZGVcN8vvv__Z3bax2VVPdi" -// CHECK-DAG: "_ZGVdM8vvv__Z3bax2VVPdi" -// CHECK-DAG: "_ZGVdN8vvv__Z3bax2VVPdi" -// CHECK-DAG: "_ZGVeM16vvv__Z3bax2VVPdi" -// CHECK-DAG: "_ZGVeN16vvv__Z3bax2VVPdi" - -// CHECK-DAG: "_ZGVbM4ua16vl1__Z3fooPffi" -// CHECK-DAG: "_ZGVbN4ua16vl1__Z3fooPffi" -// CHECK-DAG: "_ZGVcM8ua16vl1__Z3fooPffi" -// CHECK-DAG: "_ZGVcN8ua16vl1__Z3fooPffi" -// CHECK-DAG: "_ZGVdM8ua16vl1__Z3fooPffi" -// CHECK-DAG: "_ZGVdN8ua16vl1__Z3fooPffi" -// CHECK-DAG: "_ZGVeM16ua16vl1__Z3fooPffi" -// CHECK-DAG: "_ZGVeN16ua16vl1__Z3fooPffi" - -// CHECK-DAG: "_ZGVbM4l8__Z5add_2Pf" -// CHECK-DAG: "_ZGVbN4l8__Z5add_2Pf" -// CHECK-DAG: "_ZGVcM8l8__Z5add_2Pf" -// CHECK-DAG: "_ZGVcN8l8__Z5add_2Pf" -// CHECK-DAG: "_ZGVdM8l8__Z5add_2Pf" -// CHECK-DAG: "_ZGVdN8l8__Z5add_2Pf" -// CHECK-DAG: "_ZGVeM16l8__Z5add_2Pf" -// CHECK-DAG: "_ZGVeN16l8__Z5add_2Pf" -// CHECK-DAG: "_ZGVbM32v__Z5add_2Pf" -// CHECK-DAG: "_ZGVcM32v__Z5add_2Pf" -// CHECK-DAG: "_ZGVdM32v__Z5add_2Pf" -// CHECK-DAG: "_ZGVeM32v__Z5add_2Pf" -// CHECK-DAG: "_ZGVbN2v__Z5add_2Pf" -// CHECK-DAG: "_ZGVcN4v__Z5add_2Pf" -// CHECK-DAG: "_ZGVdN4v__Z5add_2Pf" -// CHECK-DAG: "_ZGVeN8v__Z5add_2Pf" - -// CHECK-DAG: "_ZGVbN2v__Z3food" -// CHECK-DAG: "_ZGVcN4v__Z3food" -// CHECK-DAG: "_ZGVdN4v__Z3food" -// CHECK-DAG: "_ZGVeN8v__Z3food" - -// CHECK-NOT: "_ZGV{{.+}}__Z1fRA_i +// CHECK-DAG: _ZGVbM4l8__Z5add_1Pf +// CHECK-DAG: _ZGVbN4l8__Z5add_1Pf +// CHECK-DAG: _ZGVcM8l8__Z5add_1Pf +// CHECK-DAG: _ZGVcN8l8__Z5add_1Pf +// CHECK-DAG: _ZGVdM8l8__Z5add_1Pf +// CHECK-DAG: _ZGVdN8l8__Z5add_1Pf +// CHECK-DAG: _ZGVeM16l8__Z5add_1Pf +// CHECK-DAG: _ZGVeN16l8__Z5add_1Pf +// CHECK-DAG: _ZGVbM32v__Z5add_1Pf +// CHECK-DAG: _ZGVcM32v__Z5add_1Pf +// CHECK-DAG: _ZGVdM32v__Z5add_1Pf +// CHECK-DAG: _ZGVeM32v__Z5add_1Pf +// CHECK-DAG: _ZGVbN2v__Z5add_1Pf +// CHECK-DAG: _ZGVcN4v__Z5add_1Pf +// CHECK-DAG: _ZGVdN4v__Z5add_1Pf +// CHECK-DAG: _ZGVeN8v__Z5add_1Pf + +// CHECK-DAG: _ZGVbM2va16va16vv__Z1hIiEvPT_S1_S1_S1_ +// CHECK-DAG: _ZGVbN2va16va16vv__Z1hIiEvPT_S1_S1_S1_ +// CHECK-DAG: _ZGVcM4va16va16vv__Z1hIiEvPT_S1_S1_S1_ +// CHECK-DAG: _ZGVcN4va16va16vv__Z1hIiEvPT_S1_S1_S1_ +// CHECK-DAG: _ZGVdM4va16va16vv__Z1hIiEvPT_S1_S1_S1_ +// CHECK-DAG: _ZGVdN4va16va16vv__Z1hIiEvPT_S1_S1_S1_ +// CHECK-DAG: _ZGVeM8va16va16vv__Z1hIiEvPT_S1_S1_S1_ +// CHECK-DAG: _ZGVeN8va16va16vv__Z1hIiEvPT_S1_S1_S1_ + +// CHECK-DAG: _ZGVbM2va16va16vv__Z1hIfEvPT_S1_S1_S1_ +// CHECK-DAG: _ZGVbN2va16va16vv__Z1hIfEvPT_S1_S1_S1_ +// CHECK-DAG: _ZGVcM4va16va16vv__Z1hIfEvPT_S1_S1_S1_ +// CHECK-DAG: _ZGVcN4va16va16vv__Z1hIfEvPT_S1_S1_S1_ +// CHECK-DAG: _ZGVdM4va16va16vv__Z1hIfEvPT_S1_S1_S1_ +// CHECK-DAG: _ZGVdN4va16va16vv__Z1hIfEvPT_S1_S1_S1_ +// CHECK-DAG: _ZGVeM8va16va16vv__Z1hIfEvPT_S1_S1_S1_ +// CHECK-DAG: _ZGVeN8va16va16vv__Z1hIfEvPT_S1_S1_S1_ + +// CHECK-DAG: _ZGVbM4uus1__ZN2VV3addEii +// CHECK-DAG: _ZGVbN4uus1__ZN2VV3addEii +// CHECK-DAG: _ZGVcM8uus1__ZN2VV3addEii +// CHECK-DAG: _ZGVcN8uus1__ZN2VV3addEii +// CHECK-DAG: _ZGVdM8uus1__ZN2VV3addEii +// CHECK-DAG: _ZGVdN8uus1__ZN2VV3addEii +// CHECK-DAG: _ZGVeM16uus1__ZN2VV3addEii +// CHECK-DAG: _ZGVeN16uus1__ZN2VV3addEii + +// CHECK-DAG: _ZGVbM4lla16l4a4__ZN2VV6taddpfEPfRS0_ +// CHECK-DAG: _ZGVbN4lla16l4a4__ZN2VV6taddpfEPfRS0_ +// CHECK-DAG: _ZGVcM8lla16l4a4__ZN2VV6taddpfEPfRS0_ +// CHECK-DAG: _ZGVcN8lla16l4a4__ZN2VV6taddpfEPfRS0_ +// CHECK-DAG: _ZGVdM8lla16l4a4__ZN2VV6taddpfEPfRS0_ +// CHECK-DAG: _ZGVdN8lla16l4a4__ZN2VV6taddpfEPfRS0_ +// CHECK-DAG: _ZGVeM16lla16l4a4__ZN2VV6taddpfEPfRS0_ +// CHECK-DAG: _ZGVeN16lla16l4a4__ZN2VV6taddpfEPfRS0_ + +// CHECK-DAG: _ZGVbM4vvl8__ZN2VV4taddERA_iRi +// CHECK-DAG: _ZGVbN4vvl8__ZN2VV4taddERA_iRi +// CHECK-DAG: _ZGVcM8vvl8__ZN2VV4taddERA_iRi +// CHECK-DAG: _ZGVcN8vvl8__ZN2VV4taddERA_iRi +// CHECK-DAG: _ZGVdM8vvl8__ZN2VV4taddERA_iRi +// CHECK-DAG: _ZGVdN8vvl8__ZN2VV4taddERA_iRi +// CHECK-DAG: _ZGVeM16vvl8__ZN2VV4taddERA_iRi +// CHECK-DAG: _ZGVeN16vvl8__ZN2VV4taddERA_iRi +// CHECK-DAG: _ZGVbM4vva8v__ZN2VV4taddERA_iRi +// CHECK-DAG: _ZGVbN4vva8v__ZN2VV4taddERA_iRi +// CHECK-DAG: _ZGVcM8vva8v__ZN2VV4taddERA_iRi +// CHECK-DAG: _ZGVcN8vva8v__ZN2VV4taddERA_iRi +// CHECK-DAG: _ZGVdM8vva8v__ZN2VV4taddERA_iRi +// CHECK-DAG: _ZGVdN8vva8v__ZN2VV4taddERA_iRi +// CHECK-DAG: _ZGVeM16vva8v__ZN2VV4taddERA_iRi +// CHECK-DAG: _ZGVeN16vva8v__ZN2VV4taddERA_iRi + +// CHECK-DAG: _ZGVbM4vva32l16a16__ZN3TVVILi16EfE6taddpfEPfRS1_ +// CHECK-DAG: _ZGVbN4vva32l16a16__ZN3TVVILi16EfE6taddpfEPfRS1_ +// CHECK-DAG: _ZGVcM8vva32l16a16__ZN3TVVILi16EfE6taddpfEPfRS1_ +// CHECK-DAG: _ZGVcN8vva32l16a16__ZN3TVVILi16EfE6taddpfEPfRS1_ +// CHECK-DAG: _ZGVdM8vva32l16a16__ZN3TVVILi16EfE6taddpfEPfRS1_ +// CHECK-DAG: _ZGVdN8vva32l16a16__ZN3TVVILi16EfE6taddpfEPfRS1_ +// CHECK-DAG: _ZGVeM16vva32l16a16__ZN3TVVILi16EfE6taddpfEPfRS1_ +// CHECK-DAG: _ZGVeN16vva32l16a16__ZN3TVVILi16EfE6taddpfEPfRS1_ + +// CHECK-DAG: _ZGVbM4uu__ZN3TVVILi16EfE4taddEi +// CHECK-DAG: _ZGVbN4uu__ZN3TVVILi16EfE4taddEi +// CHECK-DAG: _ZGVcM8uu__ZN3TVVILi16EfE4taddEi +// CHECK-DAG: _ZGVcN8uu__ZN3TVVILi16EfE4taddEi +// CHECK-DAG: _ZGVdM8uu__ZN3TVVILi16EfE4taddEi +// CHECK-DAG: _ZGVdN8uu__ZN3TVVILi16EfE4taddEi +// CHECK-DAG: _ZGVeM16uu__ZN3TVVILi16EfE4taddEi +// CHECK-DAG: _ZGVeN16uu__ZN3TVVILi16EfE4taddEi +// CHECK-DAG: _ZGVbM4vv__ZN3TVVILi16EfE4taddEi +// CHECK-DAG: _ZGVbN4vv__ZN3TVVILi16EfE4taddEi +// CHECK-DAG: _ZGVcM8vv__ZN3TVVILi16EfE4taddEi +// CHECK-DAG: _ZGVcN8vv__ZN3TVVILi16EfE4taddEi +// CHECK-DAG: _ZGVdM8vv__ZN3TVVILi16EfE4taddEi +// CHECK-DAG: _ZGVdN8vv__ZN3TVVILi16EfE4taddEi +// CHECK-DAG: _ZGVeM16vv__ZN3TVVILi16EfE4taddEi +// CHECK-DAG: _ZGVeN16vv__ZN3TVVILi16EfE4taddEi + +// CHECK-DAG: _ZGVbM64va128l64__Z3fooILi64EEvRAT__iRPf +// CHECK-DAG: _ZGVbN64va128l64__Z3fooILi64EEvRAT__iRPf +// CHECK-DAG: _ZGVcM64va128l64__Z3fooILi64EEvRAT__iRPf +// CHECK-DAG: _ZGVcN64va128l64__Z3fooILi64EEvRAT__iRPf +// CHECK-DAG: _ZGVdM64va128l64__Z3fooILi64EEvRAT__iRPf +// CHECK-DAG: _ZGVdN64va128l64__Z3fooILi64EEvRAT__iRPf +// CHECK-DAG: _ZGVeM64va128l64__Z3fooILi64EEvRAT__iRPf +// CHECK-DAG: _ZGVeN64va128l64__Z3fooILi64EEvRAT__iRPf + +// CHECK-DAG: _ZGVbM4vv__Z3bar2VVPf +// CHECK-DAG: _ZGVbN4vv__Z3bar2VVPf +// CHECK-DAG: _ZGVcM8vv__Z3bar2VVPf +// CHECK-DAG: _ZGVcN8vv__Z3bar2VVPf +// CHECK-DAG: _ZGVdM8vv__Z3bar2VVPf +// CHECK-DAG: _ZGVdN8vv__Z3bar2VVPf +// CHECK-DAG: _ZGVeM16vv__Z3bar2VVPf +// CHECK-DAG: _ZGVeN16vv__Z3bar2VVPf +// CHECK-DAG: _ZGVbN4vva32__Z3bar2VVPf +// CHECK-DAG: _ZGVcN8vva32__Z3bar2VVPf +// CHECK-DAG: _ZGVdN8vva32__Z3bar2VVPf +// CHECK-DAG: _ZGVeN16vva32__Z3bar2VVPf + +// CHECK-DAG: _ZGVbM4vv__Z3baz2VVPi +// CHECK-DAG: _ZGVbN4vv__Z3baz2VVPi +// CHECK-DAG: _ZGVcM8vv__Z3baz2VVPi +// CHECK-DAG: _ZGVcN8vv__Z3baz2VVPi +// CHECK-DAG: _ZGVdM8vv__Z3baz2VVPi +// CHECK-DAG: _ZGVdN8vv__Z3baz2VVPi +// CHECK-DAG: _ZGVeM16vv__Z3baz2VVPi +// CHECK-DAG: _ZGVeN16vv__Z3baz2VVPi +// CHECK-DAG: _ZGVbN4vva16__Z3baz2VVPi +// CHECK-DAG: _ZGVcN8vva16__Z3baz2VVPi +// CHECK-DAG: _ZGVdN8vva16__Z3baz2VVPi +// CHECK-DAG: _ZGVeN16vva16__Z3baz2VVPi + +// CHECK-DAG: _ZGVbM2vv__Z3bay2VVRPd +// CHECK-DAG: _ZGVbN2vv__Z3bay2VVRPd +// CHECK-DAG: _ZGVcM4vv__Z3bay2VVRPd +// CHECK-DAG: _ZGVcN4vv__Z3bay2VVRPd +// CHECK-DAG: _ZGVdM4vv__Z3bay2VVRPd +// CHECK-DAG: _ZGVdN4vv__Z3bay2VVRPd +// CHECK-DAG: _ZGVeM8vv__Z3bay2VVRPd +// CHECK-DAG: _ZGVeN8vv__Z3bay2VVRPd +// CHECK-DAG: _ZGVbN2vva16__Z3bay2VVRPd +// CHECK-DAG: _ZGVcN4vva16__Z3bay2VVRPd +// CHECK-DAG: _ZGVdN4vva16__Z3bay2VVRPd +// CHECK-DAG: _ZGVeN8vva16__Z3bay2VVRPd + +// CHECK-DAG: _ZGVbM4us2u__Z3bax2VVPdi +// CHECK-DAG: _ZGVcM8us2u__Z3bax2VVPdi +// CHECK-DAG: _ZGVdM8us2u__Z3bax2VVPdi +// CHECK-DAG: _ZGVeM16us2u__Z3bax2VVPdi +// CHECK-DAG: _ZGVbM4vvv__Z3bax2VVPdi +// CHECK-DAG: _ZGVbN4vvv__Z3bax2VVPdi +// CHECK-DAG: _ZGVcM8vvv__Z3bax2VVPdi +// CHECK-DAG: _ZGVcN8vvv__Z3bax2VVPdi +// CHECK-DAG: _ZGVdM8vvv__Z3bax2VVPdi +// CHECK-DAG: _ZGVdN8vvv__Z3bax2VVPdi +// CHECK-DAG: _ZGVeM16vvv__Z3bax2VVPdi +// CHECK-DAG: _ZGVeN16vvv__Z3bax2VVPdi + +// CHECK-DAG: _ZGVbM4ua16vl1__Z3fooPffi +// CHECK-DAG: _ZGVbN4ua16vl1__Z3fooPffi +// CHECK-DAG: _ZGVcM8ua16vl1__Z3fooPffi +// CHECK-DAG: _ZGVcN8ua16vl1__Z3fooPffi +// CHECK-DAG: _ZGVdM8ua16vl1__Z3fooPffi +// CHECK-DAG: _ZGVdN8ua16vl1__Z3fooPffi +// CHECK-DAG: _ZGVeM16ua16vl1__Z3fooPffi +// CHECK-DAG: _ZGVeN16ua16vl1__Z3fooPffi + +// CHECK-DAG: _ZGVbM4l8__Z5add_2Pf +// CHECK-DAG: _ZGVbN4l8__Z5add_2Pf +// CHECK-DAG: _ZGVcM8l8__Z5add_2Pf +// CHECK-DAG: _ZGVcN8l8__Z5add_2Pf +// CHECK-DAG: _ZGVdM8l8__Z5add_2Pf +// CHECK-DAG: _ZGVdN8l8__Z5add_2Pf +// CHECK-DAG: _ZGVeM16l8__Z5add_2Pf +// CHECK-DAG: _ZGVeN16l8__Z5add_2Pf +// CHECK-DAG: _ZGVbM32v__Z5add_2Pf +// CHECK-DAG: _ZGVcM32v__Z5add_2Pf +// CHECK-DAG: _ZGVdM32v__Z5add_2Pf +// CHECK-DAG: _ZGVeM32v__Z5add_2Pf +// CHECK-DAG: _ZGVbN2v__Z5add_2Pf +// CHECK-DAG: _ZGVcN4v__Z5add_2Pf +// CHECK-DAG: _ZGVdN4v__Z5add_2Pf +// CHECK-DAG: _ZGVeN8v__Z5add_2Pf + +// CHECK-DAG: _ZGVbN2v__Z3food +// CHECK-DAG: _ZGVcN4v__Z3food +// CHECK-DAG: _ZGVdN4v__Z3food +// CHECK-DAG: _ZGVeN8v__Z3food + +// CHECK-NOT: _ZGV{{.+}}__Z1fRA_i #endif