我想更深入地瞭解llvm中的指令選擇過程,並且我正在逐步調試CodeGenAndEmitDAG函數。在組合步驟之前,我已經打印了一個小功能(見下文) - 上述功能的第一步。在圖中,我看到藍線,看起來它們總是指向「ch」,我認爲這意味着「其他」機器值類型。我不明白的是藍線的含義......這種依賴性是什麼?而且,我對「ch」的含義是否正確?是「其他」嗎? 什麼機器值類型「其他」意味着在llvm SDnodes
2
A
回答
3
虛線藍色箭頭表示 指令之間的非數據流依賴關係,並在它們之間強制執行特定順序。例如, 可能訪問相同內存的存儲和加載不應重新排序, 儘管它們之間沒有數據依賴關係。在這種情況下,藍色 箭頭用於表示這種隱藏的依賴關係。這些藍色箭頭 消耗Other
類型的鏈值(ch)。
每個DAG都有一個Other
類型的特殊EntryToken
,它爲基本塊的初始鏈值提供 。
考慮下面的例子。注意加載和存儲之間的控件依賴關係(藍色箭頭),因爲它們被允許指向相同的內存。還要注意將兩條指令粘合在一起的紅色箭頭(膠水)。
int foo(int *a, int *b) {
a[0] = 42;
return b[0];
}
+0
有意義,但是關於copyToReg(0x2efac80 - 加載指令之後)到存儲指令之間的藍線?加載指令確實取決於商店,但加載後的指令需要依賴於加載而不是商店... – yehudahs 2014-11-01 09:55:36
相關問題
- 1. Haskell:Typeclass意味着其他類型類型
- 2. 什麼類型在Haskell意味着
- 3. 什麼呢##意味着在$ {}
- 4. 什麼===在PHP意味着
- 5. 什麼。意味着在PHP?
- 6. 什麼?意味着在註冊表值?
- 7. 在llvm中「實現」意味着什麼GlobalValue.h
- 8. - >函數原型意味着什麼?
- 9. 這個java泛型意味着什麼?
- 10. 在AngularJS中結尾意味着什麼double意味着
- 11. 〜=是什麼。在Stata意味着什麼?
- 12. 什麼是 '自我.__類__.__ missing__' 意味着
- 13. 數值對於weka意味着什麼
- 14. 什麼是「U」意味着「性別」值?
- 15. 這是什麼RGB值意味着
- 16. void **意味着什麼
- 17. PREEMPTIVE_XE_DISPATCHER這意味着什麼?
- 18. Field.Index.NOT_ANALYZED_NO_NORMS意味着什麼
- 19. HttpServletResponse.SC_BAD_REQUEST意味着什麼?
- 20. Solr意味着什麼?
- 21. 溢出意味着什麼?
- 22. * | *這意味着什麼CSS?
- 23. 什麼<?意味着
- 24. %是什麼〜DP0意味着
- 25. 什麼-Dauto意味着
- 26. 什麼%*%意味着R中
- 27. AccountExpirationDate意味着什麼?
- 28. 這是&意味着什麼?
- 29. 什麼?意味着iOS的
- 30. $這意味着什麼PHP?
我試圖理解這個節點,線和類型也一樣,你可以請提供任何有用的鏈接或關鍵字。提前致謝。 – 2016-01-04 08:41:07
你可以在llvm代碼中檢查下一個文件:include/llvm/CodeGen/ISDOpcodes.h - 這裏有一些解釋。 – yehudahs 2016-01-04 16:01:18