From 78c603144e90adababc672bbfe0624842fc977c5 Mon Sep 17 00:00:00 2001 From: Marc Marcos Date: Wed, 6 May 2026 09:37:00 +0200 Subject: [PATCH] zfhmin microbenchmark --- zfhmin_micro/zfhmin.c | 57 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 zfhmin_micro/zfhmin.c diff --git a/zfhmin_micro/zfhmin.c b/zfhmin_micro/zfhmin.c new file mode 100644 index 0000000..224c452 --- /dev/null +++ b/zfhmin_micro/zfhmin.c @@ -0,0 +1,57 @@ +#include +#include + +#define N 10 + +static inline uint64_t read_cycles() { + uint64_t start; + asm volatile ("rdcycle %0" : "=r"(start)); + return start; +} + +int main() { + // fcvt.s.h + + volatile float b; + volatile _Float16 d; + volatile double e; + volatile _Float16 g; + + volatile _Float16 a = 3.0f; + + read_cycles(); + for (int i = 0; i < N; i++) { + b = (float) a; + } + read_cycles(); + + // fcvt.h.s + + volatile float c = 3.0f; + + read_cycles(); + for (int i = 0; i < N; i++) { + d = (_Float16) c; + } + read_cycles(); + + // fcvt.d.h + + read_cycles(); + for (int i = 0; i < N; i++) { + double e = (double) a; + } + read_cycles(); + + // fcvt.h.d + + volatile double f = 3.0f; + + read_cycles(); + for (int i = 0; i < N; i++) { + g = (_Float16) f; + } + read_cycles(); + + return 0; +}