#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; }