| !sum | |
| # Integers | |
| # ShiftAll* | |
| - go: ShiftAllLeft | |
| asm: "VPSLL[WDQ]" | |
| in: | |
| - | |
| go: $t | |
| - | |
| go: "Uint.*" | |
| treatLikeAScalarOfSize: 64 | |
| out: | |
| - | |
| - go: ShiftAllRight | |
| signed: false | |
| asm: "VPSRL[WDQ]" | |
| in: | |
| - | |
| go: $t | |
| base: uint | |
| - | |
| out: | |
| - | |
| - go: ShiftAllRight | |
| signed: true | |
| asm: "VPSRA[WDQ]" | |
| in: | |
| - | |
| go: $t | |
| base: int | |
| - | |
| out: | |
| - | |
| - go: shiftAllLeftConst | |
| asm: "VPSLL[WDQ]" | |
| in: | |
| - | |
| - | |
| class: immediate | |
| immOffset: 0 | |
| out: | |
| - | |
| - go: shiftAllRightConst | |
| asm: "VPSRL[WDQ]" | |
| in: | |
| - | |
| - | |
| out: | |
| - | |
| - go: shiftAllRightConst | |
| asm: "VPSRA[WDQ]" | |
| in: | |
| - | |
| - | |
| out: | |
| - | |
| # Shift* (variable) | |
| - go: ShiftLeft | |
| asm: "VPSLLV[WD]" | |
| in: | |
| - | |
| - | |
| out: | |
| - | |
| # XED data of VPSLLVQ marks the element bits 32 which is off to the actual semantic, we need to overwrite | |
| # it to 64. | |
| - go: ShiftLeft | |
| asm: "VPSLLVQ" | |
| in: | |
| - | |
| go: $t | |
| overwriteElementBits: 64 | |
| - | |
| out: | |
| - | |
| - go: ShiftRight | |
| signed: false | |
| asm: "VPSRLV[WD]" | |
| in: | |
| - | |
| - | |
| out: | |
| - | |
| # XED data of VPSRLVQ needs the same overwrite as VPSLLVQ. | |
| - go: ShiftRight | |
| signed: false | |
| asm: "VPSRLVQ" | |
| in: | |
| - | |
| go: $t | |
| base: uint | |
| overwriteElementBits: 64 | |
| - | |
| out: | |
| - | |
| - go: ShiftRight | |
| signed: true | |
| asm: "VPSRAV[WDQ]" | |
| in: | |
| - | |
| - | |
| out: | |
| - | |
| # Rotate | |
| - go: RotateAllLeft | |
| asm: "VPROL[DQ]" | |
| in: | |
| - | |
| - | |
| class: immediate | |
| immOffset: 0 | |
| name: shift | |
| out: | |
| - | |
| - go: RotateAllRight | |
| asm: "VPROR[DQ]" | |
| in: | |
| - | |
| - | |
| out: | |
| - | |
| - go: RotateLeft | |
| asm: "VPROLV[DQ]" | |
| in: | |
| - | |
| - | |
| out: | |
| - | |
| - go: RotateRight | |
| asm: "VPRORV[DQ]" | |
| in: | |
| - | |
| - | |
| out: | |
| - | |
| # Bizzare shifts. | |
| - go: ShiftAllLeftConcat | |
| asm: "VPSHLD[WDQ]" | |
| in: | |
| - | |
| - | |
| - | |
| out: | |
| - | |
| - go: ShiftAllRightConcat | |
| asm: "VPSHRD[WDQ]" | |
| in: | |
| - | |
| - | |
| - | |
| out: | |
| - | |
| - go: ShiftLeftConcat | |
| asm: "VPSHLDV[WDQ]" | |
| in: | |
| - | |
| - | |
| - | |
| out: | |
| - | |
| - go: ShiftRightConcat | |
| asm: "VPSHRDV[WDQ]" | |
| in: | |
| - | |
| - | |
| - | |
| out: | |
| - | |