Recent Entries
Archives
Search


Links
Powered by
Movable Type 2.64

2008年11月24日

llvm-2.4とMSIL

llvm-2.4のMSILのコードは長らく更新されていないのです(´ー`)

llvm-2.4でMSILのバイナリ吐かせてみようと思って llc -march=msil してみるわけですが、abortしてしまいますのでちょっと調べてみました(´ー`)いくらかbcのバイナリに対して未実装の部分があるようです。


HANDLE_OTHER_INST(42, PHI , PHINode ) // PHI node instruction
HANDLE_OTHER_INST(45, UserOp1, Instruction) // May be used internally in a pass
HANDLE_OTHER_INST(46, UserOp2, Instruction) // Internal to passes only
HANDLE_OTHER_INST(48, ExtractElement, ExtractElementInst)// extract from vector
HANDLE_OTHER_INST(49, InsertElement, InsertElementInst) // insert into vector
HANDLE_OTHER_INST(50, ShuffleVector, ShuffleVectorInst) // shuffle two vectors.
HANDLE_OTHER_INST(51, ExtractValue, ExtractValueInst)// extract from aggregate
HANDLE_OTHER_INST(52, InsertValue, InsertValueInst) // insert into aggregate
HANDLE_OTHER_INST(53, VICmp , VICmpInst ) // Vec Int comparison instruction.
HANDLE_OTHER_INST(54, VFCmp , VFCmpInst ) // Vec FP point comparison instr.

特に上記のうち42,45,50についてはX86では対応していますので、対応しておくのが無難と思われます。lib/Target/MSIL/MSILWriter.cpp に実装を追加する必要がありまして、1168行目でassertが出ないように(つまり case でdefaultを通らないように)してやらないといけないわけです。で、おそらくその部分を実装すれば何とかなると思われます。

#がしかし(;´Д`)今はそんなのやってる暇無いので放置

Posted by minemaz at 2008年11月24日 05:28
トラックバック
このエントリーのトラックバックURL:
http://www.lancard.com/mt/mt-tb.cgi/461

Comments
Post a comment









Remember personal info?