forked from pulp-platform/riscv-opcodes
-
Notifications
You must be signed in to change notification settings - Fork 0
/
opcodes-xpulpminmax_CUSTOM
25 lines (21 loc) · 1.09 KB
/
opcodes-xpulpminmax_CUSTOM
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Xpulp extension subset: general ALU operations: min, max, avg
# format of a line in this file:
# <instruction name> <args> <opcode>
#
# <opcode> is given by specifying one or more range/value pairs:
# hi..lo=value or bit=value or arg=value (e.g. 6..2=0x45 10=1 rd=0)
#
# <args> is one of rd, rs1, rs2, rs3, aqrl, fm, pred, succ, rm,
# funct3, imm20, jimm20, imm12, imm12hi, bimm12hi, imm12lo,
# bimm12lo, zimm, shamt, shamtw, imm5, imm6, vd, vs3, vs1, vs2,
# vm, wd, amoop, nf, simm5, zimm11, prs3, L, uimms, Luimm5,
# vseglen, stagger_max, stagger_mask
# INFO: overlaps with opcodes-rv32b_CUSTOM, opcodes-ipu_CUSTOM
p.min rd rs1 rs2 31..25=2 14..12=4 6..2=0x0C 1..0=3
p.minu rd rs1 rs2 31..25=2 14..12=5 6..2=0x0C 1..0=3
p.max rd rs1 rs2 31..25=2 14..12=6 6..2=0x0C 1..0=3
p.maxu rd rs1 rs2 31..25=2 14..12=7 6..2=0x0C 1..0=3
# pulp >= v2: p.addN, p.adduN in addsubrn replaces p.avg, p.avgu
# -> pseudo op for compatibility
@p.avg rd rs1 rs2 31..30=0 Luimm5 14..12=2 6..2=0x16 1..0=3
@p.avgu rd rs1 rs2 31..30=2 Luimm5 14..12=2 6..2=0x16 1..0=3