genericWordSubCOp :: GenericOp
genericWordSubCOp [res_r, res_c] [aa, bb] = do
  dflags <- getDynFlags
  emit $ catAGraphs
    [ -- Put the result into 'res_r'.
      mkAssign (CmmLocal res_r) $
        CmmMachOp (mo_wordSub dflags) [aa, bb]
      -- Set 'res_c' to 1 if 'bb > aa' and to 0 otherwise.
    , mkAssign (CmmLocal res_c) $
        CmmMachOp (mo_wordUGt dflags) [bb, aa]
    ]
genericWordSubCOp :: GenericOp
genericWordSubCOp [res_r, res_c] [aa, bb] = do
  dflags <- getDynFlags
  emit $ catAGraphs
    [ -- Put the result into 'res_r'.
      mkAssign (CmmLocal res_r) $
        CmmMachOp (mo_wordSub dflags) [aa, bb]
      -- Set 'res_c' to 1 if 'bb > aa' and to 0 otherwise.
    , mkAssign (CmmLocal res_c) $
        CmmMachOp (mo_wordUGt dflags) [bb, aa]
    ]
genericWordSubCOp [res_r, res_c] [aa, bb] = do
  dflags <- getDynFlags
  emit $ catAGraphs
    [ -- Put the result into 'res_r'.
      mkAssign (CmmLocal res_r) $
        CmmMachOp (mo_wordSub dflags) [aa, bb]
      -- Set 'res_c' to 1 if 'bb > aa' and to 0 otherwise.
    , mkAssign (CmmLocal res_c) $
        CmmMachOp (mo_wordUGt dflags) [bb, aa]
    ]