0
A
回答
2
一種解決方案是指定LLVM,該指令不能被「降低」 ......兩件事情可能會發生:
- 編譯器可以使用的指令的另一組合執行相同的操作......事情會沒關係
- 編譯離不開它,在這種情況下,你必須修改目標產生建議解決方法(不是很容易,如果你不熟悉與LLVM)
要做到該搜索XXXISelDAGToDAG.cpp,其中XXX是你的目標機器,並指定到構造是這樣的:
setOperationAction(ISD::YYY, MVT::i8, Expand);
setOperationAction(ISD::YYY, MVT::i16, Expand);
setOperationAction(ISD::YYY, MVT::i32, Expand);
setOperationAction(ISD::YYY, MVT::i64, Expand);
凡ISD :: YYY是你不想使用的指令。 瀏覽源代碼時,這很容易找到。
大致爲:
- setOperationAction指定要更改默認操作爲給定的操作,與沿型(MVT :: ...)
- 展開的意思是「嘗試擴大到其他操作」(還有其他操作,如定製,Libcall ...)
玩弄這個,你應該能夠解決你的問題。
希望它會有所幫助。
相關問題
- 1. LLVM本機代碼生成
- 2. 使用LLVM API生成靜態代碼
- 3. 使用LLVM生成ObjC代碼
- 4. gcc/C++禁用生成vex指令
- 5. 爲'lambda','define'生成LLVM代碼
- 6. LLVM代碼生成導致seg故障?
- 7. 使用SPIM生成機器代碼
- 8. 如何讓gcc(或llvm)從OSX命令行生成ARM代碼?
- 9. 在LLVM中生成函數指針
- 10. 執行從Rust/Python源代碼生成的LLVM IR代碼
- 11. 隨機文件生成器代碼?
- 12. 禁用某些文件夾中的某些命令/程序?
- 13. LLVM IR alloca指令
- 14. LLVM指令調度
- 15. 如何爲llvm向量比較生成指令
- 16. 使用ADO.NET生成代碼後重組代碼DbContext生成器
- 17. 如何使用寧靜代碼生成器生成代碼(.ts)
- 18. 什麼是生成.tail IL指令的一些簡單的F#代碼?
- 19. PerformanceCounter.NextValue掛在某些機器
- 20. 禁用某些用戶角色的短代碼使用
- 21. 如何僅在某些時候生成編譯器警告?
- 22. 指定某些命令給用戶
- 23. LLVM IR指令和源代碼行之間的映射關係
- 24. 使用機器代碼指令是Go中的math.bits?
- 25. 我在哪裏可以找到代碼的機器指令
- 26. 生成拋出錯誤「命令... llvm-gcc-4.2失敗,退出代碼1」
- 27. LEA指令操作碼生成
- 28. 使我的密碼生成器僅允許某些符號
- 29. Java機器拒絕某些形式的循環代碼
- 30. 在運行時檢查機器指令
你不想使用的指令是什麼,爲什麼你不想使用它? – davmac
它用於某些研究目的。我想禁用bt(位測試)指令。 –
您可以從lib/target/X86/X86InstrInfo.td中刪除位測試指令並重新構建。我不確定是否有其他需要。 – davmac