2011-12-29 45 views
3

有一個比較:浮點狀態轉移

if(val0 > val1) 

其中val0和VAL1是雙變量。

由蘋果LLVM編譯器生成的代碼是

+0x184 vcmpe.f64      d17, d16 
+0x188 vmrs       APSR_nzcv, fpscr <-- FP status transfer (30 cycles stall of ALU) 
+0x18c ble.w       ..... 

有沒有辦法避免這種轉移?

[更新]代碼在Cortex-A8處理器上運行。

+2

比較他們作爲*符號和大小*整數如何?它[有可能符合IEEE-754](http://en.wikipedia.org/wiki/IEEE_754-1985#Comparing_floating-point_numbers)。 – 2011-12-29 09:17:04

+0

@Alex,或許你先解釋一下爲什麼你需要這個?通過部分進行比較肯定是越來越慢。 – 2011-12-29 12:52:42

+1

你從哪裏找到30個週期的數字? – 2011-12-29 13:37:22

回答

0

由於看起來不可能避免標誌轉換,因爲代碼流管理處理處理器的ARM部分,而不是Neon協處理器。 問題已關閉。