Add legalization for imul_imm.

This is handled just like iadd_imm.
This commit is contained in:
Jakob Stoklund Olesen
2017-09-14 16:05:42 -07:00
parent bbe056bf9d
commit 0737aa48f2

View File

@@ -11,6 +11,7 @@ from .immediates import intcc
from . import instructions as insts from . import instructions as insts
from .instructions import iadd, iadd_cout, iadd_cin, iadd_carry, iadd_imm from .instructions import iadd, iadd_cout, iadd_cin, iadd_carry, iadd_imm
from .instructions import isub, isub_bin, isub_bout, isub_borrow from .instructions import isub, isub_bin, isub_bout, isub_borrow
from .instructions import imul, imul_imm
from .instructions import band, bor, bxor, isplit, iconcat from .instructions import band, bor, bxor, isplit, iconcat
from .instructions import bnot, band_not, bor_not, bxor_not from .instructions import bnot, band_not, bor_not, bxor_not
from .instructions import icmp, icmp_imm from .instructions import icmp, icmp_imm
@@ -158,12 +159,15 @@ expand.legalize(
)) ))
# Expansions for immediate operands that are out of range. # Expansions for immediate operands that are out of range.
expand.legalize( for inst_imm, inst in [
a << iadd_imm(x, y), (iadd_imm, iadd),
Rtl( (imul_imm, imul)]:
a1 << iconst(y), expand.legalize(
a << iadd(x, a1) a << inst_imm(x, y),
)) Rtl(
a1 << iconst(y),
a << inst(x, a1)
))
# Rotates and shifts. # Rotates and shifts.
for inst_imm, inst in [ for inst_imm, inst in [