| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -122,6 +122,11 @@ struct EsFunctionAnnotation : FunctionAnnotation { | |||
| 122 | 122 | #endif | |
| 123 | 123 | block->annotationData = uint64_t(tab.get()); | |
| 124 | 124 | auto mangledName = block->getMangledName(true,true); | |
| 125 | + for (auto & ann : block->annotations) { | ||
| 126 | + if (ann->annotation.get() == this) { | ||
| 127 | + mangledName += " " + ann->getMangledName(); | ||
| 128 | + } | ||
| 129 | + } | ||
| 125 | 130 | block->annotationDataSid = hash_blockz32((uint8_t *)mangledName.c_str()); | |
| 126 | 131 | buildAttributeTable(*tab, block->arguments, err); | |
| 127 | 132 | esData->g_esBlockTable.emplace_back(move(tab)); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -76,6 +76,7 @@ namespace das | |||
| 76 | 76 | struct AnnotationDeclaration : enable_shared_from_this<AnnotationDeclaration> { | |
| 77 | 77 | AnnotationPtr annotation; | |
| 78 | 78 | AnnotationArgumentList arguments; | |
| 79 | + string getMangledName() const; | ||
| 79 | 80 | }; | |
| 80 | 81 | typedef shared_ptr<AnnotationDeclaration> AnnotationDeclarationPtr; | |
| 81 | 82 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -163,6 +163,13 @@ namespace das { | |||
| 163 | 163 | static __forceinline float ATan2_est ( float a, float b, Context & ) { return v_extract_x(v_atan2_est(v_splats(a), v_splats(b))); } | |
| 164 | 164 | }; | |
| 165 | 165 | ||
| 166 | + struct SimPolicy_F2IVec { | ||
| 167 | + static __forceinline vec4f Trunci ( vec4f a, Context & ) { return v_cast_vec4f(v_cvt_vec4i(a)); } | ||
| 168 | + static __forceinline vec4f Roundi ( vec4f a, Context & ) { return v_cast_vec4f(v_cvt_roundi(a)); } | ||
| 169 | + static __forceinline vec4f Floori ( vec4f a, Context & ) { return v_cast_vec4f(v_cvt_floori(a)); } | ||
| 170 | + static __forceinline vec4f Ceili ( vec4f a, Context & ) { return v_cast_vec4f(v_cvt_ceili(a)); } | ||
| 171 | + }; | ||
| 172 | + | ||
| 166 | 173 | struct SimPolicy_MathVec { | |
| 167 | 174 | static __forceinline vec4f Abs ( vec4f a, Context & ) { return v_abs(a); } | |
| 168 | 175 | static __forceinline vec4f Floor ( vec4f a, Context & ) { return v_floor(a); } | |
@@ -176,11 +183,6 @@ namespace das { | |||
| 176 | 183 | static __forceinline vec4f MadS ( vec4f a, vec4f b, vec4f c, Context & ) { return v_madd(a,v_perm_xxxx(b),c); } | |
| 177 | 184 | static __forceinline vec4f Lerp ( vec4f a, vec4f b, vec4f t, Context & ) { return v_madd(v_sub(b,a),t,a); } | |
| 178 | 185 | ||
| 179 | - static __forceinline vec4f Trunci ( vec4f a, Context & ) { return v_cast_vec4f(v_cvt_vec4i(a)); } | ||
| 180 | - static __forceinline vec4f Roundi ( vec4f a, Context & ) { return v_cast_vec4f(v_cvt_roundi(a)); } | ||
| 181 | - static __forceinline vec4f Floori ( vec4f a, Context & ) { return v_cast_vec4f(v_cvt_floori(a)); } | ||
| 182 | - static __forceinline vec4f Ceili ( vec4f a, Context & ) { return v_cast_vec4f(v_cvt_ceili(a)); } | ||
| 183 | - | ||
| 184 | 186 | static __forceinline vec4f Exp ( vec4f a, Context & ) { return v_exp(a); } | |
| 185 | 187 | static __forceinline vec4f Log ( vec4f a, Context & ) { return v_log(a); } | |
| 186 | 188 | static __forceinline vec4f Exp2 ( vec4f a, Context & ) { return v_exp2(a); } | |
@@ -490,15 +492,15 @@ namespace das { | |||
| 490 | 492 | template <> struct SimPolicy<float> : SimPolicy_Float, SimPolicy_MathFloat {}; | |
| 491 | 493 | template <> struct SimPolicy<double> : SimPolicy_Double {}; | |
| 492 | 494 | template <> struct SimPolicy<void *> : SimPolicy_Pointer {}; | |
| 493 | - template <> struct SimPolicy<float2> : SimPolicy_Vec<float2,1+2>, SimPolicy_MathVec {}; | ||
| 494 | - template <> struct SimPolicy<float3> : SimPolicy_Vec<float3,1+2+4>, SimPolicy_MathVec {}; | ||
| 495 | - template <> struct SimPolicy<float4> : SimPolicy_Vec<float4,1+2+4+8>, SimPolicy_MathVec {}; | ||
| 496 | - template <> struct SimPolicy<int2> : SimPolicy_iVec<int2,1+2>, SimPolicy_MathVecI {}; | ||
| 497 | - template <> struct SimPolicy<int3> : SimPolicy_iVec<int3,1+2+4>, SimPolicy_MathVecI {}; | ||
| 498 | - template <> struct SimPolicy<int4> : SimPolicy_iVec<int4,1+2+4+8>, SimPolicy_MathVecI {}; | ||
| 499 | - template <> struct SimPolicy<uint2> : SimPolicy_uVec<uint2,1+2>, SimPolicy_MathVecI {}; | ||
| 500 | - template <> struct SimPolicy<uint3> : SimPolicy_uVec<uint3,1+2+4>, SimPolicy_MathVecI {}; | ||
| 501 | - template <> struct SimPolicy<uint4> : SimPolicy_uVec<uint4,1+2+4+8>, SimPolicy_MathVecI {}; | ||
| 495 | + template <> struct SimPolicy<float2> : SimPolicy_Vec<float2,1+2>, SimPolicy_MathVec, SimPolicy_F2IVec {}; | ||
| 496 | + template <> struct SimPolicy<float3> : SimPolicy_Vec<float3,1+2+4>, SimPolicy_MathVec, SimPolicy_F2IVec {}; | ||
| 497 | + template <> struct SimPolicy<float4> : SimPolicy_Vec<float4,1+2+4+8>, SimPolicy_MathVec, SimPolicy_F2IVec {}; | ||
| 498 | + template <> struct SimPolicy<int2> : SimPolicy_iVec<int2,1+2>, SimPolicy_MathVecI, SimPolicy_F2IVec {}; | ||
| 499 | + template <> struct SimPolicy<int3> : SimPolicy_iVec<int3,1+2+4>, SimPolicy_MathVecI, SimPolicy_F2IVec {}; | ||
| 500 | + template <> struct SimPolicy<int4> : SimPolicy_iVec<int4,1+2+4+8>, SimPolicy_MathVecI, SimPolicy_F2IVec {}; | ||
| 501 | + template <> struct SimPolicy<uint2> : SimPolicy_uVec<uint2,1+2>, SimPolicy_MathVecI, SimPolicy_F2IVec {}; | ||
| 502 | + template <> struct SimPolicy<uint3> : SimPolicy_uVec<uint3,1+2+4>, SimPolicy_MathVecI, SimPolicy_F2IVec {}; | ||
| 503 | + template <> struct SimPolicy<uint4> : SimPolicy_uVec<uint4,1+2+4+8>, SimPolicy_MathVecI, SimPolicy_F2IVec {}; | ||
| 502 | 504 | template <> struct SimPolicy<range> : SimPolicy_Range {}; | |
| 503 | 505 | template <> struct SimPolicy<urange> : SimPolicy_URange {}; | |
| 504 | 506 | template <> struct SimPolicy<char *> : SimPolicy_String {}; | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -32,6 +32,30 @@ namespace das { | |||
| 32 | 32 | return call->func->getAotBasicName(); | |
| 33 | 33 | } | |
| 34 | 34 | ||
| 35 | + string AnnotationDeclaration::getMangledName() const { | ||
| 36 | + TextWriter tw; | ||
| 37 | + tw << "[" << annotation->getMangledName(); | ||
| 38 | + if (arguments.size()) { | ||
| 39 | + tw << "("; | ||
| 40 | + for (auto & arg : arguments) { | ||
| 41 | + if (&arg != &arguments.front()) { | ||
| 42 | + tw << ","; | ||
| 43 | + } | ||
| 44 | + tw << arg.name << ":" << das_to_string(arg.type) << "="; | ||
| 45 | + switch (arg.type) { | ||
| 46 | + case Type::tBool: tw << (arg.bValue ? "true" : "false"); break; | ||
| 47 | + case Type::tInt: tw << arg.iValue; break; | ||
| 48 | + case Type::tFloat: tw << arg.fValue; break; | ||
| 49 | + case Type::tString: tw << "\"" << arg.sValue << "\""; break; | ||
| 50 | + default: tw << "error"; break; | ||
| 51 | + } | ||
| 52 | + } | ||
| 53 | + tw << ")"; | ||
| 54 | + } | ||
| 55 | + tw << "]"; | ||
| 56 | + return tw.str(); | ||
| 57 | + } | ||
| 58 | + | ||
| 35 | 59 | // enumeration | |
| 36 | 60 | ||
| 37 | 61 | string Enumeration::getMangledName() const { | |
| Back | FazBrowse Home | New Git URL |
0 commit comments