タグ

llvmに関するyokochieのブックマーク (8)

  • clang+llvmでさりげなくすごいコードが生成されていた話。 - 組み込みの人。

    先日llvm 3.3がリリースされました。aarch64(arm 64bit)のコードが生成できるようになったということなので、ソースからビルドして遊んでいたのですが、さりげなく凄く最適化されたコードが生成されているのに気がつきました。aarch64だと今は実行して確認できる環境が手元に無いので、普通のarmv7-aで同じことを試しました。 ここで使ったコードとその結果はgistに貼りました。 https://gist.github.com/tetsu-koba/5835724 ソースコード int sum(int x) { int sum = 0; int i; for (i = 1; i <= x; i++) { sum += i; } return sum; } 1からnまでの総和を求める関数です。1から100までの総和が5050なのはガウス少年の逸話で有名ですね。 gcc 4.8.

    clang+llvmでさりげなくすごいコードが生成されていた話。 - 組み込みの人。
  • LLVMによる自動C++11移行ツール

    LLVM Project Blog: Status of the C++11 Migrator 先月のRSSフィードに一瞬だけ現れたのだが、すぐ消えてしまった記事が復活した。 cpp11-migrateは、LLVMのツールに含まれる、既存のコードをC++11に変換する移行ツールである。 現在のところ、四種類の変換が可能だ。 STLコンテナーや配列の要素をループでなめるコードをRange-based forに変換する。 こんないけてないコードが、 std::vector<int> myVec; for (std::vector<int>::iterator I = myVec.begin(), E = myVec.end(); I != E; ++I) llvm::outs() << *I; こんなに格好良くなる。 std::vector<int> myVec; for (auto & el

    yokochie
    yokochie 2013/04/17
    まじか
  • x86/x64最適化勉強会5 レポート - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちはサイボウズ・ラボの光成です。 今回は3月30日に開催された「x86/x64最適化勉強会5」の模様についてお伝えします。 x86/x64最適化勉強会会場 プログラム開発においては、開発の段階において早すぎる最適化は悪、当に必要になってから最小限だけ行いなさいと言われています。 また今どきのコンパイラは優秀なので、下手な小細工はせずにコンパイラに任せておくのがよいとも言われています。 もちろん一般的にはそれは正しいのですが、普段動画や音声を利用するときに使われているコーデック、ネット上での決済時に利用される暗号ライブラリなどは、人の手によるアセンブリ言語で開発されていることが多いのもまた事実です。 私が主催しているこの勉強会はそういう下回りのライブラリを開発するときに必要な技術や情報の交換のために行っています。 ustreamで過去の会の動画も含めてみることができます。 以下、やや

    x86/x64最適化勉強会5 レポート - Cybozu Inside Out | サイボウズエンジニアのブログ
  • きつねさんでもわかるLLVM - 達人出版会

    内容紹介書は趣味でLLVMを触っている著者二人のLLVMをもっと普及させていきたいと思いから生まれたLLVM解説です。 LLVMは今非常に注目されていますが、度重なるAPI仕様の変更や公式ドキュメントの充実さなどが理由で、まとまった解説がなされたものはありませんでした。書によりまとまった情報が日語で手に入るようになり、多くの方にLLVMを知って頂けると幸いです。 書ではLLVMを使用したコンパイラの作り方を順を追って説明しLLVMへの理解を深めてもらおうというのがコンセプトになっています。フロントエンド(中間表現出力まで)、ミドルエンド(最適化)、バックエンド(オブジェクト生成)と幅広く解説していますので多くの方に有用な内容を含んでいるのではないでしょうか。 LLVMの用途は多岐にわたり,書では解説できていない部分もありますが,初心者向けの情報としてLLVMを利用するための基礎

    きつねさんでもわかるLLVM - 達人出版会
  • llvm で Hello wolrd!! 〜llvm入門 その2〜 - tokuhirom's blog

    http://www.ibm.com/developerworks/jp/opensource/library/os-createcompilerllvm1/ 最初なのでとりあえず↑の記事を基なぞってますが、わかりやすく解説をいれています。 llvm であそぶには、まあいろいろな方法がありますが、わかりやすく大きくわけると以下の4ステップです。 llvm IR の動的生成llvm IRの最適化llvm IRの JIT コンパイルllvm IRのネイティブコードへの変換それぞれのフェーズごとに分離して動作させることができるので、創りたいところだけつくればいいのです。 とりあえず基となる llvm IR の動的生成をおこなってみます。 とりあえずなにもしない main 関数をつくりましょう。 #include "llvm/LLVMContext.h" #include "llvm/Modu

  • llvmの基本となるツールたち 〜llvm 入門 その1〜 - tokuhirom's blog

    3つのツールをためすhelloworld.c はこちら。 #include <stdio.h> int main( ) { printf("Hello World!\n"); }llvmアセンブリを生成! $ llvm-gcc -S -emit-llvm helloworld.c helloworld.s ができてた。 ; ModuleID = 'helloworld.c' target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" target triple = "x86_64-apple-darwin11.4" @.str

  • LLVM Clang、Linuxカーネルビルドに成功 | エンタープライズ | マイコミジャーナル

    LLVM is a robust system, particularly well suited for developing new mid-level language-independent analyses and optimizations. LLVMのC/C++コンパイラであるClangがまたひとつのマイルストーンに到達した。[cfe-dev] Clang builds a working Linux Kernel (Boots to RL5 with SMP, networking and X, self hosts)の報告によれば、LLVM Clangを使ってLinuxカーネル2.6.36/SMP版のビルドに成功したという。同カーネルを使ってXの利用とネットワークの利用も確認したと報告されている。 LLVM Clangは2010年2月にセルフホスティングに到達。OSSのC

  • 1