Extending llvm with data types which can be accessible only through interfaces.

Hi LLVM-Dev Team,

I am a graduate student working on compilation for heterogeneous multi-cores. 
As a part of my project, I need to extend llvm by adding a new data type for a commonly used data structure like queue.
Could you please mention if there been any prior work on extending the llvm frontend to accommodate these kind of new data types and parse it to get LLVM-IR. 

Can you also advice on how to bind these new data types, with interfaces through which such data types can be accessed. 
example: Data type "queue" should be accessible to the programmer only through interfaces like enqueue and dequeue.  

PS note: I can't expose these as library (like STL) and would like the data type to be part of language spec 

Thank you
Narayan

Narayan,

OpenCL has similar data type called Images. They can only be accessed through function calls and not directly.

Micah

Narayan,

OpenCL has similar data type called Images. They can only be accessed through function calls and not directly.

Micah

From: llvmdev-bounces@cs.uiuc.edu [mailto:llvmdev-bounces@cs.uiuc.edu] On Behalf Of NARAYAN HEGDE
Sent: Friday, June 22, 2012 10:24 AM
To: llvmdev@cs.uiuc.edu
Cc: Uday Reddy
Subject: [LLVMdev] Extending llvm with data types which can be accessible only through interfaces.

Hi LLVM-Dev Team,

I am a graduate student working on compilation for heterogeneous multi-cores. 
As a part of my project, I need to extend llvm by adding a new data type for a commonly used data structure like queue.

Could you please mention if there been any prior work on extending the llvm frontend to accommodate these kind of new data types and parse it to get LLVM-IR. 

 
Can you also advice on how to bind these new data types, with interfaces through which such data types can be accessed. 
example: Data type "queue" should be accessible to the programmer only through interfaces like enqueue and dequeue.  

This sounds like a front-end issue. LLVM IR has no notion of interfaces, it is up to the front-end which is generating LLVM IR to honor any front-end language restrictions.