FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

annotation arguments affect block sid · Xsankor/daScript@6c76d83 · GitHub

Commit 6c76d83

Browse files
committed
annotation arguments affect block sid
1 parent 89c418b commit 6c76d83

4 files changed

Lines changed: 46 additions & 14 deletions

File tree

‎examples/profile/test_profile.cpp‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,11 @@ struct EsFunctionAnnotation : FunctionAnnotation {
122122
#endif
123123
block->annotationData = uint64_t(tab.get());
124124
auto mangledName = block->getMangledName(true,true);
125+
for (auto & ann : block->annotations) {
126+
if (ann->annotation.get() == this) {
127+
mangledName += " " + ann->getMangledName();
128+
}
129+
}
125130
block->annotationDataSid = hash_blockz32((uint8_t *)mangledName.c_str());
126131
buildAttributeTable(*tab, block->arguments, err);
127132
esData->g_esBlockTable.emplace_back(move(tab));

‎include/daScript/ast/ast.h‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ namespace das
7676
struct AnnotationDeclaration : enable_shared_from_this<AnnotationDeclaration> {
7777
AnnotationPtr annotation;
7878
AnnotationArgumentList arguments;
79+
string getMangledName() const;
7980
};
8081
typedef shared_ptr<AnnotationDeclaration> AnnotationDeclarationPtr;
8182

‎include/daScript/simulate/sim_policy.h‎

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,13 @@ namespace das {
163163
static __forceinline float ATan2_est ( float a, float b, Context & ) { return v_extract_x(v_atan2_est(v_splats(a), v_splats(b))); }
164164
};
165165

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+
166173
struct SimPolicy_MathVec {
167174
static __forceinline vec4f Abs ( vec4f a, Context & ) { return v_abs(a); }
168175
static __forceinline vec4f Floor ( vec4f a, Context & ) { return v_floor(a); }
@@ -176,11 +183,6 @@ namespace das {
176183
static __forceinline vec4f MadS ( vec4f a, vec4f b, vec4f c, Context & ) { return v_madd(a,v_perm_xxxx(b),c); }
177184
static __forceinline vec4f Lerp ( vec4f a, vec4f b, vec4f t, Context & ) { return v_madd(v_sub(b,a),t,a); }
178185

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-
184186
static __forceinline vec4f Exp ( vec4f a, Context & ) { return v_exp(a); }
185187
static __forceinline vec4f Log ( vec4f a, Context & ) { return v_log(a); }
186188
static __forceinline vec4f Exp2 ( vec4f a, Context & ) { return v_exp2(a); }
@@ -490,15 +492,15 @@ namespace das {
490492
template <> struct SimPolicy<float> : SimPolicy_Float, SimPolicy_MathFloat {};
491493
template <> struct SimPolicy<double> : SimPolicy_Double {};
492494
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 {};
502504
template <> struct SimPolicy<range> : SimPolicy_Range {};
503505
template <> struct SimPolicy<urange> : SimPolicy_URange {};
504506
template <> struct SimPolicy<char *> : SimPolicy_String {};

‎src/ast/ast.cpp‎

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,30 @@ namespace das {
3232
return call->func->getAotBasicName();
3333
}
3434

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+
3559
// enumeration
3660

3761
string Enumeration::getMangledName() const {

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL