};
def macroop BT_M_I {
- limm t1, imm
+ limm t1, imm, dataSize=asz
# This fudges just a tiny bit, but it's reasonable to expect the
# microcode generation logic to have the log of the various sizes
# floating around as well.
- srai t2, t1, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)"
- add t2, t2, base
+ srai t2, t1, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)", \
+ dataSize=asz
+ add t2, t2, base, dataSize=asz
ld t1, seg, [scale, index, t2], disp
sexti t0, t1, imm, flags=(CF,)
};
def macroop BT_P_I {
rdip t7
- limm t1, imm
- srai t2, t1, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)"
+ limm t1, imm, dataSize=asz
+ srai t2, t1, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)", \
+ dataSize=asz
ld t1, seg, [1, t2, t7]
sexti t0, t1, imm, flags=(CF,)
};
};
def macroop BT_M_R {
- srai t2, reg, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)"
- add t2, t2, base
+ srai t2, reg, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)", \
+ dataSize=asz
+ add t2, t2, base, dataSize=asz
ld t1, seg, [scale, index, t2], disp
sext t0, t1, reg, flags=(CF,)
};
def macroop BT_P_R {
rdip t7
- srai t2, reg, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)"
+ srai t2, reg, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)", \
+ dataSize=asz
ld t1, seg, [1, t2, t7]
sext t0, t1, reg, flags=(CF,)
};
};
def macroop BTC_M_I {
- limm t1, imm
+ limm t1, imm, dataSize=asz
# This fudges just a tiny bit, but it's reasonable to expect the
# microcode generation logic to have the log of the various sizes
# floating around as well.
- srai t2, t1, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)"
- add t2, t2, base
+ srai t2, t1, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)", \
+ dataSize=asz
+ add t2, t2, base, dataSize=asz
limm t3, 1
roli t3, t3, imm
ldst t1, seg, [scale, index, t2], disp
};
def macroop BTC_P_I {
- rdip t7
- limm t1, imm
- srai t2, t1, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)"
+ rdip t7, dataSize=asz
+ limm t1, imm, dataSize=asz
+ srai t2, t1, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)", \
+ dataSize=asz
limm t3, 1
roli t3, t3, imm
ldst t1, seg, [1, t2, t7]
};
def macroop BTC_M_R {
- srai t2, reg, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)"
- add t2, t2, base
+ srai t2, reg, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)", \
+ dataSize=asz
+ add t2, t2, base, dataSize=asz
limm t3, 1
rol t3, t3, reg
ldst t1, seg, [scale, index, t2], disp
};
def macroop BTC_P_R {
- rdip t7
- srai t2, reg, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)"
+ rdip t7, dataSize=asz
+ srai t2, reg, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)", \
+ dataSize=asz
limm t3, 1
rol t3, t3, reg
ldst t1, seg, [1, t2, t7]
};
def macroop BTR_M_I {
- limm t1, imm
+ limm t1, imm, dataSize=asz
# This fudges just a tiny bit, but it's reasonable to expect the
# microcode generation logic to have the log of the various sizes
# floating around as well.
- srai t2, t1, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)"
- add t2, t2, base
+ srai t2, t1, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)", \
+ dataSize=asz
+ add t2, t2, base, dataSize=asz
limm t3, "(uint64_t(-(2ULL)))"
roli t3, t3, imm
ldst t1, seg, [scale, index, t2], disp
};
def macroop BTR_P_I {
- rdip t7
- limm t1, imm
- srai t2, t1, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)"
+ rdip t7, dataSize=asz
+ limm t1, imm, dataSize=asz
+ srai t2, t1, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)", \
+ dataSize=asz
limm t3, "(uint64_t(-(2ULL)))"
roli t3, t3, imm
ldst t1, seg, [1, t2, t7]
};
def macroop BTR_M_R {
- srai t2, reg, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)"
- add t2, t2, base
+ srai t2, reg, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)", \
+ dataSize=asz
+ add t2, t2, base, dataSize=asz
limm t3, "(uint64_t(-(2ULL)))"
rol t3, t3, reg
ldst t1, seg, [scale, index, t2], disp
};
def macroop BTR_P_R {
- rdip t7
- srai t2, reg, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)"
+ rdip t7, dataSize=asz
+ srai t2, reg, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)", \
+ dataSize=asz
limm t3, "(uint64_t(-(2ULL)))"
rol t3, t3, reg
ldst t1, seg, [1, t2, t7]
};
def macroop BTS_M_I {
- limm t1, imm
+ limm t1, imm, dataSize=asz
# This fudges just a tiny bit, but it's reasonable to expect the
# microcode generation logic to have the log of the various sizes
# floating around as well.
- srai t2, t1, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)"
- add t2, t2, base
+ srai t2, t1, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)", \
+ dataSize=asz
+ add t2, t2, base, dataSize=asz
limm t3, 1
roli t3, t3, imm
ldst t1, seg, [scale, index, t2], disp
};
def macroop BTS_P_I {
- rdip t7
- limm t1, imm
- srai t2, t1, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)"
+ rdip t7, dataSize=asz
+ limm t1, imm, dataSize=asz
+ srai t2, t1, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)", \
+ dataSize=asz
limm t3, 1
roli t3, t3, imm
ldst t1, seg, [1, t2, t7]
};
def macroop BTS_M_R {
- srai t2, reg, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)"
- add t2, t2, base
+ srai t2, reg, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)", \
+ dataSize=asz
+ add t2, t2, base, dataSize=asz
limm t3, 1
rol t3, t3, reg
ldst t1, seg, [scale, index, t2], disp
};
def macroop BTS_P_R {
- rdip t7
- srai t2, reg, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)"
+ rdip t7, dataSize=asz
+ srai t2, reg, "(env.dataSize == 8) ? 3 : ((env.dataSize == 4) ? 2 : 1)", \
+ dataSize=asz
limm t3, 1
rol t3, t3, reg
ldst t1, seg, [1, t2, t7]