+ | transform (X.ANDL (dest, src)) =
+ unspill (src, spillreg1) @
+ [ X.ANDL(
+ realoper dest handle Spilled => stackoper dest,
+ realoper src handle Spilled => X.REG spillreg1)]
+ | transform (X.ORL (dest, src)) =
+ unspill (src, spillreg1) @
+ [ X.ORL(
+ realoper dest handle Spilled => stackoper dest,
+ realoper src handle Spilled => X.REG spillreg1)]
+ | transform (X.XORL (dest, src)) =
+ unspill (src, spillreg1) @
+ [ X.XORL(
+ realoper dest handle Spilled => stackoper dest,
+ realoper src handle Spilled => X.REG spillreg1)]
+ | transform (X.CMPL (op1, op2)) =
+ unspill (op2, spillreg1) @
+ [ X.CMPL(
+ realoper op1 handle Spilled => stackoper op1,
+ realoper op2 handle Spilled => X.REG spillreg1)]
+ | transform (X.TEST (op1, op2)) =
+ unspill (op2, spillreg1) @
+ [ X.TEST(
+ realoper op1 handle Spilled => stackoper op1,
+ realoper op2 handle Spilled => X.REG spillreg1)]
+ | transform (X.SETNE (src)) = [ X.SETNE(realoper src handle Spilled => stackoper src)]
+ | transform (X.SETE (src)) = [ X.SETE(realoper src handle Spilled => stackoper src)]
+ | transform (X.SETLE (src)) = [ X.SETLE(realoper src handle Spilled => stackoper src)]
+ | transform (X.SETL (src)) = [ X.SETL(realoper src handle Spilled => stackoper src)]
+ | transform (X.SETGE (src)) = [ X.SETGE(realoper src handle Spilled => stackoper src)]
+ | transform (X.SETG (src)) = [ X.SETG(realoper src handle Spilled => stackoper src)]
+ | transform (X.MOVZBL (dest, src)) =
+ [ X.MOVZBL(
+ realoper dest handle Spilled => X.REG spillreg1,
+ realoper src handle Spilled => stackoper src)]
+ @ spill (dest, spillreg1)