!sum
# Add
- go: Add
  asm: "VPADD[BWDQ]|VADDP[SD]"
  in:
  - &any
    go: $t
  - *any
  out:
  - *any
# Add Saturated
- go: AddSaturated
  asm: "VPADDS[BWDQ]"
  in:
  - &int
    go: $t
    base: int
  - *int
  out:
  - *int
- go: AddSaturated
  asm: "VPADDUS[BWDQ]"
  in:
  - &uint
    go: $t
    base: uint
  - *uint
  out:
  - *uint

# Sub
- go: Sub
  asm: "VPSUB[BWDQ]|VSUBP[SD]"
  in: &2any
  - *any
  - *any
  out: &1any
  - *any
# Sub Saturated
- go: SubSaturated
  asm: "VPSUBS[BWDQ]"
  in: &2int
  - *int
  - *int
  out: &1int
  - *int
- go: SubSaturated
  asm: "VPSUBUS[BWDQ]"
  in:
  - *uint
  - *uint
  out:
  - *uint
- go: AddPairs
  asm: "VPHADD[DW]"
  in: &2any128
  - &any128
    go: $t
    bits: 128
  - *any128
  out: &1any128
  - *any128
- go: SubPairs
  asm: "VPHSUB[DW]"
  in: *2any128
  out: *1any128
- go: AddPairs
  asm: "VHADDP[SD]" # floats
  in: *2any128
  out: *1any128
- go: SubPairs
  asm: "VHSUBP[SD]"  # floats
  in: *2any128
  out: *1any128
- go: AddPairsSaturated
  asm: "VPHADDS[DW]"
  in: &2int128
  - &int128
    go: $t
    base: int
    bits: 128
  - *int128
  out: &1int128
  - *int128
- go: SubPairsSaturated
  asm: "VPHSUBS[DW]"
  in: *2int128
  out: *1int128
- go: AddPairsGrouped
  asm: "VPHADD[DW]"
  in: &2any256
  - &any256
    go: $t
    bits: 256
  - *any256
  out: &1any256
  - *any256
- go: SubPairsGrouped
  asm: "VPHSUB[DW]"
  in: *2any256
  out: *1any256
- go: AddPairsGrouped
  asm: "VHADDP[SD]" # floats
  in: *2any256
  out: *1any256
- go: SubPairsGrouped
  asm: "VHSUBP[SD]"  # floats
  in: *2any256
  out: *1any256
- go: AddPairsSaturatedGrouped
  asm: "VPHADDS[DW]"
  in: &2int256
  - &int256
    go: $t
    base: int
    bits: 256
  - *int256
  out: &1int256
  - *int256
- go: SubPairsSaturatedGrouped
  asm: "VPHSUBS[DW]"
  in: *2int256
  out: *1int256
