dwarf_type_name(typedie).c_str()), e->tok));
}
- if (encoding == DW_ATE_float
- || encoding == DW_ATE_complex_float
- /* XXX || many others? */)
- {
- throw (SEMANTIC_ERROR
- (_F("unsupported type (encoding %s) for %s",
- lex_cast(encoding).c_str(),
- dwarf_type_name(typedie).c_str()), e->tok));
- }
-
signed_p = (encoding == DW_ATE_signed
|| encoding == DW_ATE_signed_char);
}
static void
-sdt_benchmark_thread(unsigned long i, double *fpointer, float *fpointer2)
+sdt_benchmark_thread(unsigned long i, double fp1, float fp2)
{
PROBE(stap, benchmark__thread__start);
- *fpointer += 0.0;
- *fpointer2 += 0.0;
+ fp1 += 0.0;
+ fp2 += 0.0;
while (i--)
PROBE1(stap, benchmark, i);
PROBE(stap, benchmark__thread__end);
double f = 2.71828;
float f2 = 1.41421;
for (unsigned long i = 0; i < threads; ++i)
- handles.push_back(thread(sdt_benchmark_thread, loops, &f, &f2));
+ handles.push_back(thread(sdt_benchmark_thread, loops, f, f2));
for (unsigned long i = 0; i < threads; ++i)
handles[i].join();
}
#define pt_dwarf_register_13(regs) regs->r13
#define pt_dwarf_register_14(regs) regs->r14
#define pt_dwarf_register_15(regs) regs->r15
-#define pt_regs_maxno 15
+#define pt_dwarf_register_17(regs) ({uint64_t v; __asm__ __volatile__("movq %%xmm0, %0" : "=r"(v)); v;})
+#define pt_dwarf_register_18(regs) ({uint64_t v; __asm__ __volatile__("movq %%xmm1, %0" : "=r"(v)); v;})
+#define pt_dwarf_register_19(regs) ({uint64_t v; __asm__ __volatile__("movq %%xmm2, %0" : "=r"(v)); v;})
+#define pt_dwarf_register_20(regs) ({uint64_t v; __asm__ __volatile__("movq %%xmm3, %0" : "=r"(v)); v;})
+#define pt_dwarf_register_21(regs) ({uint64_t v; __asm__ __volatile__("movq %%xmm4, %0" : "=r"(v)); v;})
+#define pt_dwarf_register_22(regs) ({uint64_t v; __asm__ __volatile__("movq %%xmm5, %0" : "=r"(v)); v;})
+#define pt_dwarf_register_23(regs) ({uint64_t v; __asm__ __volatile__("movq %%xmm6, %0" : "=r"(v)); v;})
+#define pt_dwarf_register_24(regs) ({uint64_t v; __asm__ __volatile__("movq %%xmm7, %0" : "=r"(v)); v;})
+#define pt_regs_maxno 24
#elif defined __i386__
function printlnfp(a) { println(fp_to_string(a,5)) }
probe process("stap").function("sdt_benchmark_thread") {
- fp = user_long($fpointer)
+ //i_temp = $i_temp
+ //println(i_temp)
+ fp = $fp1
printlnfp(fp)
- fp32 = user_int($fpointer2)
+ fp32 = $fp2
printlnfp(fp32_to_fp64(fp32))
exit()
}
function printlnfp(a) { println(fp_to_string(a,5)) }
probe process("stap").function("sdt_benchmark_thread") {
- a = user_long($fpointer)
+ a = $fp1
b = string_to_fp("3.14")
c = long_to_fp(2)