mulhu

mulhu

Asembler RISC-V Referencja

lyszt.net obejmuje mulhu i inne instrukcje RISC-V w większych szczegółach.

Format kodowania

R
31–25funct7
24–20rs2
19–15rs1
14–12funct3
11–7rd
6–0opcode
I
31–20imm[11:0]
19–15rs1
14–12funct3
11–7rd
6–0opcode
S
31–25imm[11:5]
24–20rs2
19–15rs1
14–12funct3
11–7imm[4:0]
6–0opcode
B
31–25imm[12,10:5]
24–20rs2
19–15rs1
14–12funct3
11–7imm[4:1,11]
6–0opcode
U
31–12imm[31:12]
11–7rd
6–0opcode
J
31–12imm[20,10:1,11,19:12]
11–7rd
6–0opcode

Opis

MUL wykonuje mnożenie XLEN-bit×XLEN-bit rs1 przez rs2 i umieszcza dolne XLEN bitów w rejestrze docelowym. MULH, MULHU i MULHSU wykonują to samo mnożenie, ale zwracają górne XLEN bitów pełnego 2×XLEN-bitowego iloczynu, odpowiednio dla mnożenia ze znakiem×ze znakiem, bez znaku×bez znaku oraz rs1×bez znaku rs2. Jeśli wymagane są zarówno górne, jak i dolne bity tego samego iloczynu, zalecana sekwencja kodu to: MULH[[S]U] rdh, rs1, rs2; MUL rdl, rs1, rs2 (specyfikatory rejestrów źródłowych muszą być w tej samej kolejności, a rdh nie może być tym samym co rs1 lub rs2). Mikroarchitektury mogą następnie połączyć je w jedną operację mnożenia zamiast wykonywania dwóch osobnych mnożeń.

ℹ
MULHSU jest używane w wielosłownym mnożeniu ze znakiem do pomnożenia najbardziej znaczącego słowa mnożnej (które zawiera bit znaku) przez mniej znaczące słowa mnożnika (które są bez znaku).

MULW to instrukcja RV64, która mnoży dolne 32 bity rejestrów źródłowych, umieszczając rozszerzenie znaku dolnych 32 bitów wyniku w rejestrze docelowym.

ℹ
W RV64 MUL można użyć do uzyskania górnych 32 bitów 64-bitowego iloczynu, ale argumenty ze znakiem muszą być prawidłowymi 32-bitowymi wartościami ze znakiem, podczas gdy argumenty bez znaku muszą mieć wyzerowane górne 32 bity. Jeśli nie wiadomo, czy argumenty są rozszerzone znakiem lub zerami, alternatywą jest przesunięcie obu argumentów w lewo o 32 bity, a następnie użycie MULH[[S]U].