summaryrefslogtreecommitdiffstats
path: root/Whisper/Utils/Trace/TraceStructures.cpp
diff options
context:
space:
mode:
authorKonstantin <const@const.me>2023-01-16 14:52:43 +0100
committerKonstantin <const@const.me>2023-01-16 14:52:43 +0100
commit8c4603c73675958efc960fbd4bb599a2909d106a (patch)
tree714dc6fc9a1672d5fd7f89676b97e10959662abc /Whisper/Utils/Trace/TraceStructures.cpp
parent990a8d0dbaefc996244097397259e92758b15cce (diff)
Source codes
Diffstat (limited to 'Whisper/Utils/Trace/TraceStructures.cpp')
-rw-r--r--Whisper/Utils/Trace/TraceStructures.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/Whisper/Utils/Trace/TraceStructures.cpp b/Whisper/Utils/Trace/TraceStructures.cpp
new file mode 100644
index 0000000..289a534
--- /dev/null
+++ b/Whisper/Utils/Trace/TraceStructures.cpp
@@ -0,0 +1,31 @@
+#include "stdafx.h"
+#include "TraceStructures.h"
+using namespace Tracing;
+
+uint64_t sTraceItem::buffer( uint64_t off, size_t length, eDataType type )
+{
+ payloadOffset = off;
+ payloadSize = length * DirectCompute::elementSize( type );
+ *(uint64_t*)( &size[ 0 ] ) = length;
+ *(uint64_t*)( &size[ 2 ] ) = 0;
+ _mm_storeu_si128( ( __m128i* )stride.data(), _mm_setzero_si128() );
+ itemType = eItemType::Buffer;
+ dataType = type;
+ return payloadSize;
+}
+
+uint64_t sTraceItem::tensor( uint64_t off, __m128i ne, __m128i nb, eDataType type )
+{
+ payloadOffset = off;
+ _mm_storeu_si128( ( __m128i* )size.data(), ne );
+ _mm_storeu_si128( ( __m128i* )stride.data(), nb );
+ uint64_t count = 1;
+ for( uint32_t i : size )
+ if( i != 0 )
+ count *= i;
+
+ payloadSize = count * DirectCompute::elementSize( type );
+ itemType = eItemType::Tensor;
+ dataType = type;
+ return payloadSize;
+} \ No newline at end of file