2013-03-12 20 views
11

I compilatori C consentono di incorporare il codice assembly in un programma C.Come incorporare l'assembly LLVM o le intrinseche nel programma C con Clang?

Sono sicuro che Clang dovrebbe consentire l'incorporamento di assembly LLVM o codice intrinseco nel programma C. Come posso incorporare l'assembly LLVM nel codice C?

+4

Sì, dovrebbe * permetterlo. No, non lo fa ancora, mi dispiace. –

+0

Quali intrinsechi? Se vuoi solo usare, ad esempio, ARM NEON intrinseca, [puoi farlo senza ricorrere all'assembly inline] (http://blog.llvm.org/2010/04/arm-advanced-simd-neon-intrinsics-and .html). –

+0

@robmayoff Questo è ciò che intendevo: http://llvm.org/docs/LangRef.html#intrinsic-functions – Eonil

risposta

6

Al momento non è possibile.

È possibile, tuttavia, scrivere separatamente una funzione di assemblaggio LLVM nel proprio file, contrassegnarla come alwaysinline, quindi compilarla con il resto dei file - questo dovrebbe ottenere lo stesso risultato. Vedi this related question on how to first compile your C files to IR and then link them together.

È anche possibile compilare i file separatamente e assicurarsi di eseguire link-time optimization (LTO), dovrebbe fare la stessa cosa.