英特爾 XScale(R) 技術主題MIAPH - 乘法與內部累加

語法

MIAPH [ condition ] acc0, op1 , op2

其中:

 condition

16 個條件之一。請參閱條件程式碼狀態

 acc0

內部 40 位累加器

 op1

包含被乘數的暫存器

 op2

包含乘數的暫存器

說明

MIAPH 指令執行以下操作:

if ConditionPassed (condition ) then
acc0 = sign_extend ( (op1[31:16] * op2[31:16]) +(op1[15:0] * op2[15:0]) ) + acc0[39:0]

 

使用 MIAPH 指令在壓縮半字數據上執行兩個 16 位有符號乘法。結果加到一個 40 位累加器。
首先將暫存器 op1 中的值的低 16 位與暫存器 op2 中的值的低 16 位相乘。然後將暫存器 op1 中的值的高 16 位與暫存器 op2 中的值的高 16 位相乘。兩種情況下的結果都是有符號 32 位乘積。這些乘積加到 40 位累加器中的值上。

備註

指令中指定的條件必須與條件程式碼狀態匹配,否則將指令當作 NO 操作。

影響的標誌

編碼

31

 

28

27

26

25

24

23

22

21

20

19

18

17

16

15

 

12

11

10

9

8

7

6

5

4

3

 

0

condition

1

1

1

0

0

0

1

0

1

0

0

0

op2

0

0

0

0

0

0

0

1

op1

示例

1                          @.text
2                          @.globl funcmiaph
3                          @.align 0
4
5                          @ * * * MIAPH * * *
6
7                    AREA example, CODE, READONLY
8
9    00000000   E3A00000   MOV     R0, #2147483647
10   00000004   E3A01001   MOV     R1, #1
11   00000008   E5801000   STR     R1, [R0]
12   00000012   E1D020F0   LDRSH   R2, [R0]
13
14   00000016   E3A0100A   MOV     R1, #10
15   00000020   E3A02002   MOV     R2, #2
16   00000024   E5812000   STR     R2, [R1]
17   00000028   E15138FC   LDRSH   R3, [R1, #0x8c]
18
19   00000032   EE283012   MIAPH   acc0, R2, R3
20                         END

更多資訊

請參閱 MIA 指令
請參閱 MIAxy 指令