<html dir="ltr"><head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style title="owaParaStyle"><!--P {
        MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px
}
--></style>
<meta name="GENERATOR" content="MSHTML 8.00.6001.19120">
</head>
<body ocsi="x">
<div dir="ltr"><font color="#000000" size="2" face="Tahoma">Hi Talin,</font></div>
<div>
<div dir="ltr"><font size="2" face="tahoma"></font> </div>
<div dir="ltr"><font size="2" face="tahoma">I had a talk in London developer meeting about More Target Independent Bitcode.</font></div>
<div dir="ltr"><font size="2" face="tahoma">(You can download the slides from <a href="http://llvm.org/devmtg/2011-09-16/" target="_blank">
http://llvm.org/devmtg/2011-09-16/</a>)</font></div>
<div dir="ltr"><font size="2" face="tahoma"></font> </div>
<div dir="ltr"><font size="2" face="tahoma">I have been also trying to make bitcode with more higher abstraction level.</font></div>
<div dir="ltr"><font size="2" face="tahoma">I made new compilation strategy using more target indepent bitcode as followins,</font></div>
<div dir="ltr"><font size="2" face="tahoma">(This didn't consider about Jit or Interpreter like lli)</font></div>
<div dir="ltr"><font size="2" face="tahoma"></font> </div>
<div dir="ltr"><font size="2" face="tahoma">C/C++ source code</font></div>
<div dir="ltr"><font size="2" face="tahoma">------------------------------------------ using front-end complier</font></div>
<div dir="ltr"><font size="2" face="tahoma">Target Independent Bitcode</font></div>
<div dir="ltr"><font size="2" face="tahoma">------------------------------------------ using translator</font></div>
<div dir="ltr"><font size="2" face="tahoma">Traget Dependent Bitcode</font></div>
<div dir="ltr"><font size="2" face="tahoma">------------------------------------------ using opt with optimization passes</font></div>
<div dir="ltr"><font size="2" face="tahoma">Optimized Target Dependent Bitcode</font></div>
<div dir="ltr"><font size="2" face="tahoma">------------------------------------------ using LLC</font></div>
<div dir="ltr"><font size="2" face="tahoma">Target Assembly code</font></div>
<div dir="ltr"><font size="2" face="tahoma"></font> </div>
<div dir="ltr"><font size="2" face="tahoma">I can show you simple example with this strategy.</font></div>
<div dir="ltr"><font size="2" face="tahoma"></font> </div>
<div dir="ltr"><font size="2" face="tahoma">
<div dir="ltr"><font size="2" face="tahoma">C/C++ source code</font></div>
</font></div>
<div dir="ltr"><font size="2" face="tahoma">  1 struct foo {<br>
  2 char a:4;<br>
  3 long long b:61;<br>
  4 int c:30;<br>
  5 };<br>
  6<br>
  7 struct foo var;<br>
</font></div>
<div dir="ltr"><font size="2" face="tahoma"><font size="2" face="tahoma">Target Independent Bitcode</font></div>
</font>
<div dir="ltr"><font size="2" face="tahoma">  1 ; ModuleID = 'gu.c'<br>
  2 target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32</font></div>
<div dir="ltr"><font size="2" face="tahoma">-f64:64:64-v64:64:64-v128:128:128-a0:0:64-f192:32:32"<br>
  3 target triple = "ovm-none-linux"<br>
  4<br>
  5 %struct.foo = type { i4(char), i61(longlong), i30(int) }<br>
  6<br>
  7 @var = common global %struct.foo zeroinitializer  ; <%struct.foo*> [#uses=0]<br>
</div>
</font>
<div dir="ltr"><font size="2" face="tahoma"><font size="2" face="tahoma"><font size="2" face="tahoma">Target Dependent Bitcode</font></div>
</font></font>
<div dir="ltr"><font size="2" face="tahoma"><font face="tahoma">ARM</font></font></div>
<div dir="ltr"><font size="2" face="tahoma"><font face="tahoma">  1 ; ModuleID = 'gu.mod.opt.arm.bc'<br>
  2 target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32</font></font></div>
<div dir="ltr"><font size="2" face="tahoma"><font face="tahoma">-f64:64:64-v64:64:64-v128:128:128-a0:0:64"<br>
  3 target triple = "armv5-none-linux-gnueabi"<br>
  4<br>
  5 %struct.foo = type <{ i8, [7 x i8], i64, i32, [4 x i8] }><br>
  6<br>
  7 @var = common global %struct.foo zeroinitializer  ; <%struct.foo*> [#uses=0]<br>
</div>
</font></font>
<div dir="ltr"><font size="2" face="tahoma"><font face="tahoma"><font face="tahoma">X86</font></font></font></div>
<div dir="ltr"><font size="2" face="tahoma"><font face="tahoma">  1 ; ModuleID = 'gu.mod.opt.x86.bc'<br>
  2 target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32</font></font></div>
<div dir="ltr"><font size="2" face="tahoma"><font face="tahoma">-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32"<br>
  3 target triple = "i386-pc-linux-gnu"<br>
  4<br>
  5 %struct.foo = type <{ i8, [3 x i8], i64, i32 }><br>
  6<br>
  7 @var = common global %struct.foo zeroinitializer  ; <%struct.foo*> [#uses=0]</font></font></div>
<p><font size="2" face="tahoma"><font face="tahoma"><font face="tahoma"></font></font></font> </p>
<p><font size="2" face="tahoma"><font face="tahoma"><font face="tahoma">I have inserted additional information into bitcode and have modified some codes of LLVM.</font></font></font></p>
<p><font size="2" face="tahoma"></font> </p>
<p><font size="2" face="Tahoma">I am interested in having conversation about achieving the goals of the "near miss" users</font></p>
<p><font size="2" face="Tahoma">of LLVM collaboratively. :)</font></p>
<p><font size="2" face="tahoma"></font> </p>
<p><font size="2" face="tahoma">Thanks,</font></p>
<p><font size="2" face="tahoma">Jin-Gu Kang</font></p>
</div>
</body>
</html>